İntegraler · Intermediate

Bir indirmeci ortaware ile hapsedilmiş ve yapışkanlar

Yararlı HtttpProxyMiddleware, talep yoluyla gerçekleştirilmiş HTTP Proxy'leri destekliyor.meta["proxy"]. Gerçek teslim ağ geçidini yapılandırın, belirlenen talepleri takip etme ve belirlenen seans modunu doğrulamayı sağlayın.

2 min read 4 bölüm İncelendi Editör ekibi Proxy Cyber

En basit versiyon#

Yeniden denemeden önce cevabı sınıflandırmak. 403, başka bir IP'nin çözmeyeceğine dair bir erişim kuralı gösterebilir. 429 için, Retry- After ve istek oranını azaltır; geçici bağlantı veya sunucu başarısızlıkları için sınırlanan geri yükleme kullanın. Retry state-change operations only when you can prevent another actions.

örümcek.py
import scrapy

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

class PricesSpider(scrapy.Spider):
    name = "prices"
    start_urls = ["https://example.com/catalog"]

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, meta={"proxy": PROXY})

    def parse(self, response):
        for href in response.css("a.product::attr(href)").getall():
            yield response.follow(href, callback=self.parse_product, meta={"proxy": PROXY})

    def parse_product(self, response):
        yield {"url": response.url, "price": response.css(".price::text").get()}

Bir orta dikkat, eşya başına oturumlar için#

Ortamlar.py
import hashlib

class Proxy CyberMiddleware:
    GATEWAY = "res.proxy-cyber.com:9000"

    def __init__(self, user, password, country):
        self.user, self.password, self.country = user, password, country

    @classmethod
    def from_crawler(cls, crawler):
        s = crawler.settings
        return cls(s.get("KEY_PROXY_USER"), s.get("KEY_PROXY_PASS"), s.get("KEY_PROXY_COUNTRY", "us"))

    def process_request(self, request, spider):
        # Sticky when the request carries a session key (e.g. one per product flow), rotating otherwise
        key = request.meta.get("session_key")
        user = f"{self.user}-cc-{self.country}"
        if key:
            sid = hashlib.sha1(key.encode()).hexdigest()[:12]
            user += f"-sid-{sid}-ttl-10m"
        request.meta["proxy"] = f"http://{user}:{self.password}@{self.GATEWAY}"
ayarlar.pypy
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.Proxy CyberMiddleware": 350,   # before HttpProxyMiddleware (750)
}
KEY_PROXY_USER = "USER"
KEY_PROXY_PASS = "PASS"
KEY_PROXY_COUNTRY = "de"

CONCURRENT_REQUESTS = 32
CONCURRENT_REQUESTS_PER_DOMAIN = 8
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_TARGET_CONCURRENCY = 4.0
DOWNLOAD_TIMEOUT = 45
RETRY_ENABLED = True
RETRY_TIMES = 2
RETRY_HTTP_CODES = [408, 429, 500, 502, 503, 504, 522, 524]
COMPRESSION_ENABLED = True

Bağlantı yeniden ve IP ataması farklı kontrollerdir. Bir müşteri oturumu tekrarlar soketler; sadece atanan ağ geçidi rotasyonu ve yapışkan-session davranışını belirler. Hizmetinizle sağlanan oturum parametreleri kullanın ve birkaç isteğin üzerinden çıkışı doğrulayın: Bir soketi kapat veya bağlantı gönder: yakın farklı bir IP garanti etmez.

Faturayı aşağı tutun#

  • Yararlı görüntüler veya senaryoları yükleyemez; HTML ve JSON sadece, bu yüzden bir sayfa HTML boyutunu gider.
  • Enable sıkıştırma (default) ve kaçınılabilir Splash veya tarayıcı oluşturma, verinin ihtiyacı olmadıkça.
  • Önbellekle HTTPCACHE_ENABLED = True Geliştirme sırasında, aynı sayfaları debugging seçiciler sırasında yeniden finanse etmek için ödeme yapmazsınız.

Per-domain kibarlık#

Bir havuz birçok kibar ziyaretçi olmak için bir yoldur, tek bir düşman değil. CONCURRENT_REQUESTS_PER_DOMAIN Ve AutoThrottle her hedefi bir insan-plausible hızında tutar; çıkış başına; Kabul edilebilir kullanım politikası Saldırı gibi görünen her şeyi yasaklar.

Soru: İnsanlar soruyor#

Yıkıcı-proksies'e ihtiyacım var mı?

Bir ağ geçidi ile değil: rotasyon her yeni bağlantı için Anahtar Proxy tarafında olur.Bu paket statik proxy listelerini yönetir; res.proxy-cyber.com yapılandırmak için bir proxy vardır.

İstek başına farklı bir ülke nasıl kullanırım?

Set isteği.meta[" ülke"] örümcekte ve onu orta ortamlarda -cc- parametre inşa etmek için okuyun; örnek, brevity için tek bir ayar kullanır.

Hesabınız

Bir hesaptaki referanslarınızı yönetin

Ağlarla kıyasla, yer siparişleri ve bakiyenizi takip edin ve bir panodan gelen talepleri takip edin. Ekibimiz ödemeleri ve teslimattan sonra bağlantı ayrıntıları sağlar.

Create account