Можно ли ускорить изменение IP-адресов при использовании пакета Stem в Python через Tor? - PullRequest
0 голосов
/ 25 августа 2018

В настоящее время я использую следующую настройку для изменения моего ip-адреса в Mac OS X:

from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
    controller.authenticate()
    controller.signal(Signal.NEWNYM)

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.1'
}

proxies = {
    "http": "http://127.0.0.1:8118"
}

r_ip = requests.get("http://icanhazip.com", proxies=proxies, headers=headers_tor)
print(r_ip.text)

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

Aug 25 04:13:53.000 [notice] Rate limiting NEWNYM request: delaying by 7 second(s)

Есть ли способ изменить IP-адрес без задержки?

1 Ответ

0 голосов
/ 25 августа 2018

В соответствии с спецификациями управления *1001*, сигнал NEWNYM указывает клиенту tor на открытие новых цепей.В результате вы (скорее всего) получите схему с другим выходным узлом, чем раньше, следовательно, с другим IP-адресом.

Это всегда требует некоторого времени, и вы не можете реально ускорить саму конструкцию схемы.То, что вы могли бы сделать, это изменить «CircuitBuildTimeout» (см. руководство по Tor ) на значение, отличное от значения по умолчанию, равного 60 секундам, поэтому, если это занимает больше времени, чем указанное количество времени, tor пытается создатьдругая схема.Обратите внимание, что это может вызвать проблемы с конфиденциальностью, поскольку вы предпочитаете быстрые маршрутизаторы.

Конструкция схемы всегда вносит значительную нагрузку в сеть Tor.Чтобы помешать этому, «tor МОЖЕТ ограничить скорость отклика» на сигнал NEWNYM ( раздел 3.7 спецификации управления tor ).Таким образом, вы не можете строить схемы часто.Помимо изменения исходного кода для отключения этого механизма, нет способа обойти это намеренное ограничение.

Если вам нужно фиксированное количество различных IP-адресов, вы можете указать параметры конфигурации «HTTPTunnelPort» несколько раз для разных портов.Для этого вам нужно добавить следующие строки в ваш torrc-файл (обычно в /etc/tor/torrc для linux. Для Mac этот файл кажется немного сложнее найти , как здесь описано ):

HTTPTunnelPort 8118
HTTPTunnelPort 8119 

и т. Д.Затем tor запускает одну цепь на порт при запуске, следовательно, эта часть занимает больше времени.Ваши запросы будут иметь разные IP-адреса, в зависимости от того, на какой порт вы их отправляете.Например: port 8118 -> 5.5.5.5 port 8119 -> 4.4.4.4. Чтобы переключаться между адресами, измените порт в конфигурации прокси в вашем скрипте Python.

Это хорошо для переключения между фиксированным количеством адресов.Тем не менее, он меняется только тогда, когда ждать построения схемы.Для изменения после каждого запроса использование NEWNYM кажется лучше.

Кроме того, вы можете использовать get_newnym_wait или is_newnym_available для определения того, позволяет ли tor построить новую схему, и если нет, то сколько времени вам нужно ждать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...