proxys.store

Scrapy'de proxy

HttpProxyMiddleware varsayılan olarak açıktır — bağlantı dizesini isteğin meta'sına koymak yeterlidir.

En sade örümcek

Ayrıca açılacak bir ayar yok: HttpProxyMiddleware varsayılan zincirde durur ve meta içindeki proxy anahtarını okur. Kimlik bilgileri, sıradan bir bağlantı dizesindeki gibi adresin içinde gider.

import scrapy


class IpSpider(scrapy.Spider):
    name = "ip"
    proxy = "http://LOGIN__cr.de:PASSWORD@gw.dataimpulse.com:823"

    def start_requests(self):
        yield scrapy.Request(
            "https://ipinfo.io/json",
            meta={"proxy": self.proxy},
        )

    def parse(self, response):
        self.logger.info(response.text)

Toplarken dikkat edilecekler

823 portunda yeniden deneme başka bir adresten gelir — bu arıza değil, rotasyonun çalışmasıdır. Scrapy'nin yeniden denemeleri burada doğru davranır; ancak hiçbir mantık adresin istekler arasında sabit kalmasına dayanmamalıdır, bunun için 10000–20000 sabit portları vardır.

DOWNLOAD_TIMEOUT'u bol tutun: konut çıkışı veri merkezinden yavaş yanıt verir ve zaman aşımı olmayan bir istek dakikalarca asılı kalabilir. Paket aynı anda iki bin bağlantıya izin verir; sıradan toplama bu sınıra yaklaşmaz.

Devamını oku