Используем TOR как источник бесплатных прокси-серверов

TOR (The Onion Router) известен как средство обеспечения безопасности трафика. С помощью него достигается высокая анонимность благодаря прохождению пакетов в зашифрованном виде через цепочку случайных серверов (или нодов). TOR – уникальное решение для обеспечения анонимности и имеет ряд преимуществ над использованием обычных прокси или цепочки прокси. Самое главное из них – пользователю не нужно постоянно искать списки прокси-серверов. TOR – это сеть множества серверов, организованная таким образом, что пользователю не нужно задумываться о маршруте прохождения пакетов, так как узлы выбираются случайным образом. Именно это обстоятельство позволяет обходить проверку на IP-адрес в различных форумах, чатах и голосованиях, так как почти каждый запрос пользователя посылается через уникальный нод. Эта особенность TOR’а уже давно известна и успешно используется в настоящее время, однако я еще ни разу не встречал в сети методов, описывающих автоматизацию осуществления запросов, например с помощью скрипта. Зачем это нужно? Все очень просто – для накрутки различных головсований и счетчиков. Например, у меня есть предположение, что, если каждый день дергать фид на Feedburner через TOR, тем самым начисляя себе якобы новых читателей, можно существенно поднять тИЦ сайта, так как при включенной опции Awareness API на фидбернере, Яндекс, а также боты различных рейтингов, смогут видеть количество подписчиков. При большом количестве запросов в день через TOR к нашему фиду, можно заставить Яндекс подумать, что у нас целая армия читателей. Но это лишь мои догадки, к тому же это относится больше к SEO, чем к web-безопасности. Тем не менее, я уверен, что можно найти еще множество способов применения автоматизированных средств для работы с TOR. Я написал три варианта PHP-скриптов, реализующих взаимодействие с TOR.
TOR-клиент представляет собой локальный SOCKS-прокси, слушающий порт 9050.

Вариант первый – использование внешней утилиты cURL

<?php
$url = "ya.ru";

$paths = array('/usr/bin/curl',
               '/usr/local/bin/curl',
               '/bin/curl',
               '/usr/sbin/curl',
               '/usr/local/sbin/curl',
               '/sbin/curl',
               'c:/windows/curl.exe');
foreach( $paths as $c ){
	if(@file_exists($c)){ $curl = $c; break;  }
}
if(!isset($curl)) die("NO cURL!");

system("$curl --url \"$url\" --socks4a 127.0.0.1:9050");
?>

Вариант второй – использование PHP-расширения cURL

<?php
$url = "ya.ru";
$proxy = "127.0.0.1:9050";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

Вариант третий – использование PHP-класса для работы с SOCKS от Jinn

<?php
require("./socks.class.php"); 

$socks_type = 'socks4a';
$socks_ip   = "127.0.0.1";
$socks_port = 9050;

$socks = new SOCKS;        

$connect = $socks->telnet($socks_type,$socks_ip,$socks_port);
if($connect)
{
  $result = $socks->connect($url,80);
  if(is_numeric($result)) {die("Error!");} 

         $head  = "GET / HTTP/1.0\r\n";
         $head .= "Host: $url\r\n";
         $head .= "Proxy-Connection: close\r\n\r\n";

         $socks->send($head);
         echo $socks->read();
		 $socks->close();
} else {
	echo "Error!";
}
?>


Posted

in

by

Comments

