Không hoàn toàn chắc chắn vấn đề là gì ở đây.Làm cách nào để kết nối với trang web https bằng Scrapy qua Polipo qua TOR?
Chạy Python 2.7.3, và Scrapy 0.16.5
tôi đã tạo ra một con nhện Scrapy rất đơn giản để kiểm tra kết nối để proxy Polipo địa phương của tôi để tôi có thể gửi các yêu cầu ra qua TOR. mã cơ bản của nhện của tôi là như sau:
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
Đối với middleware proxy của tôi, tôi đã xác định:
class ProxyMiddleware(object):
def process_request(self, request, spider):
request.meta['proxy'] = settings.get('HTTP_PROXY')
http_proxy của tôi trong tập tin cài đặt của tôi được định nghĩa là HTTP_PROXY = 'http://localhost:8123'
.
Bây giờ, nếu tôi thay đổi URL bắt đầu thành http://check.torproject.org, mọi thứ đều hoạt động tốt, không có vấn đề gì.
Nếu tôi cố gắng để chạy chống lại https://check.torproject.org, tôi nhận được một yêu cầu Bad lỗi 400 mỗi lần (Tôi cũng đã thử https khác nhau: // trang web này, và tất cả đều có cùng một vấn đề):
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)
Và chỉ để kiểm tra lại rằng nó không phải là một cái gì đó sai với TOR/Polipo của tôi thiết lập, tôi có thể chạy lệnh curl sau trong một thiết bị đầu cuối, và kết nối tốt: curl --proxy localhost:8123 https://check.torproject.org/
Bất kỳ đề xuất nào đây?
https_proxy của bạn được đặt thành? HTTP và HTTPS thường được gửi qua các cổng khác nhau, vv và sẽ yêu cầu các proxy khác nhau. – Andenthal
Không chắc chắn tôi theo dõi. Chắc chắn kết nối với một proxy HTTP, do đó kết nối với một URL HTTPS, nên hoạt động tốt? Tại sao tôi phải kết nối với proxy HTTPS để kết nối với URL HTTPS? Nếu đúng như vậy, lệnh cURL trên sẽ không thành công? –