Возникли проблемы с использованием CURL и PHP для получения результатов поиска Google через прокси - PullRequest
0 голосов
/ 23 декабря 2011

Этот скрипт прекрасно работает при получении google.com, но не с google.com/search?q=test.Когда я не использую CURLOPT_FOLLOWLOCATION, я получаю 302 Move.Когда я его использую, я получаю страницу с просьбой ввести капчу.Я пробовал несколько разных прокси в США и изменил строку пользовательского агента.Есть что-то, чего я здесь не хватает?

function my_fetch($url,$proxy,$user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8') 
{ 
    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_PROXY, $proxy);
    curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_REFERER, 'http://www.google.com/'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

    curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
    $result = curl_exec ($ch); 
    curl_close ($ch); 
    return $result; 
}

$url = 'http://www.google.com/search?q=test';

$proxy = '152.26.53.4:80';
echo my_fetch($url,$proxy);

Пожалуйста, не отвечайте на предложения по использованию API вместо этого.API недостаточно для моих нужд.

Ответы [ 2 ]

0 голосов
/ 13 января 2014

Вы можете попробовать сделать это с PhantomJS:

var page = require("webpage").create();
var homePage = "http://www.google.com/";

page.open(homePage);
page.onLoadFinished = function(status) {
 var url = page.url;

console.log("Status:  " + status);
console.log("Loaded:  " + url);


page.includeJs("http://code.jquery.com/jquery-1.8.3.min.js", function() {
  console.log("Loaded jQuery!");
  page.evaluate(function() {
    var searchBox = $(".lst");
    var searchForm = $("form");

    searchBox.val("your query");
    searchForm.submit();
  });
});

window.setTimeout(
        function () {
          page.render( 'google.png' );
          phantom.exit(0);
        },
        1000 // wait 5,000ms (5s)
      );


};
0 голосов
/ 03 февраля 2012

Google больше не существует для cURL.

Google больше не предоставляет доступ через Curl, он может дать вам сообщение 302 Moved. Если вы хотите использовать его, вы должны использовать для него API.

Спасибо

...