2012-03-26 119 views
2

你好!起初我想確保有類似的話題,但沒有公認的答案或明確的迴應。所以我想結合他們再問一次。我有以下腳本:與TOR運行Python腳本

import urllib2 

proxy = urllib2.ProxyHandler({"http":"127.0.0.1:9050"}) 
opener = urllib2.build_opener(proxy) 
print(opener.open("http://www.ifconfig.me/ip").read()) 

我想運行它匿名,使用與tor例如。但它給這個錯誤:

Traceback (most recent call last): 
    File "python_tor.py", line 5, in <module> 
    print(opener.open("http://www.ifconfig.me/ip").read()) 
    File "/usr/lib/python2.7/urllib2.py", line 400, in open 
    response = meth(req, response) 
    File "/usr/lib/python2.7/urllib2.py", line 513, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib/python2.7/urllib2.py", line 438, in error 
    return self._call_chain(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 521, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 501: Tor is not an HTTP Proxy 

我發現下面的計算器答案:

proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"}) 
    opener = urllib2.build_opener(proxy_support) 
    opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
    print opener.open('http://www.google.com').read() 

,同時也爲這個話題到此評論:

It may be worthwhile for people reading this thread to know that port 8118 is actually Privoxy's port, not Tor. Tor is a strictly SOCKS-only proxy (port 9050) so it rejects all non-SOCKS traffic (e.g. HTTP). To handle non-SOCKS traffic, you would need to use Privoxy (port 8118) or Polipo (port 8123) to translate the traffic into SOCKS so Tor would accept. 

Privoxy is better for privacy and Polipo is better for performance because it does caching. 

任何人都可以解釋如何執行我腳本匿名?

+0

[Tor with Python?](http://stackoverflow.com/questions/1096379/tor-with-python) – Thilo 2012-03-26 10:07:37

回答