2

こんにちはみんな!最初に、同様のトピックがあることを保証したいのですが、受け入れられた回答や明確な回答はありません。ですから、それらを組み合わせて、もう一度尋ねたいと思います。次のスクリプトがあります。

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.

私のスクリプトを匿名で実行する方法を誰か説明できますか?

4

2 に答える 2

4

与えられた答えを使用してこれで可能でした:

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
import urllib2

print(urllib2.urlopen("http://www.ifconfig.me/ip").read())

しかし、新しいリクエストごとにtorのIPアドレスを変更できることに驚いています???

于 2012-03-26T10:33:00.113 に答える
3

エラーメッセージを読みましたか? 「501 Tor は HTTP プロキシではありません」と表示されます。

HTTP プロキシではなく、SOCKS プロキシです。次のように使用してみてください: urllib2 で SOCKS 4/5 プロキシを使用するにはどうすればよいですか? TOR上のPython urllib?

于 2012-03-26T10:16:51.343 に答える