[PHP] Проблема с отсылкой капчи в Google

123
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#11
avad0n:
Ну там же указано в теге формы method="get". Да и через developer tools в браузере проверил, там действительно get-запрос.

Ну значит что-то упустили.

Через FireBug проверяли запрос и ответ вручную? Сравнивали с вашим?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
A0
На сайте с 15.10.2012
Offline
2
#12
LEOnidUKG:
Ну значит что-то упустили.

Через FireBug проверяли запрос и ответ вручную? Сравнивали с вашим?

Сравнивал, вот для примера запрос на отправку:


Request URL:http://google.com/sorry/Captcha?id=18065568466225803985&captcha=dedect&submit=Submit

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:GMAIL_RTT=18; GDSESS=ID=f3336de59869985c:TM=1350406255:C=c:IP=94.243.223.233-:S=ADSvE-du0efaimiFZkufk7bY1kyklifLNw
Host:google.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4

А вот ответ:


Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Length:322
Content-Type:text/html; charset=UTF-8
Date:Tue, 16 Oct 2012 16:52:47 GMT
Expires:Tue, 16 Oct 2012 16:52:47 GMT
Location:http://www.google.com/
Pragma:no-cache
Server:HTTP server (unknown)
Set-Cookie:GDSESS=ID=f3336de59869985c:TM=1350406255:C=c:IP=94.243.223.233-:S=ADSvE-ec0sbPLNb3DmSSczVvEaEXwg2DNg; path=/; domain=google.com; expires=Tue, 16-Oct-2012 19:50:55 GMT
X-Frame-Options:SAMEORIGIN
X-XSS-Protection:1; mode=block
platitude
На сайте с 16.10.2012
Offline
3
#13

А так:

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,'http://google.com/sorry/');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($curl,CURLOPT_HEADER,1);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl,CURLOPT_TIMEOUT,10);
curl_setopt($curl, CURLOPT_COOKIEFILE, '/tmp/cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, '/tmp/cookie.txt');
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com/');
curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate");
$response = curl_exec($curl);
//detecting captcha image path
preg_match("/<img src=\"(.*)\" border/", $response, $matches);
$img_path = 'http://www.google.com' . $matches[1];
preg_match("/id=(.*)&/", $matches[1] $matches2);
$captcha_id = $matches2[1];
//saving captcha image
file_put_contents('/tmp/'.$captcha_id.'.jpg', file_get_contents($img_path));
//sending captcha to Antigate
$text = Antigate::recognize(....);
//building url for submitting captcha
curl_setopt($curl,CURLOPT_URL,'http://www.google.com/sorry/Captcha?continue='.urlencode('http://www.google.com/').'&id='.$captcha_id.'&captcha='.$text.'&submit=Submit');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, '/tmp/cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, '/tmp/cookie.txt');
$http_headers = array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding: gzip,deflate,sdch',
'Accept-Language: en-US,en;q=0.8',
'Connection: keep-alive',
'Host: google.com',
'Referer: http://google.com/sorry/',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $http_headers);
$response = curl_exec($curl);
echo $response;

?

Парсер на заказ, индивидуальный подход к разработке. Качественно, удобно и просто. Связь через личные сообщения.
A0
На сайте с 15.10.2012
Offline
2
#14
platitude:
А так:

?

Тоже самое. Не думаю что дело в самом парсинге картинки с капчей, в опр. момент я делал проверку и смотрел что в сохраненной картинке и что приходило с antigate, код с капчи приходил верный.

platitude
На сайте с 16.10.2012
Offline
3
#15
avad0n:
Тоже самое. Не думаю что дело в самом парсинге картинки с капчей, в опр. момент я делал проверку и смотрел что в сохраненной картинке и что приходило с antigate, код с капчи приходил верный.

Откройте браузер + инструмент для просмотра HTTP заголовков и вручную отправьте данные с картинки. Проверьте все ли необходимые параметры передаются.

A0
На сайте с 15.10.2012
Offline
2
#16
platitude:
Откройте браузер + инструмент для просмотра HTTP заголовков и вручную отправьте данные с картинки. Проверьте все ли необходимые параметры передаются.

Пробовал. Открыл google.com/sorry, нашел ID каптчи. Для чистоты закрыл эту вкладку, открыл пустую и просто вставил сформированный запрос:

Результат - нормальная главная страница Google. Уже попробовал и ручной ввод текста с капчи, вместо antigate, но все равно та же ситуация.

platitude
На сайте с 16.10.2012
Offline
3
#17

Попробуйте добавить в оба запроса два, указанных ниже параметра и покажите вывод переменной $response для обоих.

Добавить:

curl_setopt($curl, CURLOPT_HEADER, 1);

curl_setopt($curl, CURLINFO_HEADER_OUT, 1);

A0
На сайте с 15.10.2012
Offline
2
#18
platitude:
Попробуйте добавить в оба запроса два, указанных ниже параметра и покажите вывод переменной $response для обоих.
Добавить:
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLINFO_HEADER_OUT, 1);

