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@HOST: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)HOST ist die Gateway-Adresse aus deinem Zugang, LOGIN und PASSWORD sind Benutzername und Passwort. Alle drei stehen auf der Bestellseite und unter „Mein Zugang“.
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.