Привет, ребята! Сначала я хочу заверить, что есть похожие темы, но нет ни однозначного ответа, ни четкого ответа. Поэтому я хочу объединить их и спросить еще раз. У меня есть следующий скрипт:
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
Я нашел следующие ответы в stackoverflow:
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.
Может кто-нибудь объяснить, как выполнить мой сценарий анонимно?