我正试图用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更好,那么对此有任何帮助表示赞赏!谢谢!
答案 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
答案 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