11

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

我正在寻找一种方法,让你在运行命令时给你一个“新身份”,一个新的 IP 地址。我四处搜索,发现 TorCtl 模块是一种控制 tor 的方法,但找不到获得新身份的方法。这是我到目前为止至少连接到 tor 的内容,但不能再进一步了。

from TorCtl import TorCtl

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

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

4

3 回答 3

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")
于 2012-03-29T04:18:17.980 回答
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 

您可以查看此帖子以获取迷你教程

于 2012-07-17T15:17:48.013 回答
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 开发的官方包,你可以查看他们的文档

于 2017-08-03T03:27:05.907 回答