Python - управляющий Tor

Я пытаюсь контролировать Tor с Python. Я прочитал несколько других вопросов, заданных по этому вопросу в stackoverflow, но никто из них не ответил на этот вопрос.

Я ищу метод, который даст вам новый идентификатор, новый IP-адрес, когда будет запущена команда. Я googled вокруг и нашел модуль TorCtl как метод для управления, но не может найти способ получить новую идентификацию. Вот то, что у меня до сих пор, по крайней мере, для соединения с тором, но не могу получить дальше.

from TorCtl import TorCtl

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

Любая помощь по этому поводу оценивается, если есть другие модули, лучше TorCtl, и это тоже здорово! Спасибо!

Ответ 1

Ну, из-за удачи мне удалось найти PHP script, который сделал то же самое, что я хотел, и с помощью этого я преобразовал его для работы в TorCtl. Это то, что похоже на кого-то еще, нуждающегося в этом в будущем!

from TorCtl import TorCtl

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

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

Ответ 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 

Вы можете проверить этот пост для мини-учебника

Ответ 3

По-видимому, стебель-пакет работает лучше. Вы можете установить 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, и вы можете увидеть их документация