使用Tor代理与scrapy

Dja*_*oPy 6 python proxy tor scrapy

我需要帮助在Ubuntu中设置Tor并在scrapy框架中使用它.

我做了一些研究,发现了这个指南:

class RetryChangeProxyMiddleware(RetryMiddleware):

    def _retry(self, request, reason, spider):
        log.msg('Changing proxy')
        tn = telnetlib.Telnet('127.0.0.1', 9051)
        tn.read_until("Escape character is '^]'.", 2)
        tn.write('AUTHENTICATE "267765"\r\n')
        tn.read_until("250 OK", 2)
        tn.write("signal NEWNYM\r\n")
        tn.read_until("250 OK", 2)
        tn.write("quit\r\n")
        tn.close()
        time.sleep(3)
        log.msg('Proxy changed')
        return RetryMiddleware._retry(self, request, reason, spider)
Run Code Online (Sandbox Code Playgroud)

然后在settings.py中使用它:

DOWNLOADER_MIDDLEWARE = {
                         'spider.middlewares.RetryChangeProxyMiddleware': 600,
                         }
Run Code Online (Sandbox Code Playgroud)

然后你只想通过本地代理(polipo)发送请求,这可以通过以下方式完成:

tsocks scrapy crawl spirder 
Run Code Online (Sandbox Code Playgroud)

有没有人可以确认,这种方法有效,你得到不同的IP?

Dja*_*oPy 0

我正在使用这个片段:http://snipplr.com/view/66992/use-a-random-user-agent-for-each-request/

更新:已修复损坏的链接