Спасибо, настройка полезная окалазась. Выяснилось что куки при обращении на google.com/sorry не приходят:

HTTP/1.1 503 Service Unavailable
Date: Wed, 17 Oct 2012 05:28:53 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Content-Type: text/html
Server: HTTP server (unknown)
Content-Length: 2559
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"><title>http://www.google.com/</title></head>
<body style="font-family: arial, sans-serif; background-color: £fff; color: £000; padding:20px; font-size:18px;" onload="e=document.getElementById('captcha');if(e)`e.focus();ñ">
<div style="max-width:400px;">
<hr noshade size="1" style="color:£ccc; background-color:£ccc;"><br>

To continue, please type the characters below:<br><br>
<img src="/sorry/image?id=847023329088665422&amp;hl=en" border="1" alt="Please enable images"><br><br><form action="Captcha" method="get"><input type="hidden" name="continue" value="http://www.google.com/"><input type="hidden" name="id" value="847023329088665422"><input type="text" name="captcha" value="" id="captcha" size="12" style="font-size:16px; padding:3px 0 3px 5px; margin-left:0px;"><input type="submit" name="submit" value="Submit" style="font-size:18px; padding:4px 0;"><br><br><br></form>
<hr noshade size="1" style="color:£ccc; background-color:£ccc;">

<div style="font-size:13px;">
<b>About this page</b><br><br>Our systems have detected unusual traffic from your computer network. This page checks to see if it&£39;s really you sending the requests, and not a robot. <a href="£" onclick="document.getElementById('infoDiv').style.display='block';">Why did this happen?</a><br><br>
<div id="infoDiv" style="display:none; background-color:£eee; padding:10px; margin:0 0 15px 0; line-height:1.4em;">
This page appears when Google automatically detects requests coming from your computer network which appear to be in violation of the <a href="http://www.google.com/accounts/TOS">Terms of Service</a>. The block will expire shortly after those requests stop. In the meantime, solving the above CAPTCHA will let you continue to use our services.<br><br>This traffic may have been sent by malicious software, a browser plug-in, or a script that sends automated requests. If you share your network connection, ask your administrator for help &mdash; a different computer using the same IP address may be responsible. <a href="http://www.google.com/support/bin/answer.py?answer=86640">Learn more</a><br><br>Sometimes you may be asked to solve the CAPTCHA if you are using advanced terms that robots are known to use, or sending requests very quickly.
</div>




IP address: 94.243.223.233<br>Time: 2012-10-17T05:28:53Z<br>URL: http://www.google.com/<br>
</div>
</div>
</body>
</html>

Через браузер тоже самое:

HTTP/1.1 503 Service Unavailable
Date: Wed, 17 Oct 2012 05:31:02 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Content-Type: text/html
Server: HTTP server (unknown)
Content-Length: 2561
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

Но! В браузере при обращении к google.com/sorry уже уходят куки:

GET /sorry/ HTTP/1.1
Host: google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: PREF=ID=dd5a27d6d3298b2a:U=88a3f3a449a081cf:FF=0:TM=1350406367:LM=1350412342:S=poWyfWZeZSEGwbrC; NID=64=d4IY9kkz2ANrj88kyPUKAlpKmf2vrUQ8tcMGO6nXC066NK4zgsZufLiD7nsNeg8zEqbmVTAyHGUJpKuJkzBZRconTRgKAF87zYYnh18ywGeV8zNum9ktFkvqT5ETc2rJ; GDSESS=ID=81d845b8131a7f2b:TM=1350451505:C=c:IP=94.243.223.233-:S=ADSvE-c5vFvS1QbJ02kFNQMiyj1kS-fm9g; GMAIL_RTT=684

И это при том, что я сижу через incognito window в Chrome. Откуда они берутся??

A0
На сайте с 15.10.2012
Offline
2
#19

Очевидно дело именно в куки т.к. если настроить в браузере не принимать куки то при отправке формы с капчей наблюдается такое же поведение - он просто не принимает правильно введенную капчу и снова редиректит на google.com/sorry

---------- Добавлено 17.10.2012 в 22:49 ----------

Ура, получилось! Оказалось при загрузке картинки google вместе с ней передает куки и если их нет, то отправка капчи перестает работать. Достаточно загрузить саму картинку капчи и обработать заголовки которые вернул вместе с ней сервер.

A0
На сайте с 15.10.2012
Offline
2
#20

Вот только новая проблема - после отправки капчи Google возвращает следующее:

<HTML><HEAD>

<meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>Redirecting</TITLE>
<META HTTP-EQUIV="refresh" content="1; url=http://www.google.com/search?q=durov">
</HEAD>
<BODY onLoad="location.replace('http://www.google.com/search?q\x3ddurov'+document.location.hash)">
Redirecting you to http://www.google.com/search?q=durov</BODY></HTML>

При обращении к этому адресу снова происходит редирект на капчу...

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий