PDA

Просмотр полной версии : TOR: Странное поведение с localhost PHP скриптами...


BNF
06.01.2009, 18:36
У меня есть скрипт: http://localhost/myget.php

Его содержание:
<?php echo file_get_contents( 'http://внешний-адрес-в-интернете.ru/get-my-ip.php' ); ?>

внешний-адрес-в-интернете.ru - это внешний сайт, на котором располагается мой скрипт выдающий мой айпишник и кучу других данных (для проверки работы Тора)

Моя задача:
Из скрипта http://localhost/myget.php анонимно через ТОР получить данные с адреса: http://внешний-адрес-в-интернете.ru/get-my-ip.php

Я использую
Gentoo Linux: /etc/init.d/tor start
FireFox: about:config -> socks_remote_dns = true
Плагин в FF: TorButton и FoxyProxy (тут прописан 127.0.0.1:9050)

Проблема
При попытке загрузить: http://localhost/myget.php - мне лиса предлагает скачать его (сохранить к себе на диск). Знаете, когда ещё веб сервер не сконфигурирован и php скрипты браузер предлагает не обработать и показать результат, а сохранить к себе на диск, т.к. не понял, что это такое.. Вот аналогичная ситуация.

Если загружать в браузере например такой урл: http://php.spb.ru/proxy/
то всё превосходно отображается (торо-анонимно).


А вот чё тор не дружит с локалкой? Как его бы подружить? Подскажите пожалуйста..

BNF
06.01.2009, 18:39
Просто проблема в том, что у меня некоторый скрипт на локалке и внутри он обращается ко внешним адресам.. а вот к ним как раз нужна анонимность...

bons
06.01.2009, 18:50
для того чтобы с браузера можно было обращаться к локалхосту при включенном TOR или другом виде прокси надо в настройках прокси файрфокса в пункт "Не использовать прокси для:" дописать "127.0.0.1, localhost".
Но file_get_contents в любом случае будет качать файл напрямую, без TOR. Для того чтобы скачать с помощью php файл через TOR тебе придется использовать сокеты или curl, тогда просто настрой его (curl) на SOCKS прокси localhost:9050

BNF
06.01.2009, 19:05
>> тогда просто настрой его (curl) на SOCKS прокси localhost:9050
ааа.. чё-то я и не догадался именно так использовать его.
Спасибо большое! Пошёл пробовать.

BNF
06.01.2009, 19:18
bons, скажи, а ты случаем не знаешь как использовать в Curl'ах Socks4a?
Насколько понимаю, если я буду использовать Socks5 (CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5), то ДНС запросы будут идти минуя тор напрямую...

bons
06.01.2009, 20:02
да, DNS запросы будут идти напрямую. Как настроить curl на remote dns я не знаю.
Если это критично и если не найдешь как это сделать то можешь установить privoxy (обычно используется вместе с TOR), это будет своего рода обертка в виде HTTP прокси вокруг SOCKS. Тогда преобразовывать DNS будет уже не твой хост, т.к. Privoxy умеет работать с удаленным DNS. Еще конечно остается вариант написать это на сокетах (используя какой-нибудь класс для работы SOCKS их написано достаточно)

BNF
06.01.2009, 20:05
А privoxy как использовать совместно с Тором в моих скриптах?
Тором уже пользуюсь через cURL - круто :)

BNF
06.01.2009, 20:06
Как вариант - использовать третий вариант:
http://raz0r.name/mysli/ispolzuem-tor-kak-istochnik-besplatnyx-proksi-serverov/

BNF
06.01.2009, 20:08
>> Тогда преобразовывать DNS будет уже не твой хост.
А какой? Хост последней цепочки тора?

