proxys.store

Proxys in Scrapy

HttpProxyMiddleware ist standardmäßig aktiv — es genügt, die Verbindungszeile in das meta der Anfrage zu legen.

Ein minimaler Spider

Es muss nichts eingeschaltet werden: HttpProxyMiddleware steckt in der Standard-Pipeline und liest den Schlüssel proxy aus meta. Die Zugangsdaten stehen in der Adresse, genau wie in einer gewöhnlichen Verbindungszeile.

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)

Was beim Scrapen zu bedenken ist

Ein Wiederholungsversuch auf Port 823 kommt von einer anderen Adresse — das ist die Rotation, kein Fehler. Scrapys Wiederholungen verhalten sich hier korrekt, aber nichts darf davon abhängen, dass die Adresse zwischen Anfragen stehen bleibt; dafür gibt es die festen Ports 10000–20000.

Setz DOWNLOAD_TIMEOUT großzügig: Ein Residential-Ausgang antwortet langsamer als ein Rechenzentrum, und eine Anfrage ohne Timeout kann minutenlang hängen. Der Tarif erlaubt bis zu zweitausend gleichzeitige Verbindungen — an die kommt gewöhnliches Scrapen nicht heran.

Weiterlesen