Tor の制御には Stem を使用しています。tor がいつ IP を変更するかを知る必要があります。通常、信号NEWNYM
が tor に送信されたときに発生しますが、他の理由が考えられます。
おそらく、最も簡単な方法は、現在の tor IP とユーザー エージェントを確認することです。しかし、Stem を使用して取得する方法がわかりません。
たぶん、NYMが変更されたときにtorが何らかのイベントを発生させますか? もしそうなら、どうすればこれを購読できますか?
お願い助けて!
私はこのコードを試してみましevent_handler
たが、いくつかの http リクエストが tor 経由で送信された後にのみ、数回実行されました。「NEWNYMを受け取りました」のようなイベントは扱えますか?
def event_handler(event):
print "HANDLED!!"
print event
from stem.control import Controller
from stem import Signal
from stem.control import EventType
controller = Controller.from_port()
controller.authenticate(password=settings.TOR_PASSWORD)
controller.add_event_listener(event_handler, EventType.CIRC)
controller.signal('NEWNYM')
# if I comment this, event_handler will not be executed
import requests
r = requests.get("http://httpbin.org/ip", proxies=settings.TOR_PROXIES)
print r.json()