在python中使用urllib2和Tor拒绝连接

时间:2012-12-17 05:17:45

标签: python web-scraping urllib2 tor

我对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:

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

2 个答案:

答案 0 :(得分:0)

您的代理配置存在一些问题。 您的代码无需代理设置即可运行。

答案 1 :(得分:0)

我对TorCtl一无所知,但你没有发送一个AUTHENTICATE字符串,tor会期待的。它应该看起来像:

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

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