Ответ 1
Я нашел разумное решение, используя инструменты командной строки tor
и curl
через Node.js.
Загрузите инструмент командной строки tor
и установите его в $PATH.
Теперь мы можем отправлять запросы через этот локальный прокси-сервер tor
, который установит "схему" через сеть TOR. Посмотрите наш IP-адрес, используя http://ifconfig.me. Вы можете скопировать все эти вещи в свой Node REPL:
var cp = require('child_process'),
exec = cp.exec,
spawn = cp.spawn,
tor = spawn('tor'),
puts = function(err,stdo,stde){ console.log(stdo) },
child;
После этого вы можете захотеть создать задержку, пока прокси-сервер tor
будет создан и настроен.
Затем отпустите сеть TOR и спросите http://ifconfig.me, какой IP-адрес обращается к ней.
function sayIP(){
child = exec('curl --proxy socks5h://localhost:9050 http://ifconfig.me',puts);
}
sayIP();
Если вам нужен новый IP-адрес, перезапустите tor
, выключив его, а затем, кажется, самый надежный метод:
function restartTor(){
tor.kill('SIGINT');
tor = spawn('tor');
}
restartTor();
Примечание.. Еще один способ, с которым я видел, - это описание нового IP-адреса (создание новой "схемы" ), но похоже, что он работает примерно на 10% время в моих тестах. Если вы хотите попробовать:
Найдите и скопируйте torrc.sample
в torrc
, затем измените torrc
следующим образом:
- Uncomment
ControlPort 9051
(9050 - это локальный прокси, открытие 9051 позволяет нам управлять им) - Раскомментировать и установить
CookieAuthentication 0
. -
Uncomment HashedControlPassword и установите для результата:
$ tor --hash-password "your_password"
Затем вы можете использовать такую функцию, чтобы отправить сигнал NEWNYM на ваш локальный прокси-сервер tor
, чтобы попытаться получить новый IP-адрес без перезагрузки.
function newIP(){
var signal = 'echo -e "AUTHENTICATE \"your_password\"\r\nsignal NEWNYM\r\nQUIT" | nc -v 127.0.0.1 9051';
child = exec(signal,puts);
}
newIP();