|
|
|
| Здравствуйте! У меня возникла такая проблема:
есть 2 сайта 1 - hakomp.ru и 2 - marchenkov.com, так вот на сайте hakomp.ru вот какая ситуация:
echo file_get_contents("http://market.yandex.ru/vendors.xml?CAT_ID=109012&hid=90566");
Результат:
Warning: file_get_contents(http://market.yandex.ru/vendors.xml?CAT_ID=109012&hid=90566): failed to open stream: Operation timed out in /ya_market.php on line 26
echo file_get_contents("http://market.yandex.ru/");
Результат:
Warning: file_get_contents(http://market.yandex.ru/): failed to open stream: Operation timed out in /ya_market.php on line 26
echo file_get_contents("http://news.yandex.ru/yandsearch?rpt=nnews2&grhow=clutop&text=d");
Результат:
Работает, загружается.
|
А на marchenkov.com ситуация такая :
echo file_get_contents("http://market.yandex.ru/vendors.xml?CAT_ID=109012&hid=90566");
Результат:
Работает, загружается.
echo file_get_contents("http://market.yandex.ru/");
Результат:
Работает, загружается.
echo file_get_contents("http://news.yandex.ru/yandsearch?rpt=nnews2&grhow=clutop&text=d");
Результат:
Работает, загружается.
|
Даже если использовать не file_get_contents(), а сокеты к примеру - всеравно получается такая же картина! В чем может быть дело ?!??!? | |
|
|
|
|
|
|
|
для: fivemusic
(31.05.2008 в 10:11)
| | Возможно IP сервера, на котором располагается hakomp.ru попал в блек-лист файерволла сервера market.yandex.ru. | |
|
|
|
|
|
|
|
для: BinLaden
(31.05.2008 в 13:43)
| | А как объяснить тогда невозможность загрузки страницы маркета используя прокси ?
Вот код:
$ip="85.91.80.52:80"; $port="80";
$url="http://market.yandex.ru/search.xml?cvredirect=1&text=d";
$url = parse_url($url);
$path = isset($url['path'])? $url['path'] : "/";
if(isset($url['query']))
$path .= '?' . $url['query'];
if(!($f = fsockopen($ip, $port, $ern, $ers))) echo "$ern, $ers";
else {
fputs($f, "GET $path HTTP/1.0\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
echo $reply;
|
И еще... Если ип попал в блэк лист, то как можно с этим бороться ? Переезд к другому хостеру поможет ли ?, Или есть более безболезненные варианты ?! | |
|
|
|
|
|
|
|
для: fivemusic
(31.05.2008 в 13:52)
| | У Вас запрос к прокси-серверу неверный: в $path должен быть URL запрашиваемого ресурса, а еще, насколько я знаю, должен быть заголовок Host с IP прокси в данном случае. | |
|
|
|
|
|
|
|
для: BinLaden
(31.05.2008 в 13:57)
| | Пробую так :
$ip="85.91.80.52:80"; $port="80";
$url="http://market.yandex.ru/search.xml?cvredirect=1&text=d";
if(!($f = fsockopen($ip, $port, $ern, $ers))) echo "$ern, $ers";
else {
fputs($f, "GET $url HTTP/1.0\r\nHost: $ip\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
echo $reply;
|
Выдает :
The requested URL was not found
|
| |
|
|
|
|
|
|
|
для: fivemusic
(31.05.2008 в 14:07)
| | > $ip="85.91.80.52:80"; $port="80";
Собственно, зачем в $ip порт указывать?
А моя ошибка в том, что в Host: нужно указывать хост запрашиваемого ресурса, то бишь market.yandex.ru | |
|
|
|
|
|
|
|
для: BinLaden
(31.05.2008 в 14:13)
| | В спешке проглядел.... =(
Пробую так :
$ip="85.91.80.52"; $port="80";
$url="http://market.yandex.ru/search.xml?cvredirect=1&text=d";
if(!($f = fsockopen($ip, $port, $ern, $ers))) echo "$ern, $ers";
else {
fputs($f, "GET $url HTTP/1.0\r\nHost: $ip\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
echo $reply;
|
выдает тоже самое ! The requested URL was not found.
Зато вот что странное я заметил! У меня в скрипте есть 2 функции :
// Получаем содержимое страницы через прокси
function load_datas($ip, $port, $url,$ref="http://yandex.ru/")
{
$url = parse_url($url);
$host = isset($url['host'])? $url['host'] : "www.marchenkov.com";
$path = isset($url['path'])? $url['path'] : "/";
if(isset($url['query']))
$path .= '?' . $url['query'];
if(!($f = fsockopen($ip, $port, $ern, $ers,20))) $resuka="000";
else {
fputs($f, "GET $path HTTP/1.0\r\nHOST: $host\r\nREFERER: $ref\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
return $reply;
}
// Закачиваем файл на сервер через прокси
function download_obj($ip, $port, $pach_t, $url)
{ global $_SERVER;
$url = parse_url($url);
$host = isset($url['host'])? $url['host'] : "www.marchenkov.com";
$path = isset($url['path'])? $url['path'] : "/";
if(isset($url['query']))
$path .= '?' . $url['query'];
if(!($f = fsockopen($ip, $port, $ern, $ers,20))) return false;
else {
fputs($f, "GET $path HTTP/1.0\r\nHOST: $host\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $content.=$line;
else if($line == "\r\n"){ $reply = ''; }
else $content="";
}
fclose($f);
$fff=fopen($_SERVER[DOCUMENT_ROOT].$pach_t, w);
fputs($fff, $content);
fclose($fff);
return true;
}
}
|
Запускаешь - они прекрасно работают! Сейчас я попробовал сделать как надо : так :
// Получаем содержимое страницы через прокси
function load_datas($ip, $port, $url,$ref="http://yandex.ru/")
{
if(!($f = fsockopen($ip, $port, $ern, $ers,20))) $resuka="000";
else {
fputs($f, "GET $url HTTP/1.0\r\nHOST: $ip\r\nREFERER: $ref\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
return $reply;
}
// Закачиваем файл на сервер через прокси
function download_obj($ip, $port, $pach_t, $url)
{ global $_SERVER;
if(!($f = fsockopen($ip, $port, $ern, $ers,20))) return false;
else {
fputs($f, "GET $url HTTP/1.0\r\nHOST: $ip\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $content.=$line;
else if($line == "\r\n"){ $reply = ''; }
else $content="";
}
fclose($f);
$fff=fopen($_SERVER[DOCUMENT_ROOT].$pach_t, w);
fputs($fff, $content);
fclose($fff);
return true;
}
}
|
и скрипт перестал картинки скачивать!!! А помоему он и содержимое не получает... (это я проверял на работаюбщем сайте который не в бане яши)
Да - оказывается ИП в блэк листе.... ЧТо можно сделать ???!??!?
---------
дико извеняюсь, вторые 2 ф-и не те скопировал | |
|
|
|
|
|
|
|
для: fivemusic
(31.05.2008 в 14:23)
| | > выдает тоже самое ! The requested URL was not found.
Я позже обновил своё сообщение: А моя ошибка в том, что в Host: нужно указывать хост запрашиваемого ресурса, то бишь market.yandex.ru | |
|
|
|
|
|
|
|
для: BinLaden
(31.05.2008 в 14:49)
| |
$url="http://market.yandex.ru/search.xml?cvredirect=1&text=d";
$ip="85.91.80.52"; $port="80";
$url = parse_url($url);
$host = isset($url['host'])? $url['host'] : "www.marchenkov.com";
$path = isset($url['path'])? $url['path'] : "/";
if(isset($url['query']))
$path .= '?' . $url['query'];
if(!($f = fsockopen($ip, $port, $ern, $ers,20))) $resuka="000";
else {
fputs($f, "GET $path HTTP/1.0\r\nHOST: $host\r\nREFERER: $ref\r\n\r\n");
for($reply = false; !feof($f); )
{
$line = fgets($f);
if($reply !== false) $reply .= $line;
else if($line == "\r\n")
$reply = '';
}
fclose($f);
}
echo $reply;
|
ВСЕМ СПАСИБО! ВОТ СКРИПТ КОТОРЫЙ РАБОТАЕТ! | |
|
|
|