Использование 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 следующим образом:

  1. раскомментировать ControlPort 9051 (9050 - локальный прокси, открытие 9051 позволяет нам управлять им)
  2. раскомментировать и установить CookieAuthentication 0.
  3. раскомментировать 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();