Как программно изменить узел выхода Tor, чтобы получить новый IP?
У меня Tor работает на моем компьютере, и мне нужно менять выходной узел Tor каждые пять минут. Например, если я начинаю использовать Tor через какой-либо выходной узел, то через 5 минут я хочу, чтобы Tor сменил выходной узел с другим IP-адресом. Как я могу это сделать?
Tor, насколько я знаю, слушает порт 8051 на localhost.
Какие команды я могу отправить на этот порт, чтобы Tor создал новую цепочку, чтобы я мог получить другой IP-адрес?
10 ответов
Способ 1: HUP
sudo killall -HUP tor
Затем проверьте, что ваш IP изменился с:
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/
Протестировано в Ubuntu 17.10 с sudo apt-get install tor
версия 1.6.0-5.
sudo
необходим, так как процесс запускается root по умолчанию.
То, что сигнал HUP делает именно с демоном Tor, описано на странице: https://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec и эквивалентно отправке некоторых команд через командный порт.
На Browser Bundle 5.0.5 это не влияет, только порты демона, такие как 9050 по умолчанию, который не используется TBB. Для этого варианта использования см.: https://tor.stackexchange.com/questions/1071/how-can-a-new-circuit-happen-without-closing-all-tabs
Если вы развертываете армию IP-адресов Tor, как указано здесь, вы можете выборочно отправить:
kill -HUP $PID
Способ 2: порт управления
Упоминается Кат:
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
но для того, чтобы это работало в Ubuntu 17.10, вы должны сначала:
включить порт управления, раскомментировав:
ControlPort 9051
от
/etc/tor/torrc
Установите пустой пароль, иначе он даст
515 Authentication failed: Wrong length on authentication cookie.
, Первый забег:tor --hash-password ''
Это выводит что-то вроде:
16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
Сейчас на
/etc/tor/torrc
обновить строку:HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
Перезапустите Tor:
sudo service tor restart
Бонус: как проверить, что ваш IP изменился
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/
Смотрите также:
- https://tor.stackexchange.com/questions/100/can-tor-be-used-with-applications-other-than-web-browsers
- https://askubuntu.com/questions/95910/command-for-determining-my-public-ip
Связанные темы
- https://superuser.com/questions/449060/tor-how-to-have-different-ip-address-for-every-page-request
- https://askubuntu.com/questions/499995/change-ip-address-which-is-given-by-tor-using-the-terminal
- https://tor.stackexchange.com/questions/100/can-tor-be-used-with-applications-other-than-web-browsers
- https://askubuntu.com/questions/95910/command-for-determining-my-public-ip
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
Этот вопрос, кажется, возникает довольно часто ( 1, 2), поэтому я просто добавил для него запись в FAQ. Как упоминалось ранее, вы можете сделать это через сигнал NEWNYM. Вот пример для того, чтобы сделать это через ствол...
from stem import Signal
from stem.control import Controller
with Controller.from_port(port = 9051) as controller:
controller.authenticate()
controller.signal(Signal.NEWNYM)
Да, это 1 (я имею в виду =true =))), что tor меняет IP каждые 10 минут, но! если я перезапущу тор - я получу новый ip даже через 10 минут. так что я думал о том, чтобы сделать tor для отправки этого запроса "change_ip" вручную. см. этот код (написанный в соответствии с http://en.linuxreviews.org/HOWTO_use_the_Internet_anonymously_using_Tor_and_Privoxy)
procedure ChangeIp;
var
sck:TIdTCPClient;
begin
sck:=TIdTCPClient.Create(nil);
try
sck.Host:='127.0.0.1';
sck.Port:=10051;
sck.Connect;
sck.SendCmd('authenticate','');
if sck.LastCmdResult.Code='250' then
begin
sck.SendCmd('signal newnym','');
end;
finally
sck.Free;
end;
end;
и в [ https://tor-svn.freehaven.net/svn/torctl/trunk/doc/howto.txt%5D я могу написать контроллер, который будет изменять конфигурацию tor на лету. по умолчанию он не отключен (я имею в виду эту возможность), но я могу заставить клиента слушать некоторый порт для приема команд с помощью torrc... если я не ошибаюсь... еще раз =)
!!! где, черт возьми, torrc на моем компьютере?
В C:\Users\geekman\AppData\Roaming\Tor я мог, но теперь я получил перспективу.
Я сделал сценарий оболочки для себя, который также позволяет вам делать это удаленно (если сервер Tor работает на другом компьютере).
Это доступно здесь: https://gist.github.com/kirelagin/9667900.
Если у вас нет доступа к порту управления, вы можете использовать другую схему, которая изменяет ваш IP*. Это можно сделать, указав другое имя пользователя socks:
$ curl -x "socks5://circuit1@127.0.0.1:9050" "https://ifconfig.io/ip"
109.70.100.34
$ curl -x "socks5://circuit2@127.0.0.1:9050" "https://ifconfig.io/ip"
209.222.101.251
$ curl -x "socks5://circuit3@127.0.0.1:9050" "https://ifconfig.io/ip"
54.37.19.83
Если в какой-то момент вы захотите повторно использовать определенный IP-адрес, вы можете использовать то же имя пользователя, которое использовали ранее, чтобы снова получить этот IP-адрес.
* Выходной узел будет каждый раз случайным, и есть небольшая вероятность того, что вы получите один и тот же IP-адрес дважды подряд.
Поправьте меня, если я ошибаюсь, я не эксперт по Tor, но у меня это работает.
Вы можете просто напечатать или вставить в ваш скрипт bash:
service tor reload
Вы не можете контролировать маршрутизацию в сети tor (если у вас есть, кто-то может злоупотребить этой функцией). Но tor уже меняет маршрут примерно каждые 10 минут (по крайней мере, согласно статье в немецкой Википедии).
Я сделал что-то другое здесь... я написал программу PHP, которая может взаимодействовать с оболочкой Linux. Программа будет перезапускать Tor через равные промежутки времени.
Таким образом, когда tor перезапускается, он получает новый IP.... Да.....!!
exec("/etc/init.d/tor restart",$ioOut);
print_r($ioOut); //output from shell after executing the command
sleep(25);
Вы также можете написать сценарий оболочки для этого.
Я сейчас нахожусь в поиске варианта Windows, чтобы сделать это. Проблема в том, что в Windows Tor это служба, которую нельзя перезапустить.
Advtor дает вам доступ практически ко всем расширенным настройкам, которые работают через сеть.
Я написал библиотеку для управления Tor с помощью PHP. Он устанавливается с помощью Composer и позволяет изменить узел выхода.
Конечно, это бесплатное программное обеспечение: http://dunglas.fr/2013/02/php-torcontrol-a-library-to-control-tor/