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.