2012-12-17 33 views
3

我对python很新奇。我正在尝试为我正在开发的一个项目编写一个非常简单的网络抓取工具。在这个过程中,我正尝试使用Tor来更改我的IP地址,所以我不会断开与我正在进行的服务的连接。我试图在添加到我的项目之前测试特定于获取新IP的代码。这是我正在测试的代码。使用urllib2和Tor在python中拒绝连接

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: Traceback (most recent call last): File "scrapingTools.py", line 86, in main() File "scrapingTools.py", line 76, in main print urllib2.urlopen('http://ifconfig.me/ip').read() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 394, in open response = self._open(req, data) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 412, in _open '_open', req) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain result = func(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1199, in http_open return self.do_open(httplib.HTTPConnection, req) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1174, in do_open raise URLError(err) urllib2.URLError:

任何理解正在发生的事情在这里将不胜感激帮助。

+0

+1对于http://ifconfig.me/ip,我喜欢那样。 – pguardiario

回答

0

您的代理配置存在一些问题。 您的代码在没有代理设置的情况下工作。

+0

如何更改代理配置?那是Tor还是在我的服务器上? – joed4no

0

我对TorCtl没有任何了解,但是您没有发送AUTHENTICATE字符串,tor会期待这一点。它应该看起来像这样:

telnet localhost:9051 
>> 250 OK 
AUTHENTICATE "xxx" 
>> 250 OK 
signal NEWNYM 
>> 250 OK 

请注意,等待几秒钟以便身份已更改。