Php + curl парсинг выдачи гугла

эм... я наверно в этой всей теме был 1 из самых активных и да я прочел всю тему ))
Изначально поставленый вопрос был в том что вы шлете капчу на антигейт и там якобы уже другая капча а не ту что вы запросили... Вас сказали что её нужно сохранить и отправить на что вы задали вопрос о том как её сохранить при этом в 1 сообщении от вас вы сообщили что разработка ведется не на php но это не важно. Я дал вам ответ на последний вопрос который должен решить изначальный но в виду того что тема в разделе php и для вас нет разницы я так вам и ответил примером на php. Как то так.

PS. Вы капчу на антигейт что ссылкой отправляете ? Если да то вы наркоман не иначе. Запросите капчу у седя под кусами вашими и сохраните её в файл, и отправляйте именно файлом капчу и все будет в шоколаде.

PSS. Ваши сообщения в данной теме ни что иное как флуд потому как ни к чему они не приведут. Вопрос жуется дольше чем нужно.. Если вы не хотите думать нечего писать.
 
эм... я наверно в этой всей теме был 1 из самых активных и да я прочел всю тему ))
Изначально поставленый вопрос был в том что вы шлете капчу на антигейт и там якобы уже другая капча а не ту что вы запросили... Вас сказали что её нужно сохранить и отправить на что вы задали вопрос о том как её сохранить при этом в 1 сообщении от вас вы сообщили что разработка ведется не на php но это не важно. Я дал вам ответ на последний вопрос который должен решить изначальный но в виду того что тема в разделе php и для вас нет разницы я так вам и ответил примером на php. Как то так.

PS. Вы капчу на антигейт что ссылкой отправляете ? Если да то вы наркоман не иначе. Запросите капчу у седя под кусами вашими и сохраните её в файл, и отправляйте именно файлом капчу и все будет в шоколаде.

PSS. Ваши сообщения в данной теме ни что иное как флуд потому как ни к чему они не приведут. Вопрос жуется дольше чем нужно.. Если вы не хотите думать нечего писать.
Не правильное я задал русло для диалога - ндао было сразу привести кусок кода). Просто сообщение "file_put_contents..." звучит так, как если ответить на вопрос "как скачать?" словами "нажмите на ссылку".
МОй код выглядит вот как:
PHP:
тут сгребается страница и пропускается через simple_html_dom
$captcha = $result->find('img');
            $captcha = $captcha[0];
            file_put_contents($this->base.'captcha.jpg', $this->GetHTML("http://www.google.com" . $captcha->src));
            $text = recognize($this->base.'captcha.jpg', "2eb6cc35e86248a0f5f659a11fce0ea1", false, "antigate.com", 5, 30, 0, 0, 1); 
и потом посылаю ответ
http://www.google.com/sorry/Captcha?captcha=$text&id=ИД_из_кода&$back=url_запроса&submit=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C
вместе с хедерами array("Referer: http://www.google.com/sorry/?continue=url_запроса","Host: www.google.com")
И вот я не могу понять что я делаю не так, потому что код не работает.
 
Вы устранили проблему? может расскажите в чем была проблема, почему код не работал?
 
Нет, не устранил, использовал просто много ипов и обошёлся без капчи.
Но как тут написали, а потом удалили сообщение - я гдето накосячил скорее всего с сессией, проверить только надо.
 
если используете CURL, то не закрывайте сеанс (curl_close), прежде чем не получите изображение и не отправите форму.

Вот вырезал кусок кода из рабочего скрипта
PHP:
if($curl = curl_init())
{
// Заходим на нужную страничку
    if(!empty($referer)) curl_setopt($curl, CURLOPT_REFERER, $referer);
    curl_setopt($curl, CURLOPT_URL, $nextUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($curl, CURLOPT_HEADER, true);
    curl_setopt($curl, CURLOPT_AUTOREFERER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_MAXREDIRS, 20);
    curl_setopt($curl, CURLOPT_PROXY, $proxy['proxy']);
    if(!empty($proxy['auth'])) curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxy['auth']);
    $out = curl_exec($curl);
   
    $dom = phpQuery::newDocumentHTML($out, $charset = 'utf-8');
    $captcha = $dom->find('img[alt="captcha"]')->attr('src');

// Проверяем есть ли капча
    if(!empty($captcha))
    {
// Параметры формы
        $form = $dom->find('form:first');
        $formAction = abs_url($form->attr('action'), $url);
        $formHidden = $form->find('input[type=hidden]:first')->attr('name');
        $formText = $form->find('input[type=text]:first')->attr('name');

        $captchaUrl = abs_url($captcha, $url);
        $img = md5($id.$captchaUrl.$timestamp);
        $ext = ".jpg";
        $fileName = $c_path.$img.$ext;
        $file = fopen($fileName,'w+');

// Выдираем капчу и сохраняем
        curl_setopt($curl, CURLOPT_URL, $captchaUrl);
        curl_setopt($curl, CURLOPT_FILE, $file);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_exec ($curl);
        fclose($file);


        $result = antigate($fileName,"your_antigate_api_key",false, "antigate.com");
        $capchaText = $result['text'];

        $capchaID = $result['id'];
        unlink($fileName); //удаляем изображение

// Отправляем форму
        curl_setopt($curl, CURLOPT_URL, $formAction);
        curl_setopt($curl, CURLOPT_FILE, '/dev/null');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $formHidden."=&".$formText."=".$capchaText);
        $out = curl_exec($curl);
    }
// ВОТ ТУТ ЗАКРЫВАЕМ СЕАНС
    curl_close($curl);
}
 
Прошлый мой вопрос удалили, но я так и не получил ответа, но вопрос актуален до сих пор.

Итак:
Можно ли отправлять запрос на поиск в гугл через curl, причем вся система должна работать и через прокси.
Если есть идеи или код поделитесь, пожалуйста.
 
Можно ли отправлять запрос на поиск в гугл через curl, причем вся система должна работать и через прокси.

Прямо над твоим вопросом, код для работы через курл, с использованием прокси Для просмотра ссылки Войди или Зарегистрируйся
Хотя до рабочего варианта его вроде так и не довели.
т.е. ответ на твой вопрос - да, можно :)

Полагаю в качестве прокси стоит поставить что-то локально (fiddler2 или Charles) и смотреть, где прячется ошибка.
 
Прошлый мой вопрос удалили, но я так и не получил ответа, но вопрос актуален до сих пор.

Итак:
Можно ли отправлять запрос на поиск в гугл через curl, причем вся система должна работать и через прокси.
Если есть идеи или код поделитесь, пожалуйста.
Можно, только нужно обрабатывать редиректы, например
Или настаивать в php.ini опции open_basedir и safe_mode, но это плохо для безопасности.
 
Назад
Сверху