2

PythonでTorを介してWebページにアクセスする方法を知りたいです。

同様の質問がいくつかありますが、それらのどれも完全に答えられておらず、多くの答えが完全に間違っています。

私が偶然見つけた最初のページはこれでした。PythonでTorを介してurllib2リクエストを行う方法は?、そしてそこにある最も人気のある答えは;

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()

似たような答えのページがいくつかありますが、とにかくそのページの誰かがコメントしました。

「このスレッドを読んでいる人にとって、ポート8118が実際にはTorではなくPrivoxyのポートであることを知っておく価値があるかもしれません。Torは厳密にSOCKSのみのプロキシ(ポート9050)であるため、SOCKS以外のすべてのトラフィック(HTTPなど)を拒否します。非SOCKSトラフィックの場合、Torが受け入れるようにトラフィックをSOCKSに変換するには、Privoxy(ポート8118)またはPolipo(ポート8123)を使用する必要があります。

Privoxyはプライバシーに優れており、Polipoはキャッシュを行うため、パフォーマンスに優れています。」

だから、これは私をどこにも連れて行かないでしょう、いくつかの検索の後、私はTOR上でこのPythonurllibを見つけましたか?

socksipyをダウンロードして、コードを試しました。それは動作しますが、私はこの男と同じエラーが発生します。彼の問題に対する受け入れられた答えはありません。投稿は2011年からですが、明確にしようとする新しい質問が正しいと思いました。

あるいは、Torを扱うための良いライブラリはありますか?

4

2 に答える 2

2

はい、Torを操作するためのPythonライブラリがいくつかあります。最も一般的なものはstemtxtorconです。この種のクライアントの使用法に関するチュートリアルについては、こちらを参照してください。

于 2013-06-16T04:25:44.800 に答える
1

了解しました。これが私が使用したソリューションです。

私はこれをダウンロードしました-http://pastie.org/6002288(ソースを覚えていませんが、記載されている情報があれば、必要に応じて追跡できます)

私はそれを実行します

ここで、コンピューターの設定を変更して、DNS解像度がポート53でローカルにプロキシネームサーバーを通過するようにします。これにより、DNS解像度がtorに中継されます。

それはそれの世話をします、今私はそれが安全であることを知っている次のコードを実行することができます!

import socks
import socket
def create_connection(address, timeout=None, source_address=None):
    sock = socks.socksocket()
    sock.connect(address)
    return sock

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)

# patch the socket module
socket.socket = socks.socksocket
socket.create_connection = create_connection


import urllib

url = "http://www.google.com"
urllib.urlopen(url)

TorはまだURLではなくIPアドレスのみを受信して​​いると言っており、情報を漏らしている可能性があります。しかし、DNSルックアップはTorを経由するローカルプロキシを経由するため、肯定的ではありません。

于 2013-02-01T02:31:44.707 に答える