2012-03-28 8 views
10

Ich versuche Tor mit Python zu steuern. Ich habe ein paar andere Fragen zu diesem Thema auf Stackoverflow gelesen, aber keiner von ihnen beantwortet diese Frage.Python - Controlling Tor

Ich bin auf der Suche nach einer Methode, um Ihnen eine 'neue Identität', eine neue IP-Adresse zu geben, wenn der Befehl ausgeführt wird. Ich habe gegoogelt und das TorCtl-Modul als eine Methode zur Steuerung von Tor gefunden, kann aber keine Möglichkeit finden, eine neue Identität zu erhalten. Hier ist, was ich bis jetzt für eine Verbindung mit tor habe, aber ich komme nicht weiter.

from TorCtl import TorCtl 

conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123") 

Jede Hilfe zu diesem Thema wird geschätzt, wenn es andere Module sind besser als TorCtl, dass zu groß sein würde! Vielen Dank!

Antwort

6

Nun, glücklicherweise gelang es mir, ein PHP-Skript zu finden, das genau das tat, was ich wollte, und mit dessen Hilfe ich es in TorCtl umwandelte. So sieht es für jeden aus, der es in Zukunft braucht!

from TorCtl import TorCtl 

conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123") 

TorCtl.Connection.send_signal(conn, "NEWNYM") 
2

Sie können einen ähnlichen Code in Python verwenden:

def renewTorIdentity(self, passAuth): 
    try: 
     s = socket.socket() 
     s.connect(('localhost', 9051)) 
     s.send('AUTHENTICATE "{0}"\r\n'.format(passAuth)) 
     resp = s.recv(1024) 

     if resp.startswith('250'): 
      s.send("signal NEWNYM\r\n") 
      resp = s.recv(1024) 

      if resp.startswith('250'): 
       print "Identity renewed" 
      else: 
       print "response 2:", resp 

     else: 
      print "response 1:", resp 

    except Exception as e: 
     print "Can't renew identity: ", e 

können Sie überprüfen this post for a mini-tutorial

1

Anscheinend ist der Stamm-Paket besser funktioniert. Sie können tor auf Ihrem Computer installieren und im Terminal laufen lassen. Dann führen Sie das folgende Programm:

from stem import Signal 
from stem.control import Controller 

with Controller.from_port(port = 9051) as controller: 
    controller.authenticate() 
    controller.signal(Signal.NEWNYM) 

Stamm ist die offizielle Paket von tor.org entwickelt, und Sie können ihre documentation

sehen