python scrapy tor

python - ¿Cómo conectarse al sitio https con Scrapy a través de Polipo a través de TOR?



No estoy del todo seguro de cuál es el problema aquí.

Ejecutando Python 2.7.3 y Scrapy 0.16.5

Creé una araña Scrapy muy simple para probar la conexión a mi proxy local de Polipo, así puedo enviar solicitudes a través de TOR. El código básico de mi araña es el siguiente:

from scrapy.spider import BaseSpider class TorSpider(BaseSpider): name = "tor" allowed_domains = ["check.torproject.org"] start_urls = [ "https://check.torproject.org" ] def parse(self, response): print response.body

Para mi middleware proxy, he definido:

class ProxyMiddleware(object): def process_request(self, request, spider): request.meta[''proxy''] = settings.get(''HTTP_PROXY'')

Mi HTTP_PROXY en mi archivo de configuración se define como HTTP_PROXY = ''http://localhost:8123'' .

Ahora, si cambio mi URL de inicio a http://check.torproject.org , todo funciona bien, sin problemas.

Si intento correr contra https://check.torproject.org , recibo un error de 400 solicitudes erróneas cada vez (también he probado diferentes sitios https: //, y todos ellos tienen el mismo problema):

2013-07-23 21:36:18+0100 [scrapy] INFO: Scrapy 0.16.5 started (bot: arachnid) 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, RandomUserAgentMiddleware, ProxyMiddleware, RetryMiddleware, DefaultHeadersMiddleware, RedirectMiddleware, CookiesMiddleware, HttpCompressionMiddleware, ChunkedTransferMiddleware, DownloaderStats 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Enabled item pipelines: 2013-07-23 21:36:18+0100 [tor] INFO: Spider opened 2013-07-23 21:36:18+0100 [tor] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023 2013-07-23 21:36:18+0100 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080 2013-07-23 21:36:18+0100 [tor] DEBUG: Retrying <GET https://check.torproject.org> (failed 1 times): 400 Bad Request 2013-07-23 21:36:18+0100 [tor] DEBUG: Retrying <GET https://check.torproject.org> (failed 2 times): 400 Bad Request 2013-07-23 21:36:18+0100 [tor] DEBUG: Gave up retrying <GET https://check.torproject.org> (failed 3 times): 400 Bad Request 2013-07-23 21:36:18+0100 [tor] DEBUG: Crawled (400) <GET https://check.torproject.org> (referer: None) 2013-07-23 21:36:18+0100 [tor] INFO: Closing spider (finished)

Y solo para verificar que no haya ningún problema con mi configuración TOR / Polipo, puedo ejecutar el siguiente comando curl en una terminal y conectarme bien: curl --proxy localhost:8123 https://check.torproject.org/

¿Alguna sugerencia sobre lo que está mal aquí?


Tratar

rq.meta[''proxy''] = ''http://127.0.0.1:8123''

En mi caso son obras