2014-02-17 21 views
5

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.

Antwort