Einstellung der Scrapy-Proxy-Middleware, die bei jeder Anforderung gedreht wird

8

Diese Frage kommt notwendigerweise in zwei Formen, weil ich den besseren Weg zu einer Lösung nicht kenne.

Eine Seite, die ich crawle, bringt mich oft zu einer umgeleiteten "User Blocked" Seite, aber die Häufigkeit (nach Anfragen / Zeit) scheint zufällig zu sein, und sie scheinen eine Blacklist zu haben, die viele der "offenen" Proxies listet verwende Proxymesh. Also ...

  1. Wenn Scrapy eine "Weiterleitung" zu seiner Anfrage erhält (zB DEBUG: Redirecting (302) to (GET http://.../you_got_blocked.aspx) from (GET http://.../page-544.htm) ), versucht es weiter, zu page-544.htm zu gelangen, oder wird es weiter zu page-545.htm und für immer gehen verlieren auf Seite-544.htm? Wenn es "vergisst" (oder es als besucht zählt), gibt es eine Möglichkeit, es zu veranlassen, diese Seite erneut zu versuchen? (Wenn es das natürlich tut, dann, ja, und gut zu wissen ...)

  2. Was ist die effizienteste Lösung?

(a) Was ich gerade mache: Einen proxymesh rotierende Proxy über die Umgebungsvariable http_proxy verwenden, der Proxies oft genug zu rotieren scheint, um die Weiterleitungen der Zielseite zumindest ziemlich regelmäßig zu durchlaufen. (Nachteile: die offenen Proxies sind langsam zu pingen, es gibt nur so viele von ihnen, proxymesh wird mich schließlich pro Gig nach 10 Gigs aufladen, ich brauche sie nur zu rotieren, wenn ich umgeleitet werde, ich tu 'nicht Ich weiß nicht, wie oft oder auf welchem ​​Auslöser sie rotieren, und das Obige: Ich weiß nicht, ob die Seiten, von denen ich weitergeleitet werde, von Scrapy neu eingereiht werden ...) (Wenn sich Proxymesh bei jeder Anfrage dreht, dann Ich bin okay mit angemessenen Kosten.)

(b) Wäre es sinnvoll (und einfach), Middleware zu verwenden, um bei jeder Umleitung einen neuen Proxy auszuwählen? Was ist mit jeder einzelnen Anfrage? Würde das durch etwas anderes wie TOR oder Proxifier mehr Sinn ergeben? Wenn das relativ einfach ist, wie würde ich es einrichten? Ich habe so etwas an einigen Stellen gelesen, aber die meisten sind veraltet mit defekten Links oder veralteten Scrapy-Befehlen.

Als Referenz habe ich Middleware, die momentan für Proxy Mesh eingerichtet ist (ja, ich benutze die Umgebungsvariable http_proxy, aber ich bin ein Fan von Redundanz, wenn es darum geht, keine Probleme zu bekommen). Also das ist, was ich gerade dafür habe, falls das wichtig ist:

%Vor%     
Xodarap777 26.12.2013, 22:35
quelle

1 Antwort

8

gestern hatte ich ähnliche Aufgabe mit Proxy und Schutz gegen DDoS. (Ich habe eine Website analysiert) Die Idee ist in random.choice . Jede Anfrage hat eine Chance, IP zu ändern. Scrapy verwendet Tor und Telnetlib3. Sie müssen das ControlPort-Passwort konfigurieren.

%Vor%     
Andrey 01.05.2014 10:08
quelle