我对python很新。我正在尝试为我正在开发的项目编写一个非常简单的Web scraper。在这个过程中,我试图使用Tor来更改我的IP地址,这样我就不会与我正在抓取的服务断开连接。在将其添加到我的项目之前,我试图测试特定于获取新IP的代码。这是我正在测试的代码。
from TorCtl import TorCtl
import urllib2
for i in range(1,51):
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"} )
opener = urllib2.build_opener(proxy_support)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)
print "IP " + str(i) + ":"
print urllib2.urlopen('http://ifconfig.me/ip').read()
conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="torPass")
conn.sendAndRecv('signal newnymrn')
conn.close()
当我这样做时,我收到以下错误:
IP 1:回溯(最近一次调用最后一次):文件“scrapingTools.py”, 第86行 main()文件“scrapingTools.py”,第76行,在main中 print urllib2.urlopen('http://ifconfig.me/ip')。read()File“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第126行,在urlopen中 return _opener.open(url,data,timeout)File“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第394行,公开 response = self._open(req,data)File“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第4行,在_open '_open',req)文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第372行,在_call_chain中 result = func(* args)File“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第1199行,在http_open中 return self.do_open(httplib.HTTPConnection,req)File“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”, 第1174行,在do_open中 提出URLError(错误)urllib2.URLError:
任何帮助了解这里发生的事情将不胜感激。
答案 0 :(得分:0)
您的代理配置存在一些问题。 您的代码无需代理设置即可运行。
答案 1 :(得分:0)
我对TorCtl一无所知,但你没有发送一个AUTHENTICATE字符串,tor会期待的。它应该看起来像:
telnet localhost:9051
>> 250 OK
AUTHENTICATE "xxx"
>> 250 OK
signal NEWNYM
>> 250 OK
注意,请等待几秒钟,以便更改身份。