ствол - не могу получить новый ip с python через tor

Я пытаюсь получить новый IP-адрес в сеансе tor, используя стебель и следующую функцию, которая сильно «вдохновлена» этим ответом:

def get_new_IP():
    socket.socket = old_socket
    with Controller.from_port(port=SOCKS_PORT) as controller:
        controller.authenticate()
        controller.signal(Signal.NEWNYM)
    socket.socket = socks.socksocket

Однако я получаю сообщение об ошибке «IncorrectSocketType: невозможно использовать контрольный сокет», вызванное controller.authenticate(), что оставляет меня немного потерянным, поскольку пароль или что-либо не указано, и первоначальное соединение, которое я установил, тоже работает.

Я также попытался добавить 'CookieAuthentication': str(1), как предлагается здесь, в настройки конфигурации при запуске процесс tor, однако это тоже не сработало.

Как получается, что первоначальное соединение работает, и почему я не могу пройти аутентификацию при попытке повторного подключения?


person pandita    schedule 31.01.2015    source источник


Ответы (1)


Controller.from_port() должен подключаться к ControlPort, а не к SocksPort, как определено в вашем torrc (ControlPort — это то, с чем общается Stem, а SocksPort — это то, что используют приложения, использующие tor, такие как Firefox).

https://stem.torproject.org/tutorials/the_little_relay_that_could.html

Как обсуждалось в разделе часто задаваемых вопросов об этом, проявите некоторую сдержанность, поскольку циклические IP-адреса создают нагрузку на сеть...

https://stem.torproject.org/faq.html#how-do-i-request-a-new-identity-from-tor

person Damian    schedule 31.01.2015