26 responses to “Используем TOR как источник бесплатных прокси-серверов”

  1. ha Avatar

    интересная мысль..

  2. Іван Avatar
    Іван

    ИМХО если не заставить ТОР изменить ним тогда ІР тоже что и 2минути назад.

  3. Foxcool Avatar

    А ты применял на практике такое? =)

  4. Raz0r Avatar

    к сожалению пока не довелось

  5. freeneutron Avatar

    >ИМХО если не заставить ТОР изменить ним тогда ІР тоже что и 2минути назад.
    Иван хотел спросить, как заставить ТОР Соединятся через заданный IP, а не через тот, что окажется на конце случайной цепочки (ИМХО ). Думаю должна быть там такая фича. Только как она настраивается?

  6. SYS team F.U.K.E.R.S. Avatar

    Сборка комплекта
    http://www.torproject.org/torbrowser/details.html.ru#build
    Чтобы пересобрать комплект, скачайте дистрибутив исходников (signature). См. README с описанием содержимого каталогов и историей изменений. Инструкции по сборке в файле build-scripts/INSTALL.

    почитайте вы!!! там написано – как! меняешь 10 минут на 5 секунд и все! сотни тысяч адресов! и нормальная зарплата) я про это знаю ужэе минимум лет 6.. а он был и до этого…

  7. Raz0r Avatar

    Спасибо за комент, он меня натолкнул на дальнейшее изучение тора. Сейчас пишу контроллер тора на PHP, который будет реализован в виде удобного класса.
    >сотни тысяч адресов
    а вот это не соответсвует действительности. Загляните на страницу статуса нодов тора, и посмотрите Exit nods, там их не более 600-700.

  8. Spy Avatar
    Spy

    Вы не знаете socks через curl на php4 работает? С http проксями всё нормально. На php5 тоже socks работал. Версия Curl одинаковая 7.19.2

  9. Raz0r Avatar

    Нет, SOCKS не реализован в cURL для PHP4

  10. OramahMaalhur Avatar
    OramahMaalhur

    В данный момент пытаюсь таким образом накрутить одно голосование . через http://domain.com.$fingerprint.exit/ не получается 🙁

  11. ДЦ Avatar
    ДЦ

    tor –exitnode имя_ноды
    Имена на страничке статы

  12. ДЦ Avatar
    ДЦ

    Там должно быть два дефиза а не —

  13. RavenN2O Avatar
    RavenN2O

    люди как голосовать за сервера линейдж через прокси я когда голосую мне выдает типо ктото под моим ником уже проголосовал мне посоветовали черес прокси а как я не знаю=(

  14. vik Avatar
    vik

    Появилось ли решение с переключением IP?

  15. Raz0r Avatar

    Решение было найдено, но, к сожалению, слишком медленное.

  16. SkiF Avatar
    SkiF

    exec tor restart и удет вам счастье.

  17. Wergon Avatar
    Wergon

    Давно использую Тор в качестве прокс (:
    Моя PHP функция перестроения всей цепочки (обычно выходной IP меняется):
    function newnym()
    {
    $sock = fsockopen(‘127.0.0.1’, 9051);
    fwrite($sock, “AUTHENTICATE\r\n”);
    fgets($sock, 128);
    fwrite($sock, “SIGNAL NEWNYM\r\n”);
    fgets($sock, 128);
    fwrite($sock, “QUIT\r\n”);
    fgets($sock, 128);
    fclose($sock);
    }
    На 9051 порту должен висеть контроллер Тора. Аутентификация – никакой.

  18. Casper Avatar
    Casper

    Wergon +1, мануал рулит !

  19. LoOny Avatar
    LoOny

    >vik, 5. Июнь 2009, 11:20
    >Появилось ли решение с переключением IP?

    вот скрипт для смены цепочки нодов (IP соответственно тоже меняется):

    #!/usr/bin/expect -f

    spawn telnet localhost 9051
    expect “Escape character is ‘^]’.”
    send “AUTHENTICATE\r”
    expect “250 OK”
    send “signal NEWNYM\r”
    expect “250 OK”
    send “quit\r”

    работает если в настройках — Аутентификация – никакой.

    ——————————————————-
    а возможно ли сделать так чтобы IP (ну т.е. нод на выходе) менялся ТОЛЬКО по команде? ну допустим через тот же срипт. и при этом выдавая каждый раз уникальный IP..
    вобщем как быть если мне надо пару часов под одним IP посидеть? и чтобы в течении суток IP не повторялись. возможно ли это с TOR’ом или лучше в сторону обычных проксей капать?))
    просто есть один параметр MaxCircuitDirtiness, но не знаю подойдет ли он для уникальности в течении суток к примеру.. там же вроде уникальность полностью цепочки, а их-то не так много можно собрать наверно)) вобщем хз..
    сможет кто нить советом помочь?)

  20. женя Avatar
    женя

    а где в скрипте должен быть вызов урла на который накручивается счетчик?
    привидите пожалуйста пример когда например у меня есть массив ссылок которые мне нужно прогнать через тор 1000 раз

  21. Leon1010 Avatar
    Leon1010

    А возможно ли использовать каждый адрес из цепочки как отдельный прокси?
    И как получить все адреса из цепочки?

  22. Raz0r Avatar

    Нет, можно только exit-ноды
    Адреса можно получить, выполнив трассировку (tracert/traceroute)

  23. Leon1010 Avatar
    Leon1010

    Просто мне необходимо увеличить скорость обработки, соответственно чтобы трафик проходил не через всю цепочку, а только через один адрес.
    Ну и соответственно возможность быстрой замены этого адреса.

  24. Raz0r Avatar

    Насколько я помню tor пускает трафик минимум через 3 нода. Могу ошибаться, но через один в любом случае нельзя.

  25. Leon1010 Avatar
    Leon1010

    http://www.pgpru.com/faq/anonimnostjsetjtor#h37446-16 вот тут говорится что можно, но этот вариант мне не очень нравится

  26. Raz0r Avatar

    хм, раньше такой опции не было. Но, как и сказано по ссылке, таких нодов наверно почти нет.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.