У меня есть скрипт: http://localhost/myget.php Его содержание: Code: <?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/ то всё превосходно отображается (торо-анонимно). А вот чё тор не дружит с локалкой? Как его бы подружить? Подскажите пожалуйста..
Просто проблема в том, что у меня некоторый скрипт на локалке и внутри он обращается ко внешним адресам.. а вот к ним как раз нужна анонимность...
для того чтобы с браузера можно было обращаться к локалхосту при включенном TOR или другом виде прокси надо в настройках прокси файрфокса в пункт "Не использовать прокси для:" дописать "127.0.0.1, localhost". Но file_get_contents в любом случае будет качать файл напрямую, без TOR. Для того чтобы скачать с помощью php файл через TOR тебе придется использовать сокеты или curl, тогда просто настрой его (curl) на SOCKS прокси localhost:9050
>> тогда просто настрой его (curl) на SOCKS прокси localhost:9050 ааа.. чё-то я и не догадался именно так использовать его. Спасибо большое! Пошёл пробовать.
bons, скажи, а ты случаем не знаешь как использовать в Curl'ах Socks4a? Насколько понимаю, если я буду использовать Socks5 (CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5), то ДНС запросы будут идти минуя тор напрямую...
да, DNS запросы будут идти напрямую. Как настроить curl на remote dns я не знаю. Если это критично и если не найдешь как это сделать то можешь установить privoxy (обычно используется вместе с TOR), это будет своего рода обертка в виде HTTP прокси вокруг SOCKS. Тогда преобразовывать DNS будет уже не твой хост, т.к. Privoxy умеет работать с удаленным DNS. Еще конечно остается вариант написать это на сокетах (используя какой-нибудь класс для работы SOCKS их написано достаточно)
Как вариант - использовать третий вариант: http://raz0r.name/mysli/ispolzuem-tor-kak-istochnik-besplatnyx-proksi-serverov/
я так понял ты про непосредственный запуск программы curl из командной строки. во-первых на сервере curl может быть установлен только в виде библиотеки к php, во-вторых скорее всего DNS-запросы он все же будет посылать с локалхоста просто настрой curl на HTTP прокси localhost:8118 скорее всего, но по крайней мере один из трех элементов цепочки
>> я так понял ты про непосредственный запуск >> программы curl из командной строки. не, не.. я про отдельный класс с использованием Socks4a >> просто настрой curl на HTTP прокси localhost:8118 Так просто? А как привокси узнает, что нужно тор использовать? Сделал вот так, но чё-то вообще пустой ответ возвращается: Code: 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 запущена.. Походу она с локальными скриптами не очень дружит.. (через Тор этот скрипт работает).
естественно Privoxy должен быть должным образом сконфигурирован допиши в конец конфига Privoxy строчку Code: forward-socks4a / localhost:9050 .
>> допиши в конфиг provoxy строчку а точно.. Она у меня уже прописана, забыл Но скрипт чего-то всё равно не выдаёт ничего.. Чёт ваще не пойму.. добавил в скрипт: curl_setopt( $ch, CURLOPT_HEADER, TRUE ); но и заголовков никаких не возвращает.. интересно.
У.. тут в другом проблема. Поставил в ФФ прокси: 127.0.0.1:8118, а он мне: "Прокси-сервер отказывается принимать соединения" Проблема с проксёй. Не знаешь ли, как можно попытаться выявить проблему? Запускается privoxy хорошо: Code: # /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 Тор также запущен. В конфиг привокси добавлена такая же строка, о которой ты выше говорил. И чего ей ещё нужно.. (пробовал и без той строчки - аналогичная фигня). Файерволла нет.
Бр.. в команде грэпа ошибка допущена походу была. Вот такая ситуация у меня сейчас: Code: # 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. И типа терь у меня и днс запросы идут через тор?