[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: TOR вместо прокси
slobotsky.denis
Многие из вас знают, что такое TOR. Некоторые даже пользуются.
Кому-то в работе может потребоваться скрыть реальный IP сервера, на котором выполняется php-скрипт, при запросах к сторонним серверам. С делать это можно с помощью прокси-серверов, которые в большом количестве можно найти в интернете. Проблема в том, что за хороший прокси-сервер, который не "умрёт" через несколько минут использования, придётся заплатить.
Тут на помощь приходит TOR, который можно с лёгкостью использовать в качестве прокси-сервера в своих программах. Более того, TOR позволяет в любой момент сменить текущий IP-адрес на совершенно другой.

Для начала работы необходимо установить TOR на свой сервер. Инструкция по установке можно найти на оффициальном сайте.

Важно! Если у вас Ubuntu и вы решили воспользоваться встроенным менеджером пакетов (apt-get install tor) сделайте это, как написанно тут.

Установив и запустив TOR, можно приступать к написанию скрипта. Простейший выглядит так:

function get($url,$proxy) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PROXY, "$proxy");
$ss = curl_exec($ch);
curl_close($ch);
return $ss;
}



$prox = 'localhost:9050';
$a = get('internet.yandex.ru',$prox);
echo $a;

Код взят отсюда

Ещё одно важное замечание: TOR это SOCKS прокси. Поэтому надо не забыть выставить curl-опцию:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);



Теперь настроим возможность смены ip:
- Устанавливаем уже готовую либу.
- Открываем настройки тора (/etc/tor/torcc)
- Раскомментируем строки

...
ControlPort 9051
...
HashedControlPassword 16:..
CookieAuthentication 0

- Обратитеть внимение, что значение CookieAuthentication надо выставить в 0
- генерируем новый пароль. В консоле:
tor --hash-password my_password

- заменяем в конфиге значение HashedControlPassword на сгенерированное
- перезапускаем tor
/etc/init.d/tor restart

- в php-скрипт добавляем код:

$tc = new TorControl\TorControl(array(
'password' => 'my_password',
));


$tc->connect();
$tc->authenticate();

// именно эта строка отсылает тору команду на смену ip
$tc->executeCommand('SIGNAL NEWNYM');

$tc->quit();


Теперь при каждом выполнении php-скрипта IP будет меняться. Правда, на сколько я понял, очень часто менть не получится. Необходим промежуток в несколько секунд.

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.