【发布时间】:2014-04-22 13:04:36
【问题描述】:
我正在尝试通过 privoxy 使用 tor 进行匿名访问,作为使用 urllib2 的代理。
系统信息:Ubuntu 14.04,最近通过 dist-upgrade 从 13.10 升级。
这是我用于测试目的的一段代码:
import urllib2
def req(url):
proxy_support = urllib2.ProxyHandler({"http": "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
return opener.open(url).read()
print req('https://check.torproject.org')
上面输出带有sorry, but you don't use Tor消息的页面。
至于我的配置:
/etc/tor/torrc
ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C
HashedControlPassword 16:B3B0BA631D41D6FE601488FC7A9A2E80AB7815580C1C78F2865F30F63B
/etc/privoxy/config
forward-socks5 / localhost:9050 .
$ sudo netstat -ntap | grep tor 输出:
tcp 0 0 127.0.0.1:9050 0.0.0.0:* LISTEN 1045/tor
tcp 0 0 127.0.0.1:9051 0.0.0.0:* LISTEN 1045/tor
tcp 0 0 10.0.0.94:56736 85.17.190.83:9002 ESTABLISHED 1045/tor
tcp 0 0 10.0.0.94:60558 50.7.110.118:9001 ESTABLISHED 1045/tor
tcp 0 0 10.0.0.94:43206 62.210.236.135:443 ESTABLISHED 1045/tor
$ sudo netstat -ntap | grep privoxy 输出:
tcp 0 0 127.0.0.1:8118 0.0.0.0:* LISTEN 887/privoxy
然而,所有的请求都是用我的实际接收到的服务器上的
编辑:
下面使用 requests 库的代码给出了相同的输出:
import requests
def req(url):
proxies = {"http": "http://127.0.0.1:8118"}
return requests.get(url, proxies=proxies).text
print req('https://check.torproject.org')
Tor 日志不表示任何问题:
Apr 22 15:44:34.000 [notice] Bootstrapped 100%: Done.
Apr 22 15:45:03.000 [notice] Catching signal TERM, exiting cleanly.
Apr 22 16:00:57.000 [notice] Tor 0.2.4.20 (git-0d50b03673670de6) opening log file.
Apr 22 16:00:57.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Apr 22 16:00:57.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Apr 22 16:00:57.000 [warn] OpenSSL version from headers does not match the version we're running with. If you get weird crashes, that might be why. (Compiled with 1000105f: OpenSSL 1.0.1e 11 Feb 2013; running wi$
Apr 22 16:00:58.000 [notice] We now have enough directory information to build circuits.
Apr 22 16:00:58.000 [notice] Bootstrapped 80%: Connecting to the Tor network.
Apr 22 16:00:59.000 [notice] Bootstrapped 85%: Finishing handshake with first hop.
Apr 22 16:00:59.000 [notice] Bootstrapped 90%: Establishing a Tor circuit.
Apr 22 16:01:00.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Apr 22 16:01:00.000 [notice] Bootstrapped 100%: Done.
【问题讨论】:
-
也许你可以在tor.stackexchange.com这样做
-
从我过去使用这个库的经验来看,这可能是一个 urllib2 问题
-
只是为了玩不同的变体 - 您是否尝试过使用
urllib2.install_opener(opener)和urllib2.urlopen而不是使用opener.open()?我认为.open()使用了一些来自环境变量的默认代理。 -
是的,确实是 install_opener,现在正在尝试请求...