我正在尝试使用Python编写的爬虫来抓取网站.我想将Tor与Python集成,这意味着我想使用Tor匿名抓取该站点.
我试过这样做.它似乎不起作用.我检查了我的IP,它仍然与我使用tor之前的IP相同.我通过python检查了它.
import urllib2 proxy_handler = urllib2.ProxyHandler({"tcp":"http://127.0.0.1:9050"}) opener = urllib2.build_opener(proxy_handler) urllib2.install_opener(opener)
Dmitri Farko.. 21
您正在尝试连接到SOCKS端口 - Tor拒绝任何非SOCKS流量.您可以通过中间人 - Privoxy - 使用端口8118进行连接.
例:
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"}) opener = urllib2.build_opener(proxy_support) opener.addheaders = [('User-agent', 'Mozilla/5.0')] print opener.open('http://www.google.com').read()
另请注意传递给ProxyHandler的属性,没有http前缀为ip:port
您正在尝试连接到SOCKS端口 - Tor拒绝任何非SOCKS流量.您可以通过中间人 - Privoxy - 使用端口8118进行连接.
例:
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"}) opener = urllib2.build_opener(proxy_support) opener.addheaders = [('User-agent', 'Mozilla/5.0')] print opener.open('http://www.google.com').read()
另请注意传递给ProxyHandler的属性,没有http前缀为ip:port
pip install PySocks
然后:
import socket import socks import urllib2 ipcheck_url = 'http://checkip.amazonaws.com/' # Actual IP. print(urllib2.urlopen(ipcheck_url).read()) # Tor IP. socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050) socket.socket = socks.socksocket print(urllib2.urlopen(ipcheck_url).read())
仅仅使用urllib2.ProxyHandler
在/sf/ask/17360801/失败:
Tor is not an HTTP Proxy
提到:我如何使用urllib2的SOCKS 4/5代理?
在Ubuntu 15.10,Tor 0.2.6.10,Python 2.7.10上测试.