使用Tor代理与Scrapy

7

我需要帮助在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)

然后在settings.py中使用它:

DOWNLOADER_MIDDLEWARE = {
                         'spider.middlewares.RetryChangeProxyMiddleware': 600,
                         }

然后您只需通过本地Tor代理(polipo)发送请求,可以使用以下方法完成:

tsocks scrapy crawl spirder 

有人能否确认这种方法是否有效且可以获得不同的IP地址?

只需尝试使用自己的资源并检查服务器日志。并设置浏览器标识符列表以隐藏所有者 :) 或为您的网络爬虫添加唯一标识符。 - b1_
我该如何设置浏览器标识列表? - DjangoPy
哦...我没有使用过Scrapy,所以现在只是查看帮助 :)。但是对于在您自己的网站上进行测试,最好使用唯一标识符以便于解析日志。 - b1_
基本推荐设置,请参考此处链接,以及这个代码片段用于随机化。关于浏览器标识的相关阅读材料可以点击此处链接 - b1_
谢谢,我已经找到了代码片段并且已经集成好了 :) - DjangoPy
http://pkmishra.github.com/technical/2013/03/18/how-to-run-scrapy-with-TOR-and-multiple-browser-agents/ - Pradeep Kumar Mishra
1个回答

0

1
这个链接似乎已经失效了。 - Divick
随机用户代理仍然可以被追踪。 - Nirbhay Kundan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接