2

Pythonでスクリプトを書いています。
私のスクリプトは、urllib2 を使用して Web ページを読み取ります。Socksipy
を 使用して、 urllib2にソックス プロキシ (TOR) を強制的に使用させています。 私の問題は、TorCtl を設定しても機能せず、例外が発生した後です。 動作しないコードは次のとおりです (最初は動作し、2 番目は失敗します!):
socket.socket
newTorId()

  newTorId()      #This works
  import socks
  import socket
  socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "localhost", 9050)
  socket.socket = socks.socksocket
  newTorId()     #this Fails!

newTorIdは次のように定義されます。

from TorCtl import TorCtl
def newTorId():
    conn = TorCtl.connect(passphrase="test")
    conn.send_signal("NEWNYM")

例外は次のとおりです。

__init__() takes exactly 2 arguments (3 given)
Traceback (most recent call last):
  File "script.py", line 97, in <module>
    newTorId()
  File "script.py", line 27, in newTorId
    conn.send_signal("NEWNYM")
AttributeError: 'NoneType' object has no attribute 'send_signal'

何が問題ですか?

4

2 に答える 2

1

ライブラリではなく、独自のコードで例外が発生します。特に、

TorCtl.connect(passphrase="test")

結果を呼び出すNoneとエラーが発生します.send_signal

newTorId()新しい Tor ID を要求することを意図していると思います。TorCtl.Connection.send_signal(conn, "NEWNYM")毎回新しい接続を作成しようとするのではなく、おそらく新しい ID を取得するために呼び出す必要があります。Python - Tor の制御を参照してください。

于 2012-06-05T08:13:02.007 に答える