KYC olmadan — kimlik, selfie veya belge istemez. Kripto ile ödeyin: BTC, USDT, USDC, ETH, SOL, LTC
Dil: Türkçe
Başlayın

Belgeler · eşzamanlılık · verim · saygı

Konut proxy'ler ile eşzamanlılık ve verim

Geçiş kapısı GB başına ücretlendirir, iş parçacığı başına değil, bu yüzden gerçek sınırınız her hedef sitedir. İhtiyacınız olan verimden eşzamanlılığı belirleyin, ana makine başına sınır koyun ve yanıtlar yavaşlamanız gerektiğini söyleyene kadar devam edin.

Son güncelleme: · 5 dk okuma

Hızlı cevap

Konut proxy'ler üzerinden kaç eşzamanlı istek gönderilebilir?

Her hedefin toleransi kadar çok: CrawlRelay konut trafiğini GB başına ücretlendirir (50 GB'den itibaren $0,50/GB), iş parçacığı veya bağlantı başına değil. Eşzamanlılığı Little kanunu ile büyüklüğe göre ayarlayın: uçuşta olan istekler = saniyedeki sayfa × sayfa başına saniye, sonra ana makine başına sınır koyun, 2 ila 4 ile başlayın. 429 veya 503 yanıtları görünce azaltın. Kripto ile ödenir, KYC olmadan.

Eşzamanlılığa hızlı bakış

ÜcretlendirmeTrafik başına GB; iş parçacıkları ve bağlantılar ücretlendirilmez
Boyutlandırma kuralıUçuşta olan = verim × gecikme (Little kanunu)
Ana makine başına başlangıç noktası2–4 paralel istek; küçük siteler için gecikmeli 1 istek
Yavaşlamak için işaretler429, 503, artan yanıt süreleri, doğrulama sayfaları
Bant genişliği hesabıSaniyedeki sayfa sayısı × sayfa başına bayt × 3.600 = saatte bayt
Konut ortalama yanıt süresiProxy ağı üzerinde 0,93 sn, gerçek hedeflerde 3,21 sn (Proxyway 2026)

İhtiyacım olan verimden eşzamanlılığı nasıl hesaplarım?

Little kanununu kullanın: uçuşta olan istek sayısı, istediğiniz oran ile her isteğin süresinin çarpımıdır. Proxyway'in Proxy Market Research 2026'sı, konut proxy'ler üzerinden gerçek hedeflerde istek başı ortalama 3,21 saniye ölçtü, bu yüzden gerçek siteler için 2 ila 4 saniye planlayın; sadece ağın alt-saniye süresiyle değil.

Hedefİstek başına zamanUçuşta olan istekler
Saniyede 5 sayfa2 sn10
Saniyede 20 sayfa2 sn40
Saniyede 20 sayfa4 sn80
Saniyede 100 sayfa3 sn300

Sonra bu istekleri ana makineler arasında dağıtın. 200 site arasında uçuşta 40 istek hafif olur; aynı 40 istek tek bir küçük siteye yük testi olup, site tarafından kabul edilmemiştir.

Bu verim ne kadar bant genişliği kullanır?

Saniyedeki sayfa sayısını sayfa başına bayt ile çarpın. Saniyede 20 HTML sayfası ve sayfa başı 50 KB ile, tarama saniyede 1 MB taşır, bu saatte 3,6 GB ve günde yaklaşık 86 GB yapar. Render edilmiş sayfa başına 2 MB olursa, aynı oran saniyede 40 MB taşır.

Sonucu planınızın GB başı fiyatı ile çarpın, 50 GB'den itibaren $0,50/GB ve CrawlRelay fiyatıyla saatlik maliyeti bulun. Bant genişliği hesaplayıcı kılavuzu sayfa türüne göre tipik sayfa ağırlıklarını verir.

Ana makine başına hangi sınırlarla başlamalıyım?

HedefAna makine başına paralel isteklerİstekler arası gecikmeNotlar
Küçük site (blog, yerel dükkan)12–5 snVarsa robots.txt içindeki Crawl-delay kuralına uyun
Orta ölçekli site2–40,5–2 sYanıt sürelerini izleyin; iki katına çıktığında yavaşlayın
CDN içeren büyük platform4–16AutoThrottle veya uyarlanabilir429 ve 5xx oranları sabit kaldığı sürece sadece artırın
Genel APIBelirtilen limitBelirtildiği gibiSağlayıcının verdiği API anahtarı ve limitleri kullanın

Eşzamanlılığı otomatik olarak nasıl ayarlarım?

Katkısal artış ve çarpımsal azalma kullanın, TCP'nin tıkanıklık için kullandığı kural: temiz yanıt serisinden sonra bir slot ekleyin, 429 veya 503 durumunda limiti yarıya indirin. Aşağıdaki sınırlayıcı her ana bilgisayar için bir limit tutar, her isteği Retry-After gecikme için duraklatır, bir kez yeniden dener ve belirlediğiniz tavanı aşmaz. Ağ hataları değer olarak geri döner, bu yüzden bir zaman aşımı topluluğu durdurmaz.

Python asyncio: httpx ile uyarlanabilir limit
import asyncio
import random
from urllib.parse import urlsplit

import httpx

PROXY = "http://USERNAME-country-us:[email protected]:7777"


class AdaptiveLimit:
    """One per host: +1 slot after 20 clean responses, halve on 429/503, pause for Retry-After."""

    def __init__(self, start=2, low=1, high=16):
        self.limit, self.low, self.high = start, low, high
        self.in_flight, self.clean = 0, 0
        self.pause_until = 0.0
        self.cond = asyncio.Condition()

    async def __aenter__(self):
        loop = asyncio.get_running_loop()
        while True:
            async with self.cond:
                await self.cond.wait_for(lambda: self.in_flight < self.limit)
                delay = self.pause_until - loop.time()
                if delay <= 0:
                    self.in_flight += 1
                    return self
            await asyncio.sleep(delay)  # the host asked for a pause: wait outside the lock

    async def __aexit__(self, *exc):
        async with self.cond:
            self.in_flight -= 1
            self.cond.notify_all()

    def record(self, status, retry_after=None):
        if status in (429, 503):
            self.limit, self.clean = max(self.low, self.limit // 2), 0
            wait = int(retry_after) if retry_after and retry_after.isdigit() else 5 + random.random()
            now = asyncio.get_running_loop().time()
            self.pause_until = max(self.pause_until, now + wait)
        elif status < 400:
            self.clean += 1
            if self.clean >= 20 and self.limit < self.high:
                self.limit, self.clean = self.limit + 1, 0


gates = {}


def gate_for(url):
    host = urlsplit(url).hostname
    if host not in gates:
        gates[host] = AdaptiveLimit()
    return gates[host]


async def fetch(client, url, attempts=2):
    gate = gate_for(url)
    status = None
    for _ in range(attempts):
        try:
            async with gate:
                r = await client.get(url)
        except httpx.HTTPError as exc:
            return "error: %s" % type(exc).__name__
        status = r.status_code
        gate.record(status, r.headers.get("Retry-After"))
        if status not in (429, 503):
            break  # the retry, if any, waits for the host's pause in __aenter__
    return status


async def main(urls):
    timeout = httpx.Timeout(30.0, connect=10.0)
    async with httpx.AsyncClient(proxy=PROXY, timeout=timeout) as client:
        print(await asyncio.gather(*(fetch(client, u) for u in urls)))
    print({host: gate.limit for host, gate in gates.items()})


asyncio.run(main(["https://example.com/"] * 10))

Hedef dışında hangi faktörler proxy ile yapılan taramayı yavaşlatır?

  • TLS el sıkışmaları. Her istek için yeni bir bağlantı kurulması, yani her defasında yeni bir IP gerekmesi, siteyle her seferinde bir el sıkışma ekler. IP çeşitliliğinin önemli olmadığı tek bir sitedeki sayfalar için keep-alive ile kalıcı oturum kullanın.
  • Yavaş çıkışlar. Konut proxy ve mobil 4G proxy gerçek ev ve hücresel bağlantılardır. Beklemek yerine zaman aşımı kullanın ve yeni bağlantıda yeniden deneyin.
  • Dar hedefleme. Küçük bir şehir veya tek bir ASN, ülkeye göre daha az çıkışa sahiptir. Sadece veri değişen yerleri hedefleyin.
  • Render alma. Başsız tarayıcı, HTTP istemcisine kıyasla sayfa başına çok daha fazla CPU, bellek ve trafik kullanır. Sadece JavaScript gerektiren sayfaları render edin.
  • DNS. socks5h:// veya HTTP portu ile, DNS çıkış noktasında çözülür; hedef ana bilgisayarlar için yerel bir çözücü önbelleğine gerek yoktur.

Eşzamanlılık soruları

CrawlRelay iş parçacığı mı yoksa bağlantı sayısını mı sınırlar?

Planlar, iş parçacığı, bağlantı veya istek başına değil, GB trafik başına ücretlendirilir ve yayımlanan planlarda iş parçacığı sınırı yoktur. Pratik sınırlar her hedefin toleransı ve kendi makinenizdir. Çok büyük bir tarama yapacaksanız, hedeflemeniz için kapsama alanını kontrol edebilmemiz adına önce [email protected] ile yazışın.

Tarama hızı iş parçacığı artırınca neden yavaşladı?

Genellikle hedef sizi kısıtlamaya başladığı içindir: yanıt süreleri artar, 429 veya 503 yanıtları belirir, yeniden denemeler ek yük oluşturur. Diğer yaygın neden, özellikle başsız tarayıcılar ile kendi makinenizin CPU ya da soketlerinin tükenmesidir. İş parçacığı eklemeden önce ana bilgisayar başına gecikme ve hata oranlarını ölçün.

Her istek için bir bağlantı kurmak keep-alive’dan daha mı yavaş?

Evet, her istek için bir TCP ve TLS el sıkışması gerekir, genellikle konut proxy çıkışında birkaç yüz milisaniye sürer. Bu, her istek için yeni IP kullanmanın bedelidir. IP’nin önemi olmayan bir sitenin çok sayıda sayfası için ise keep-alive ile kalıcı oturum daha hızlıdır ve daha az trafik kullanır.

Eşzamanlı tarayıcıda robots.txt crawl-delay nasıl dikkate alınır?

Robots.txt dosyasını her ana bilgisayar için bir kez çözümleyin, RFC 9309 önerdiği şekilde 24 saate kadar önbelleğe alın ve Crawl-delay değerini isteklere aralarında en az bir eşzamanlılıkla per-host minimum boşluk olarak çevirin. Python'un urllib.robotparser bunu crawl_delay() üzerinden erişilebilir hale getirir.

GB başına fiyatlandırmaya göre ölçeklendirin

$0,50/GB, 50 GB’den 1 TB’ye, süresi dolmayan trafik.

$0,50/GB · KYC olmadan

Başlayın