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

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

10 голосов
/ 28 марта 2012

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

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

from TorCtl import TorCtl

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

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

Ответы [ 3 ]

6 голосов
/ 29 марта 2012

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

from TorCtl import TorCtl

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

TorCtl.Connection.send_signal(conn, "NEWNYM")
2 голосов
/ 17 июля 2012

Вы можете использовать подобный код в 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 

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

1 голос
/ 03 августа 2017

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

...