Non completamente sicuro di quale sia il problema.Come connettersi al sito https con Scrapy via Polipo su TOR?
esecuzione Python 2.7.3 e 0.16.5 Scrapy
ho creato un semplice ragno Scrapy per testare la connessione alla mia procura Polipo locale in modo da poter inviare richieste tramite TOR. codice di base della mia ragno è la seguente:
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
Per la mia delega middleware, ho definito:
class ProxyMiddleware(object):
def process_request(self, request, spider):
request.meta['proxy'] = settings.get('HTTP_PROXY')
mio HTTP_PROXY nel mio file di impostazioni è definito come HTTP_PROXY = 'http://localhost:8123'
.
Ora, se cambio l'URL iniziale su http://check.torproject.org, tutto funziona correttamente, nessun problema.
Se si tenta di correre contro https://check.torproject.org, ho ottenere un 400 Richiesta Bad errore ogni volta (Ho anche provato diverse https: // siti, e tutti hanno lo stesso 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)
E solo per verificare che non sia qualcosa di sbagliato con il mio setup TOR/Polipo, sono in grado di eseguire il seguente comando di arricciatura in un terminale, e collegare bene: curl --proxy localhost:8123 https://check.torproject.org/
Qualche suggerimento su cosa c'è di sbagliato Qui?
A cosa è impostato https_proxy? HTTP e HTTPS vengono generalmente inviati su porte diverse, ecc. E richiederanno diversi proxy. – Andenthal
Non sono sicuro che io segua. Sicuramente la connessione a un proxy HTTP, che a sua volta si connette a un URL HTTPS, dovrebbe funzionare correttamente? Perché dovrei connettermi a un proxy HTTPS per connettermi a un URL HTTPS? In tal caso, il comando cURL sopra riportato non fallirebbe? –