2011-12-18 100 views
4

我想用python和urllib2来使用Tor,并且卡住了。下面Python urllib2 Tor 514需要身份验证

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

而且

telnet 127.0.0.1 9051 

给了我以下错误:

514 Authentication Required. 

这里是我想使用的代码:可是我收到关于urllib2的相同的514认证错误.urlopen电话。

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的托尔

回答

1

谷歌搜索suggests(以及Tor手动confirms)认为9051是Tor的默认控制端口。实际代理默认在端口9050上运行,这是您需要使用的端口。但是,Vidalia不使用默认端口,无需额外配置。

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

+0

因此,我用9050替换了9051,现在收到'连接被拒绝'。我正在使用Tor浏览器捆绑软件安装Linux。 Tor通过Vidalia控制台运行。日志文件在127.0.0.1:9051上显示'打开控制监听器'。我需要启用9050端口吗?当我执行'netstat -a | grep 905'时,我所看到的只是9051端口。这一定很简单,我错过了。 – 2011-12-18 09:21:07

+0

我发现如何启用袜子端口。在Tor ./Data/Tor/torrc文件中,我将SocksPort从auto更改为9050.所以现在我看到9050在执行netstat时正在监听。接下来的问题是,当使用9050时,urllib2抱怨说'Tor不是HTTP代理服务器'。所以它现在看起来像我必须使用HTTP代理服务器,像privoxy与Tor一起工作。如果没有,请让我知道。 – 2011-12-18 10:36:27

+0

看起来捆绑包中的Vidalia使用非默认端口...消息日志 - Vidalia中的高级应包含一行,如“侦听端口上的Socks侦听程序” - 这是您实际需要使用的端口。或者像你所做的那样切换端口。 – Tanriol 2011-12-18 10:41:20