Как открыть удаленный файл, если сидишь под proxy-сервером, требующим логин и пароль

rudoka

Guest
Как открыть удаленный файл, если сидишь под proxy-сервером, требующим логин и пароль

Как открыть удаленный файл, если сидишь под proxy-сервером, требующим логин и пароль для входа в сеть? (То есть набираешь URL, жмешь Enter, и перед тобой предложение ввести логин и пароль.)

Нежданно-негаданно, у меня возникла проблема, которую я пытался решить, на протяжении 3-х часов упорного поиска в мануале, на форумах и в поисковиках.
Я уже знаю 100 и 1 способ открытия удаленного файла, но никак не могу найти нужный мне. Дело в том, что мне на сайте нужно повесить автоматически обновляемые новости с помощью RSS-файла на Яндексе (http://news.yandex.ru/software.rss). Для этого мне нужно этот файл открыть.
Все бы ничего, но только результатом, например, следующего кода:
PHP:
function proxy_url($proxy_url)
{
   $proxy_name = '192.168.4.4';
   $proxy_port = 3128;
   $proxy_cont = '';
   $proxy_fp = fsockopen($proxy_name, $proxy_port);
   if (!$proxy_fp)    {return false;}
   fputs($proxy_fp, "GET $proxy_url HTTP/1.0\r\nHost: $proxy_name\r\n\r\n");
   while(!feof($proxy_fp)) {$proxy_cont .= fread($proxy_fp,4096);}
   fclose($proxy_fp);
   $proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
   return $proxy_cont;
}
  echo proxy_url("http://news.yandex.ru/software.rss");
является страница следующего содержания, дающая ясно понять, что без пароля и логина никуда не убежишь…

ERROR
Cache Access Denied
________________________________________
While trying to retrieve the URL: http://news.yandex.ru/software.rss
The following error was encountered:
• Cache Access Denied.
Sorry, you are not currently allowed to request:
http://news.yandex.ru/software.rss
from this cache until you have authenticated yourself.

Где-то встретил упоминание о CURL (Client URL Library), как возможном решении проблемы.
Подскажите, пожалуйста, действительно ли эта библиотека является решением моей проблемы (то есть стоит ли мне тратить время на ознакомление с ней) и есть ли иное решение (это наиболее желательный вариант)?
 

Мутник

Новичок
rudoka

Время 100% тратить стоит, т.к. в дальнейшем точно тебе это пригодится...
 

rudoka

Guest
У меня просто времени в обрез, потому хотел как быстрее. Конечно, если это в принципе возможно.
 

SiMM

Новичок
> Как открыть удаленный файл, если сидишь под proxy-сервером, требующим логин и пароль для входа в сеть? (То есть набираешь URL, жмешь Enter, и перед тобой предложение ввести логин и пароль.)

PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками
Думаю, это будет быстрее, чем с CURL'ом разобраться.
 

rudoka

Guest
Впечатляет! Но кроме 10 сточек совета попрактиковаться с HTTP заголовками и ссылки на вспомогательную по этой теме программку я больше ничего не нашел. SiMM, если все так просто, не затруднит ли Тебя черкануть пару строчек так необходимого мне кода?
 

SiMM

Новичок
rudoka, я не могу воспроизвести твою ситуацию. Так что тебе придётся это делать самостоятельно. Всё, что тебе нужно - подсмотреть что происходит и повторить.
 

rudoka

Guest
Спасибо, SiMM. Кажется я разобрался.

-~{}~ 22.03.05 10:20:

Может быть пригодится кому, делается это примерно так:

PHP:
<?php
$fp = fsockopen ("192.168.4.4", 3128, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    $str="GET http://news.yandex.ru/software.rss HTTP/1.0\r\n".
    "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, application/x-shockwave-flash, */*\r\n".
    "Accept-Language: ru\r\n".
    "Proxy-Connection: Keep-Alive\r\n".
    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n".
    "Host: 192.168.4.4\r\n".
    "Proxy-Authorization: Basic c2hpcm9uaW46dGRlZ3RkZWc=\r\n".
    "\r\n";
    fputs ($fp, $str);
    while (!feof($fp)) {
        echo fgets ($fp,120);
    }
    fclose ($fp);
}
?>
 
Сверху