Python urllib2 Tor 514 Authentication Required

4
我正在尝试使用Python和urllib2与Tor一起使用,但卡住了。以下是代码:

print opener.open('http://check.torproject.org/').read()

并且
telnet 127.0.0.1 9051

出现以下错误:

514 Authentication Required.

这是我想要使用的代码:但是在urllib2.urlopen调用上,我收到了相同的514身份验证错误。

import urllib2
# using TOR !
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:9051"} )
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
# every urlopen connection will then use the TOR proxy like this one :
urllib2.urlopen('http://www.google.com').read()

有什么建议可以解决这个问题吗?
使用 Tor Vidalia 浏览器 -> 设置 -> 高级选项:身份验证设置为“随机生成”
我正在使用 Python 2.65 urllib2 Tor。
1个回答

1

谷歌搜索建议(Tor手册证实)9051是Tor的默认控制端口。默认情况下,实际代理运行在端口9050上,这是您需要使用的端口。但是,Vidalia没有使用默认端口而不需要额外配置。

另一个问题是urllib2默认情况下无法使用SOCKS代理。有关可能的解决方案,请参见这些两个 问题


所以我用9050替换了9051,现在收到“连接被拒绝”的消息。我正在使用Linux上的Tor浏览器捆绑安装程序。Tor通过Vidalia控制台运行。日志文件显示“在127.0.0.1:9051上打开控制侦听器。”我需要启用9050端口吗?当我执行“netstat -a|grep 905”时,我只看到9051端口。我一定是错过了什么简单的东西。 - Jim Noss
我找到了如何启用socks端口的方法。在Tor ./Data/Tor/torrc文件中,我将SocksPort从auto更改为9050。所以现在当我执行netstat时,我可以看到9050正在监听。现在下一个问题是,当使用9050时,urllib2会抱怨说'Tor不是HTTP代理'。因此,现在看起来我必须使用HTTP代理,比如privoxy才能与Tor一起工作。如果不是,请告诉我。 - Jim Noss
看起来捆绑包中的 Vidalia 使用了非默认端口... Vidalia 中的高级消息日志应该包含一行类似于“Socks 监听器监听端口 <number>”的内容 - 这是您实际需要使用的端口。或者像您所做的那样切换端口。 - Tanriol
是的,Tor本身不提供HTTP代理。 - Tanriol
1
明白了!感谢指导。将Tor的套接字监听端口设置为9050而非自动后,我安装了TorCtl,它建立了一个与Tor 9050端口通信的监听端口8118。因此,我的工作ProxyHandler行现在是:proxy_support = urllib2.ProxyHandler({"http":"127.0.0.1:8118"}) 所以,我的路径是Python -> urllib2 -> TorCtl -> Tor。 - Jim Noss
跟进。以下Ubuntu链接非常有用。 https://help.ubuntu.com/community/Tor - Jim Noss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接