Python - 控制Tor

时间:2012-03-28 15:54:14

标签: python tor

我正试图用Python控制Tor。我已经在stackoverflow上阅读了关于这个主题的其他几个问题但没有一个回答这个问题。

我正在寻找一种方法,可以在运行命令时为您提供“新身份”,一个新的IP地址。我已经google了一下,发现TorCtl模块作为控制tor的方法,但找不到获得新身份的方法。这是我到目前为止至少连接到tor的东西,但是不能再进一步了。

from TorCtl import TorCtl

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

如果有其他模块比TorCtl更好,那么对此有任何帮助表示赞赏!谢谢!

3 个答案:

答案 0 :(得分:6)

好吧,运气好的话,我设法找到了一个PHP脚本,它完成了我想要的完全相同的东西,并借助于我将其转换为在TorCtl中工作。对于将来需要它的人来说,这就是它的样子!

from TorCtl import TorCtl

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

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

答案 1 :(得分:2)

您可以在python中使用类似的代码:

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 

您可以查看this post for a mini-tutorial

答案 2 :(得分:1)

显然,干包效果更好。您可以在计算机上安装tor并使其在终端中运行。然后运行以下程序:

from stem import Signal
from stem.control import Controller

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

stem是tor.org开发的官方软件包,您可以看到他们的documentation