Я хочу получить результат поиска google в php

Я пробовал следующие коды:

$url = 'http://www.google.co.uk/#q='.$query.'&hl=en&prmd=imvns&source=lnt&tbs=ctr:countryUK%7CcountryGB&cr=countryUK%7CcountryGB&sa=X&psj=1&ei=m65DT_yUAcnG0QX46_yPDw&ved=0CEEQpwUoAQ&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=2e9b4f7fb1e75d0d&biw=1440&bih=799'; $ch = curl_init(); curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1:1501'); curl_setopt($ch, CURLOPT_REFERER, 'www.google.com'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); $contents = curl_exec($ch); curl_close($ch); echo $contents; 

Но он показывает главную страницу google вместо страницы результатов поиска Google. Помогите решить эту проблему.

Я успешно смог обойти попытку Google предотвратить поиск курсора следующим образом:

 $useragent = "Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/870; U; id) Presto/2.4.15"; $ch = curl_init (""); curl_setopt ($ch, CURLOPT_URL, "http://www.google.com/search?hl=en&tbo=d&site=&source=hp&q=".$query); curl_setopt ($ch, CURLOPT_USERAGENT, $useragent); // set user agent curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); echo $output = curl_exec ($ch); curl_close($ch); 

Обратите внимание, что пользовательский агент, который я использовал, является старым операционным мини-браузером. таким образом google отображает содержимое html, которое вы можете проанализировать.

ЭТО ПРОТИВ GOOGLE TOS, пожалуйста, не злоупотребляйте;)

[EDIT] использовать $query = urlencode($query)

В этом конкретном случае вы это не сработаете, потому что Google специально разработал этот URL-адрес, чтобы он не был доступен cURL. Вы заметите (как заметил Квентин), что url использует строку привязки, а не стандартный синтаксис строки запроса (переменные должны появиться после ? Но в этом случае они идут после # ). В Google есть часть javascript, которая захватывает строку привязки, а затем использует ajax для загрузки контента в рамку результатов. file_get_content и cURL поэтому бессильны получить результаты от этого URL-адреса.

Существуют и другие места, где вы можете передать правильные строки запросов:

http://www.google.ca/search?q=query+filetype%3Apdf+site%3Ayour_domain.com&hl=en&num=10&lr=lang_en&ft=i&cr=&safe=images

И он будет полезен, но это почти наверняка нарушает TOR Google, поэтому будьте осторожны. Кроме того, есть платная услуга Google, которая позволяет вам делать это легко и без какой-либо угрожающей угрозы судебного процесса.

другие ребята были правы, предупреждая вас проверить TOS и о том, что якорь, который вы используете в URL, выглядит не так. Но даже если этот якорь не существует, вы все равно должны получить главную страницу. Поэтому то, что я думаю, может вызвать проблему:

вы уверены, что прокси-сервер, который вы хотите использовать, работает нормально? выполните тест без этой строки:

 curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1:1501'); 

Кроме того, они могут выполнять некоторые проверки, которые связаны с пользовательским агентом, и вы не предоставляете никакой ценности, поэтому подумайте над добавлением вроде:

 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'); 

Проверьте доступ Php по следующей ссылке.

https://developers.google.com/web-search/docs/

$ url = " https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton&userip=USERS-IP-ADDRESS ";

$ ch = curl_init ();

curl_setopt ($ ch, CURLOPT_URL, $ url);

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ ch, CURLOPT_REFERER, / * Введите URL вашего сайта здесь * /);

$ body = curl_exec ($ ch);

curl_close ($ ч);

// теперь обрабатываем строку JSON

$ json = json_decode ($ body);