2

私は現在、Python経由で新しいIPを取得しようとしています。

私はstackoverflowでこのスクリプトを見つけました:

import urllib2
from TorCtl import TorCtl

proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support) 

def newId():
    conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123")
    conn.send_signal("NEWNYM")

for i in range(0, 10):
    print "case "+str(i+1)
    newId()
    proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
    urllib2.install_opener(opener)
    print(urllib2.urlopen("http://www.ifconfig.me/ip").read())

私はvidaliaを実行していて、privoxyを持っています。設定が正しく設定されています:

システム設定 (Mac の場合) :

Web プロキシ (HTTP): 127.0.0.1:8118、HTTPS の場合も同じ

私の privoxy 設定ファイルには、次の行があります。

 forward-socks5   /               127.0.0.1:9051 .

私のvidaliaの設定には次のものがあります。

画像

それでもコードを実行すると、ケース1でスタックし、IPを取得できません。これは私のvidaliaのログです:

May 04 19:15:27.381 [Notice] New control connection opened.
May 04 19:15:27.382 [Notice] New control connection opened.
May 04 19:15:33.709 [Notice] New control connection opened.
May 04 19:15:38.653 [Notice] New control connection opened.
May 04 19:15:57.382 [Notice] New control connection opened.
May 04 19:15:57.463 [Notice] New control connection opened.
May 04 19:15:57.464 [Notice] New control connection opened.
May 04 19:16:03.710 [Notice] New control connection opened.
May 04 19:16:19.656 [Notice] New control connection opened.
May 04 19:16:22.448 [Notice] New control connection opened.
May 04 19:16:22.569 [Notice] New control connection opened.
May 04 19:16:22.900 [Notice] New control connection opened.
May 04 19:16:27.382 [Notice] New control connection opened.
May 04 19:16:27.412 [Notice] New control connection opened.
May 04 19:16:27.413 [Notice] New control connection opened.

私は何を間違っていますか?

編集:

構成ファイルの行がアクティブな場合、サイトを読み込めません。

どうやら私が十分に長く待つと、エラーが発生します:

urllib2.HTTPError: HTTP Error 503: Forwarding failure
4

2 に答える 2

1

この質問はかなり頻繁に ( 1 , 2 )出てくるようなので、 FAQ エントリを追加しました。Tor は IP を循環させる方法をサポートしていませんが、新しい ID を作成することはできます。ただし、これは Tor ネットワークに高い負荷をかけるため、無理をしないでください。

TorCtl は非推奨なので、 stemを使用した例を次に示します ...

from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
  controller.authenticate()
  controller.signal(Signal.NEWNYM)
于 2013-06-16T03:11:44.933 に答える