Использование api Tor для создания анонимного прокси-сервера
Я делаю приложение, которое делает много вызовов api на какой-то сайт. Проблема я столкнулся заключается в том, что на сайте есть ограничение на количество вызовов API, которые могут быть сделаны в минуту. Чтобы обойти это, я надеялся использовать Tor в сочетании с node-http-proxy чтобы создать таблицу прокси, которая использует анонимные ip-адреса, взятые из Иза Тор.
Итак, мой вопрос в том, насколько это возможно и какие инструменты вы бы порекомендовали для заканчиваю. Мое приложение написано на javascript, поэтому решения, связанные с такими вещами, как node-tor предпочтительнее.
1 ответов
я нашел разумное решение, используя tor
и curl
инструменты командной строки через узел.js.
скачать the tor
инструмент командной строки и установите его в свой $PATH.
теперь мы можем отправлять запросы через этот локальный tor
прокси, который установит "цепь" через сеть TOR. Давайте посмотрим наш IP-адрес, используя http://ifconfig.me. Вы можете скопировать вставить все эти вещи в свой узел 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
to torrc
, затем измените torrc
следующим образом:
- раскомментировать
ControlPort 9051
(9050 - локальный прокси, открытие 9051 позволяет нам управлять им) - раскомментировать и установить
CookieAuthentication 0
. -
раскомментировать HashedControlPassword и установить результат из:
$ tor --hash-password "your_password"
тогда вы можете использовать такую функцию, чтобы отправить новый сигнал на ваш локальный 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();