Сервер PHP, нажимающий https://www.google.com/movies, не дает результатов

Если вы перейдете на https://www.google.com/movies?near=02215&q=revenant вы явно получите возвращенные вам результаты, которые можно проанализировать. Однако, когда я загружаю небольшой скрипт на свой сервер, например:

<?php 

$string = file_get_contents("https://www.google.com/movies?near=02215&q=revenant");

echo $string;

?>

Вывод результатов - что-то вроде "Результаты не найдены"

Любые идеи?


person labago    schedule 20.01.2016    source источник
comment
Когда я проверил этот URL-адрес в Chrome, я не получил совпадений.   -  person Magnus Eriksson    schedule 20.01.2016
comment
Your query - revenant - did not match any movie reviews, showtimes or theaters. - похоже, это URL-адрес, по которому вы нажимаете   -  person iamgory    schedule 20.01.2016
comment
Я получаю это i.imgur.com/f6291fa.png   -  person labago    schedule 20.01.2016
comment
Однако проблема все еще остается, независимо от того, КАКОЙ запрос, он никогда не возвращает результаты, когда выполняется с сервера.   -  person labago    schedule 20.01.2016
comment
@MagnusEriksson У меня есть хиты   -  person MonkeyZeus    schedule 20.01.2016
comment
@jlane09 jlane09 Вполне возможно, что Google блокирует попытки парсинга.   -  person MonkeyZeus    schedule 20.01.2016
comment
Мне нужно изменить местоположение на мой почтовый индекс, чтобы получить результаты. Затем он также добавляет &stok=xxxxx к URL-адресу. При удалении &stok=xxxx из URL-адреса я больше не получаю результата   -  person Magnus Eriksson    schedule 20.01.2016
comment
Кажется, это какой-то CSRF-токен или что-то в этом роде.   -  person Magnus Eriksson    schedule 20.01.2016
comment
@jlane09 Похоже, вы не первый stackoverflow.com/ вопросы/9379555/   -  person MonkeyZeus    schedule 20.01.2016
comment
Я в Коста-Рике. Я не получаю результатов по исходному запросу, но получаю результаты по google.com/movies?near=14139&q=daddy, который находится на севере штата Нью-Йорк.   -  person Tarek Adam    schedule 20.01.2016
comment
@MonkeyZeus, как бы они это заблокировали? Как они узнают? Кроме того, этот вопрос был похож, но, похоже, у меня не было проблем. Требовалась документация. В этой заметке, кто-нибудь знает, что произойдет, если ваш сервер будет помечен Google?   -  person labago    schedule 20.01.2016


Ответы (1)


Google придирчив к тому, кому они отправляют HTTP-ответы, скажите им, что вы браузер, и посмотрите, работает ли это:

$context = stream_context_create(array(
    'http' => array(
        'method' => "GET",
        'header' => "" .
            "Accept: text/html" . "\r\n" .
            "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" . "\r\n"
    )
));

$string = file_get_contents( "https://www.google.com/movies?near=02215&q=revenant", false, $context );
person Rainner    schedule 20.01.2016
comment
@ jlane09 jlane09 блин, сначала я получал пустые результаты, но у меня сработало после того, как я добавил заголовки. Попробуйте использовать CURL. - person Rainner; 20.01.2016
comment
возможно мой сервер уже попал в какой-то список, но я попробую и с curl - person labago; 20.01.2016