2013-07-23 30 views
8

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?

+0

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

+0

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? –

Trả lời

0
+4

Mặc dù các liên kết của bạn có thể chứa câu trả lời, một trong những mục tiêu của StackOverflow là lập danh mục và tổ chức các giải pháp thực tế cho các sự cố và không chỉ là liên kết có thể bị hỏng hoặc cần phân tích cú pháp bổ sung. Nếu bạn có thể tóm tắt các phần liên quan trong câu trả lời và sử dụng các liên kết làm tài liệu tham khảo, nó sẽ làm cho câu trả lời của bạn được chấp nhận hơn. Xem [trang này] (http://stackoverflow.com/questions/how-to-answer) để biết thêm hướng dẫn. – beroe

0

Hãy thử

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

Trong trường hợp của tôi đó là công trình

Các vấn đề liên quan