Вытаскиваем картинку из ReCaptcha

Решил вот написать мунал о том как выдрать картинку из Recaptcha.

Сразу предупрежу, вытащить картинку из  рекапчи v2 не вышло, слишком эти гады намудрили с javoscript’ом, поэтому будем использовать Recaptcha v1 , это  таже сама капча что и v2, только отточена под старые версии браузеров, выглядит так

oldrecatpcha

Есть правда 1 минус.

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

В версии рекапчи v2 есть шанс на ошибку, тоесть можно ошибиться на 1-2 картинки, в упрошенной нет, тоесть вроде картинки выбраны и правильно, а рекапча возвращает  неудачу, это немного напрягает, так как приходится иногда вводить рекапчу несколько раз.

Ну поехали, далее в статье будут прилагаться заголовки + теги которые нужно парсить.

Первое что нам нужно это выдрать р_токен


Header += "GET /recaptcha/api.js HTTP/1.1\r\n";
Header += "Host: www.google.com\r\n";
Header += "User-Agent: Opera/7.50 (Windows ME; U) [en]\r\n";
Header += "Connection: close\r\n\r\n";

тут мы парсим rToken  recaptcha/api2/r20160502112552/

далее парсим основной токен, тут нужны переменные

CaptchaKey — уникальный ключ рекапчи

rToken — который мы спарсили

referer — и обязательно указать верный реффер

Header += "GET /recaptcha/api/fallback?k="+CaptchaKey+"&hl=ru&v=r"+rToken+"&t=0&ff=true HTTP/1.1\r\n";
Header += "Host: www.google.com\r\n";
Header += "User-Agent: Opera/7.50 (Windows ME; U) [en]\r\n";
Header += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
Header += "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
Header += "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
Header += "Referer: "+referer+"/\r\n";
Header += "Connection: close\r\n\r\n";

тут парсим текст
<label for=»response» class=»fbc-imageselect-message-text»>Выберите все изображения, где есть <strong>дорожные знаки</strong>.</label>

и токен изображения

<img class=»fbc-imageselect-payload» src=»/recaptcha/api2/payload?c=»imageToken«;

Следующий шаг, качаем изображение
Header += "GET /recaptcha/api2/payload?c="+imageToken+"&k="+CaptchaKey+" HTTP/1.1\r\n";
Header += "Host: www.google.com\r\n";
Header += "User-Agent: Opera/7.50 (Windows ME; U) [en] \r\n";
Header += "Accept: image/png,image/*;q=0.8,*/*;q=0.5\r\n";
Header += "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
Header += "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
Header += "Referer: https://www.google.com/recaptcha/api/fallback?k="+CaptchaKey+"&hl=ru&amp;v=r"+rToken+"&t=0&ff=true\r\n";
Header += "Connection: close\r\n\r\n";
</pre><pre></pre><pre>

После скачки изображения, нужно выбрать номера картинок(отсчёт начинается с 0) и отправить пост запрос

response - номера изображений.
data += "c="+imageToken+"&response=0&response=6&response=8";


Header += "POST /recaptcha/api/fallback?k="+SiteKey+"&amp;hl=ru&v=r"+rToken+"&t=0&ff=true HTTP/1.1\r\n";
Header += "Host: www.google.com\r\n";
Header += "User-Agent: Opera/7.50 (Windows ME; U) [en]\r\n";
Header += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
Header += "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
Header += "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
Header += "Referer: https://www.google.com/recaptcha/api/fallback?k="+SiteKey+"&amp;hl=ru&amp;v=r"+rToken+"&amp;t=0&amp;ff=true\r\n";
Header += "Content-Type: application/x-www-form-urlencoded\r\n";
Header += "Content-Length: "+QByteArray::number(data.length())+"\r\n";
Header += "Connection: close\r\n\r\n"; 

после получим окончательный токен, который уже будем слать пост запросом в форму.
<div class=»fbc-verification-token»><textarea dir=»ltr» readonly onclick=»this.select()»>EndToken</textarea>

 

Надеюсь описал доходчиво, если не понятно то думаю когда будете снифать заголовки сами — то уже будет легче.


			

4 thoughts on “Вытаскиваем картинку из ReCaptcha

    • Да, позавчера гугл добавил защиты от ботов)) Позже попробую решить эту проблему

  1. Приветствую, не получилось найти решение для получения изображения и т.д. ?

    На данный момент например для ВК (да и других сайтов) (ключ: 6Le00B8TAAAAACHiybbHy8tMOiJhM5vh88JVtP4c) данный способ не работает.

  2. Though it is true I enjoy your writing style, I don’t agree with your main point of view about this one. I do delight in your website nevertheless. ddakgfcddafd

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *