Google не парсится скриптом на конкретном сервере

Тема в разделе "Как сделать...", создана пользователем Sergo_Sev, 2 май 2014.

Статус темы:
Закрыта.
  1. Sergo_Sev

    Sergo_Sev Творец

    Регистр.:
    14 июн 2008
    Сообщения:
    571
    Симпатии:
    188
    Сделал для теста скрипт - на одном серваке он работает полностью и не работает на другом сервере

    Код:
    $url_load = "http://www.google.ru/search?as_q=hd+%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B&hl=ru&newwindow=1&num=100&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images&start=0&complete";
    
    echo file_get_contents($url_load); // вообще ничего не выводится - только белый экран и в исходном коде тоже пусто
    
    echo file_get_contents("http://www.google.ru/"); // Выводит главную страницу
    
    Какие есть варианты, в чем может быть причина и как можно исправить?
     
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    616
    Симпатии:
    488
    Проверил у себя локально и на сервере - всё ок, выводится оба варианта нормально.
    Может бан по IP? Как вариант CURLом попробовать, с человеческим useragent. Если не будет работать и CURL, то точно дело в айпишнике. Тогда прокси в помощь.
     
    Sergo_Sev нравится это.
  3. Sergo_Sev

    Sergo_Sev Творец

    Регистр.:
    14 июн 2008
    Сообщения:
    571
    Симпатии:
    188
    Да, действительно бан IP оказался

    В общем еще вопрос - как можно исправить ошибку (проблема из-за пробела) ?
    Запрос приходит кажется в такой кодировке google.ru/search?as_q=hd+%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B
    02-05-2014 18-16-57.png
    Код скрипта
    Код:
    $do = $_GET['ggg'];
    
    echo file_get_contents($do);
    Закодировать строку не могу т.к. скрипт большой и долго искать, по этому передаю строку сразу вот так
    Думал просто заменить пробел в скрипте
     
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    616
    Симпатии:
    488
    Если добавить замену пробелов на плюсы, должно работать:

    $do =str_replace(' ','+', $_GET['ggg']);
    echo file_get_contents($do);
     
    Sergo_Sev нравится это.
  5. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    385
    Симпатии:
    254
    Не надо всякими str_replace маяться! file_get_contents( urlencode( $url ) ); и все
     
Статус темы:
Закрыта.