3

我对python很陌生。我正在尝试为我正在从事的项目编写一个非常简单的网络爬虫。在此过程中,我尝试使用 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 行,在主打印中 urllib2.urlopen('http://ifconfig.me /ip').read() 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第 126 行,在 urlopen 返回 _opener.open(url, data,超时)文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第394行,打开响应= self._open(req,data)文件“/System/ Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第 412 行,在 _open '_open', req) 文件中“/System/Library/Frameworks/Python.framework/Versions/2.7 /lib/python2.7/urllib2.py”,第 372 行,在 _call_chain 结果 = func(*args) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第 1199 行,在 http_open 返回 self.do_open(httplib.HTTPConnection , req) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第 1174 行,在 do_open 中引发 URLError(err) urllib2.URLError:

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

4

2 回答 2

0

您的代理配置有问题。您的代码无需代理设置即可工作。

于 2012-12-17T05:21:02.977 回答
0

我对 TorCtl 一无所知,但您没有发送 AUTHENTICATE 字符串,tor 会这样。它应该看起来像:

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

请注意,等待几秒钟以使身份发生更改。

于 2012-12-17T08:56:30.770 回答