bons
06.01.2009, 20:13
Как вариант - использовать третий вариант:
http://raz0r.name/mysli/ispolzuem-tor-kak-istochnik-besplatnyx-proksi-serverov/
я так понял ты про непосредственный запуск программы curl из командной строки.
во-первых на сервере curl может быть установлен только в виде библиотеки к php, во-вторых скорее всего DNS-запросы он все же будет посылать с локалхоста
А privoxy как использовать совместно с Тором в моих скриптах?
Тором уже пользуюсь через cURL - круто
просто настрой curl на HTTP прокси localhost:8118
>> Тогда преобразовывать DNS будет уже не твой хост.
А какой? Хост последней цепочки тора?
скорее всего, но по крайней мере один из трех элементов цепочки

BNF
06.01.2009, 20:19
>> я так понял ты про непосредственный запуск
>> программы curl из командной строки.
не, не.. я про отдельный класс с использованием Socks4a

>> просто настрой curl на HTTP прокси localhost:8118
Так просто? :)
А как привокси узнает, что нужно тор использовать? :)

Сделал вот так, но чё-то вообще пустой ответ возвращается:

http://localhost/getip.php:


$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://внешка/get-my-ip.php' );
curl_setopt( $ch, CURLOPT_TIMEOUT, 10000 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt( $ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
curl_setopt( $ch, CURLOPT_PROXY, '127.0.0.1:8118' );
echo curl_exec( $ch );
curl_close( $ch );


Privoxy запущена.. Походу она с локальными скриптами не очень дружит..
(через Тор этот скрипт работает).

bons
06.01.2009, 20:25
естественно Privoxy должен быть должным образом сконфигурирован
допиши в конец конфига Privoxy строчку
forward-socks4a / localhost:9050 .

BNF
06.01.2009, 20:28
>> допиши в конфиг provoxy строчку
а точно.. Она у меня уже прописана, забыл :D

Но скрипт чего-то всё равно не выдаёт ничего..

Чёт ваще не пойму.. добавил в скрипт:
curl_setopt( $ch, CURLOPT_HEADER, TRUE );
но и заголовков никаких не возвращает.. интересно.

BNF
06.01.2009, 20:39
У.. тут в другом проблема. Поставил в ФФ прокси: 127.0.0.1:8118, а он мне:
"Прокси-сервер отказывается принимать соединения"

Проблема с проксёй.
Не знаешь ли, как можно попытаться выявить проблему?

Запускается privoxy хорошо:

# /etc/init.d/privoxy start
* Starting privoxy ...
Jan 06 19:12:41.229 Privoxy(00000001) Info: Privoxy version 3.0.8
Jan 06 19:12:41.229 Privoxy(00000001) Info: Program name: /usr/sbin/privoxy

Тор также запущен. В конфиг привокси добавлена такая же строка, о которой ты выше говорил.
И чего ей ещё нужно.. :)

(пробовал и без той строчки - аналогичная фигня).
Файерволла нет.

[Raz0r]
06.01.2009, 20:43
проверь privoxy, может программа работает на другом порте
netstat -a | grep LISTEN

BNF
06.01.2009, 20:51
']проверь privoxy, может программа работает на другом порте
netstat -a | grep listen
О.. вообще пустой вывод. Никто никакой порт не слушает видать..

BNF
06.01.2009, 21:18
Бр.. в команде грэпа ошибка допущена походу была.

Вот такая ситуация у меня сейчас:
# netstat -a | grep -i tcp | grep -i listen
tcp 0 0 *:nfs *:* LISTEN
tcp 0 0 *:36420 *:* LISTEN
tcp 0 0 *:8010 *:* LISTEN
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 localhost:8118 *:* LISTEN
tcp 0 0 *:46103 *:* LISTEN
tcp 0 0 localhost:9050 *:* LISTEN
tcp 0 0 *:56987 *:* LISTEN
tcp 0 0 *:5800 *:* LISTEN
tcp 0 0 *:5900 *:* LISTEN
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:https *:* LISTEN


Переустановил privoxy и терь всё отлично работает! Хз в чём трабла была.

Терь коннекчусь через cURL к HTTP проксе: 127.0.0.1:8118. И типа терь у меня и днс запросы идут через тор?