Ich versuche Scrapy über Tor zu benutzen. Ich habe versucht, mir einen Kopf zu machen, wie man einen DownloadHandler für Scrapy schreibt, der Socksipy-Verbindungen verwendet.Wie schreibe ich einen DownloadHandler für scrapy, der Anfragen durch socksipy macht?
Scrapy des HTTP11DownloadHandler ist hier: https://github.com/scrapy/scrapy/blob/master/scrapy/core/downloader/handlers/http11.py
Hier ist ein Beispiel eines benutzerdefinierten Download-Handler für die Erstellung von: https://github.com/scrapinghub/scrapyjs/blob/master/scrapyjs/dhandler.py
Hier ist der Code für eine SocksiPyConnection Klasse erstellen: http://blog.databigbang.com/distributed-scraping-with-multiple-tor-circuits/
class SocksiPyConnection(httplib.HTTPConnection):
def __init__(self, proxytype, proxyaddr, proxyport = None, rdns = True, username = None, password = None, *args, **kwargs):
self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password)
httplib.HTTPConnection.__init__(self, *args, **kwargs)
def connect(self):
self.sock = socks.socksocket()
self.sock.setproxy(*self.proxyargs)
if isinstance(self.timeout, float):
self.sock.settimeout(self.timeout)
self.sock.connect((self.host, self.port))
Mit dem Komplexität der verdrehten Reaktoren im Scrapy-Code, ich kann nicht herausfinden, wie Stecker socksipy hinein. Irgendwelche Gedanken?
Bitte antworten Sie nicht mit privoxy-ähnlichen Alternativen oder posten Antworten sagen "Scrapy funktioniert nicht mit Socken Proxies" - Ich weiß das, weshalb ich versuche, einen benutzerdefinierten Downloader schreiben, die Anfragen mit socksipy macht.