PDA

Просмотр полной версии : как выполнить file_get_contents через прокси


Sharky
21.09.2007, 19:32
как выполнить file_get_contents через http прокси

groundhog
21.09.2007, 19:44
Никак. Посмотри тут:

http://forum.antichat.ru/threadnav40896-48-10.html

Я публиковал функцию курла для HTTP-запросов. Она может через проксики работать.

Sharky
21.09.2007, 19:53
а через сокеты можно?

guest3297
21.09.2007, 21:22
токо хотел написать через сокет...

Sharky
21.09.2007, 21:56
']токо хотел написать через сокет...
ну а пример можно =) ?

Sharky
21.09.2007, 22:46
аффтор. поиск юзать несудьба?
юзал...раз такой умный дай ссылку где показано

groundhog
22.09.2007, 00:47
Sharky, насколько я знаю, соединение с хостом через сокеты делается очень просто... В функции fsockopen вместо хоста коннекта ты указываешь урлу проксика, в запросе GET URI делаешь абсолютным (что-то типа GET http://somehost.ru/somefile.bin HTTP/1.0). И не забудь в хидерах запроса передать заголовок Host с корректным значением домена, с которого запрашивается файл.

Ну можно ещё так:
$url = "http://ya.ru"; // Урла запрашиваемого ресурса
$proxy = sprintf("tcp://%s/", "123.123.123.123"); // Наш прокси
$opts = array('http' => array('proxy' => $proxy, 'request_fulluri' => true));
$connection = stream_context_create($opts);
$content = file_get_contents($url, null, $connection);

print($content);
но не рекомендуется...

Darkweider
22.09.2007, 01:52
А еще вот что придумал, конешно дибилизм, но все же идея такова....
На одном серваке(1) с которого ведется получение пишеться обращение к скрипту лежащему на другом серваке(2) через file_get_contents("http://server2.ru/script2.php") в котором тоже используется file_get_contents('"содержимое которое хотим получить")... Таким же макаром можно цепочку делать, если серверов много куда залить можно файлы... Сорри за оффтоп...
А на счет прокси думаю надо использовать пример,описываемый groundhog' ом , юзаем сокеты.

Sharky
22.09.2007, 13:51
Sharky, насколько я знаю, соединение с хостом через сокеты делается очень просто... В функции fsockopen вместо хоста коннекта ты указываешь урлу проксика, в запросе GET URI делаешь абсолютным (что-то типа GET http://somehost.ru/somefile.bin HTTP/1.0). И не забудь в хидерах запроса передать заголовок Host с корректным значением домена, с которого запрашивается файл.

Ну можно ещё так:
$url = "http://ya.ru"; // Урла запрашиваемого ресурса
$proxy = sprintf("tcp://%s/", "123.123.123.123"); // Наш прокси
$opts = array('http' => array('proxy' => $proxy, 'request_fulluri' => true));
$connection = stream_context_create($opts);
$content = file_get_contents($url, null, $connection);

print($content);
но не рекомендуется...

Warning: file_get_contents() expects at most 2 parameters, 3 given in C:\AppServ\www\stream1.php on line 6

groundhog
22.09.2007, 14:07
Чтобы работать с контекстом, нужен Php >= 5.0.0. Я поэтому и написал, что не рекомендуется. С ней один гемор.