Проблемы с использованием PHP Curl + Прокси для запроса Google - PullRequest
0 голосов
/ 07 ноября 2010

Проблемы с Google, блокирующим мои IP-адреса при запросе Google на совпадения контента.У меня есть 300 частных IP-адресов, и у меня нет проблем с подключением к Google с помощью настольного приложения (с теми же IP-адресами), которое выполняет аналогичную функцию.Тем не менее, когда я запускаю его на своем сервере с помощью CURL, мои IP-адреса временно блокируются - ваша машина может отправлять автоматические запросы, повторите попытку через 30 секунд.Таким образом, где-то должен быть след.

Как бы то ни было, вот мой код:

    function file_get_contents_curl($url, $proxy = true) {

    global $proxies;
    App::import('Vendor', 'proxies');

    $proxies = $this->shuffle_assoc($proxies);
    $proxy_ip = $proxies[array_rand($proxies, 1)];//proxy IP here
    $proxy = $proxy_ip.':60099';

    $loginpassw = 'myusername:mypassword';  //proxy login and password here

    $ch = curl_init();

    if($proxy) {

        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
        //curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
        curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
        curl_setopt($ch, CURLOPT_PROXY, $proxy);
        curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);   
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)');  
    }

    curl_setopt($ch, CURLOPT_HEADER, 1);
    @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    //Set curl to return the data instead of printing it to the browser.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    //echo $data;
    curl_close($ch);
    return $data;
    }

И я проверил, что IP-адрес устанавливается и я подключаюсь через прокси

У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 07 ноября 2010

Пробовал с SOCKS5 но без разницы. Проблема с API Google в том, что вы получаете только 100 запросов в день.

0 голосов
/ 27 февраля 2012

HTTP прокси, а также SOCKS прокси, нет никакой разницы при просмотре результатов Google.
Существует несколько возможных причин, по которым вас обнаруживают.

  • Ваши прокси плохого качества или имеют общий доступ (возможно, без вашего ведома)
  • Ваши прокси находятся только в одной или двух подсетях / слишком последовательные
  • Вы запрашиваете Googleслишком быстро или слишком часто

Не следует запрашивать у Google более частый IP-адрес, чем 20 раз в час, это грубое значение, которое работает и не наказывается поисковой системой.
Таким образом, вы должны реализовать задержку на основе количества прокси.

Но если варианты 1) или 2) верны, даже если это не поможет, вам понадобится другое решение IP.

Ознакомьтесь со скребком ранга Google (http://google -rank-checker.squabbel.com / ), это бесплатный PHP-проект для очистки Google и включает в себя надлежащие процедуры задержки, которые вы можете использовать дляваш собственный код.
Также функции кэширования могут оказаться полезными для вас, поскольку вы не хотите запрашивать Google больше, чем требуется.

И не забывать:
Если вас обнаружат, сделайте ваш скрипт STOP автоматизированным!
Вы просто вызываете проблемы, продолжая, обнаружение означает, что вы сделали что-то не так.

0 голосов
/ 07 ноября 2010

Http-прокси не гарантирует вашу конфиденциальность.Вы можете попробовать использовать носки.

Но вам лучше использовать google-api .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...