Recaptcha 2 vs Zennoposter или "как бот стал человеком"

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Введение

Приветствую всех.
Ни для кого не секрет, что Recaptcha 2 за последний год стала очень популярной и практически нет никого, кто бы с ней не сталкивался. В нашем нелегкой работе приходится сталкиваться с ней при создании проектов: парсинге, создании регеров, брутеров, чеккеров и множестве других задач. И особой проблемой является написание проекта (кода/сниппета) для решения капчи.
Совсем недавно я занимался парсингом данных с одного небезызвестного ресурса с помощью несложной программы. И все шло отлично, пока сайт, с которого парсит программа не решил ввести защиту от ботов - Recaptcha. Я естественно начал искать подходящие решения для того, чтобы дополнить мой бот, но программистов, знакомых с работой Recaptcha было мало, а те кто знали как решить программу, предлагали медленные решения с Imacros или PhantomJS с использованием прокси или т.д. Но осложнялось всё тем, что моей главной целью было стабильное и быстрое решения Recaptcha, при этом изменение ip адреса и использование прокси запрещалось.
Всё изменилось, когда я открыл для себя Zennoposter. Прочитав основные функции и принцип работы Zennoposter я понял, что смогу добиться того, чтобы Recaptcha принимала написанный мною проект за человека и добиться максимально быстрого решения данной капчи.

Сбор данных для отправки на сервис распознавания Rucaptcha
и эмуляция нажатия кнопок

Первым делом я решил, что для качественной эмуляции человека нужно сэмулировать правильное нажатие кнопок "Я не робот", "Подтвердить" и "Обновить" и поставил эмуляции на уровень "качество".
Далее необходимо было добавиться время задержки после нажатия кнопки "Я не робот". Я долго испытывал тестовую версию Recaptcha (www.google.com/recaptcha/api2/demo) и убедился, что время может колебаться с 1 до 2 сек (редкий вариант). Поэтому поставил около 1 сек и потом добавил экшен проверки того, загрузились ли изображения или разгадка не требуется и капча разгадана, если оба варианта не сработали, то идет ожидание 300 мс и проверка идет заново.



Поиск задания для решения оказался простым и я извлек его обычными регулярными выражениями.
Аналогично я решил проблему с тем, чтобы определить тип разгадываемой Recaptcha:
1) с довыбором изображений;
2) без изменяющихся картинок.
Большой проблемой было получение изображений для отправки на сервис распознавания. Поначалу я собирался извлекать сами ссылки, сохранять их и отправлять для разгадки. Но если попадается капча, в которой изменяются изображения, то они шли отдельными файлами и склейка изображений оказалась бы проблематичной. Поэтому я выбрал для себя вариант со скриншотом страницы, правильно задал все границы и всё работало отлично, пока не стал применять проект на своей ссылке для парсинга и в итоге оказалось, что экшен скриншота иногда неправильно определяет границы страницы и при всем желании не может сделать скриншот капчи, если она выйдет за изначальные границы страницы. Вследствие этого я использовал модуль CaptchaSaver для определенного элемента страницы и стал получать таким образом изображения для отправки на сервис.
Определение размера капчи (3*3,4*4 или 2*4) не составляет труда и эти параметры нужны будут в дальнейшем для отправки на сервис распознавания Rucaptcha и наложения сетки.

POST и GET
Так как стандартный модуль от Zennoposter неудобен для задания сложных запросов с отправкой файлов, сохраненных в какой-либо папке и точным заданием промежутков времени между запросами на сервис распознавания, то я использовал экшены POST и GET запросов. Также благодаря ним можно делать по несколько POST запросов, чтобы увеличить точность и время распознавания, что я и использовал в одном из своих шаблонов.

Решение капчи с изменяющимися изображениями

Поскольку решение такого вида капчи оканчивается тем, что подходящих изображений не остается, то я искал сервис распознавания, который бы позволил мне реализовать данную функцию в шаблоне и остановился на Rucaptcha. Мне пришлось хорошенько обдумать свой шаблон таким образом, чтобы после каждого разгадывания заново отправлялось изображение и при последующем разгадывании позволялось нажимать только на те изображения, которые изменились. Таким образом процент правильно решенных капч повышался.
Но я решил связаться с командой Rucaptcha и предложил им свой вариант решения, который они вскоре реализовали у себя на сервисе. Суть его такова: вводится дополнительный параметр previousID, который закрывает изображения, на которые предлагал нажать предыдущий работник. Если подходящих изображений нет, то работник отправляет специальный параметр, что изображения закончились и шаблон нажимает на кнопку подтвердить.
Решение капчи без изменяющихся изображениями не составляет труда и её отправка практически аналогична (не отправляются параметры previousID и can_no_answer).

Проверка дополнительных ошибок после нажатия "Подтвердить"
Ошибки решении могут остановить работу шаблона или выдать Bad end, поэтому после нажатия кнопки "Подтвердить" идет проверка наличия текста "Выберите все совпадающие изображения" и "Просмотрите также новые изображения" и в случае их присутствия шаблон обновляет изображения и всё идет по новому кругу.

Результат работы шаблона

Немногие знают, что у Recaptcha 2 есть несколько уровней защиты от ботов и самая высокая представлена на странице Demo версии Recaptcha 2 (http://www.google.com/recaptcha/api2/demo). Я сотни раз запускал свой шаблон и много раз его изменял. Всё чаще перед каждым запуском шаблона гугл отправлял мне капчу, которая не требовала довыбирать изображения. Пару раз даже гугл пропустил мой проект без какого-либо задания.
Затем я решил, что настало время запустить проект для сайта, с которого я парсил данные. Вдобавок я использовал гугловскую почту, что положительно сказывалось на моем проекте. Результат не заставил себя ждать и при нечастом использовании (раз в пару часов решение Recaptcha 2) гугл зачастую меня пропускал без задания или отправлял мне простые картинки.

Тонкости работы с шаблоном и почему я представляю 2 шаблона
Так как необходимо было самое быстрое решение, то я отправляю сразу 5 POST запросов на Rucaptcha. Из них выбираются первые 2 совпадающие и потом уже производится необходимое действие. Если 2 совпадающих вариантов не находится, то проект выбирает те нажатия на изображения, которые предлагались 2 и более раз. Таким образом решаются следующие задачи:
1) увеличивается точность решения;
2) увеличивается скорость решения;
3) минимизируется вариант, что потребуется обновлять капчу.
Помимо этого я представляю вариант с одним POST запросом для тех, кому описанный выше способ является затратным.
Для запуска шаблона надо ввести свой ключ Rucaptcha в указанный на проекте экшен рядом с заметкой.
Иногда бывают ресурсы, на которых придется изменить параметр проверки решения капчи с role="checkbox" aria-checked="false" на role="checkbox" aria-checked="true" и поменять стрелки местами у экшена условия '{-Variable.proverka-}' == '' (возле заметки "Проверка необходимости решения - см. картинку выше). Если стоит "false", то капча не решена, "true" - решена. Я уже сталкивался с обоими вариантами, поэтому тут универсальный не придумаешь.
Если хотите использовать вариант рекапчи без изменяющихся изображений, то после положительного результата надо добавить экшен обновления (до 3 раз рекомендую) и Bad end в случае, когда попытки закончатся (можно использовать экшен условия '0' == '1').
Я выложу 2 варианта шаблонов:
1) с одним POST запросом;
2) с 5 POST запросами для более быстрого и точного решения, который сам использую.

Заключение и выводы
Таким образом, мы в вами разобрали принцип работы шаблона Zennoposter для решения Recaptcha 2 с помощью сервиса распознавания Rucaptcha. Данный шаблон содержит в себе примеры работы с POST и GET, качественной эмуляции кликов, правильным сохранением изображений и, что самое главное, решением Recaptcha 2.
Я думаю, что этот шаблон пригодится многим пользователям программы, так как является готовым решением Recaptcha 2 (необходимо только вставить шаблон и наслаждаться его работой).
 

Вложения

Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
5 926
Благодарностей
6 389
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Возможно напишу решение для mp3 капчи с помощью сервиса Rucaptcha, если найду время на это и решение будет востребовано.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 682
Баллы
113
спасибо!
альтруизм во все времена в почете, всегда радостно видеть людей, которые могут поделиться хорошими штуками безвоздмездно..
 
  • Спасибо
Реакции: deopl и AlexGoodWeb

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
Вашу статью запросто можно и на конкурс использовать. Спасибо Вам за хорошую работу
 
  • Спасибо
Реакции: AlexGoodWeb

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Вашу статью запросто можно и на конкурс использовать. Спасибо Вам за хорошую работу
Я отправлял тему на одобрение администрации, но мне не дали "добро" на публикацию в 5 конкурсе статей :(
 
  • Спасибо
Реакции: Sz5

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Я отправлял тему на одобрение администрации, но мне не дали "добро" на публикацию в 5 конкурсе статей :(
я объяснил почему.
1) шаблон нужно постоянно поддерживать и после конкурса вряд ли кто будет этим заниматься.
2) у нас есть свое решение для этих каптч.

прием статей на конкурс это решение наше и не являестя предметом споров и обсуждений. Попрошу на эту тему полемику не разводить, иначе я просто почищу ее.
 

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
УРАААА ! БОЛЬШАЯ БЛАГОДАРНОСТЬ АВТОРУ ЗА ДАННЫЙ ПОДАРОК ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ ZP ОТ ДУШИ !
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Согласен) Автор молодец)
 

punipula

Client
Регистрация
19.10.2012
Сообщения
12
Благодарностей
1
Баллы
3
Как я понял на рукапчу не пишет текст задания.
У меня на капче витрины, а рукапча шлет постоянно, что картинок нет или тыкают на воду.
Чего делать с этим?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Я проверял оба шаблона и они оба шлют правильно задания. Присылается задание или нет можно легко проверить войдя в аккаунт рукапчи и посмотреть на сайте список загруженных капч. Не все работники знают о наличии кнопки "нет подходящих изображений", поэтому когда остается мало изображений нажимают на 1-2 оставшихся и в результате капча оказывается распознана неправильно. Чтобы повысить точность я использовал шаблон с 5 POST запросами.
Кстати, насчет витрин могу сказать, что на любом сервисе распознавания процент их успешного разгадывания низкий из-за того, что работники плохо знают что такое витрина и у самого гугла некоторые изображения без витрин тоже считаются витринами.
 
  • Спасибо
Реакции: LightWood и alekwuy

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Если хотите обойтись без проекта в проекте, то переименуйте все переменные и списки из моего проекта (можно добавить к каждой переменной и списку спереди текст "recap"), создайте в своем основном проекте 4 списка с теми же именами, выделите все элементы в проекте рекапчи, скопируйте их и вставьте в свой проект.
 
  • Спасибо
Реакции: LightWood

punipula

Client
Регистрация
19.10.2012
Сообщения
12
Благодарностей
1
Баллы
3
Я проверял оба шаблона и они оба шлют правильно задания. Присылается задание или нет можно легко проверить войдя в аккаунт рукапчи и посмотреть на сайте список загруженных капч. Не все работники знают о наличии кнопки "нет подходящих изображений", поэтому когда остается мало изображений нажимают на 1-2 оставшихся и в результате капча оказывается распознана неправильно. Чтобы повысить точность я использовал шаблон с 5 POST запросами.
Кстати, насчет витрин могу сказать, что на любом сервисе распознавания процент их успешного разгадывания низкий из-за того, что работники плохо знают что такое витрина и у самого гугла некоторые изображения без витрин тоже считаются витринами.

вот и так у меня начинает слать нонстоп, все 5 картинок отвечают или нет картинки, или тыкают на воду\траву.
Просто в других проектах, которые выкладывали, слали картинки с заданием на русском, для этого как я понял и использовали рукапча, т.к. там русские работники.

Как работникам рукапча понять, что именно нужно выбрать, если нет текста с заданием?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

вот и так у меня начинает слать нонстоп, все 5 картинок отвечают или нет картинки, или тыкают на воду\траву.
Просто в других проектах, которые выкладывали, слали картинки с заданием на русском, для этого как я понял и использовали рукапча, т.к. там русские работники.

Как работникам рукапча понять, что именно нужно выбрать, если нет текста с заданием?
Текст задания записывается в переменную textinstructions и затем отправляется на сервис. Сейчас скачал опубликованные шаблоны, добавил ключ рукапчи, запустил и все хорошо разгадывало. Если у вас ошибки, то уж точно не из-за проекта, а из-за того, что работники допустили ошибку сами.
А разницы не имеет на каком языке слать, так как у рукапчи есть свой комплект выражений для текстовых заданий Рекапча 2, который переводится с русского на английский и наоборот в зависимости от удобного для работника языка.
 
  • Спасибо
Реакции: LightWood

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Я же описал в шапке темы принцип работы: в первый раз отправляется картинка, работник выбирает несколько изображений, на которые нужно нажать, во второй раз работнику уже доступными для нажатия будут только те, на которые предложил нажать 1 работник, так как только они меняются. Затем в 3 раз уже доступными будут предложенные варианты от 2 работника и т.д. Таким образом, если работник ошибься и не выбрал нужное изображение, то следующие работники уже не смогут отправить то, что нужно на него нажать, так как для работников это изображение уже будет скрыто. Но гугл прощает 1-2 ошибки, поэтому даже если работник ошибься, то дальнейшие работники смогут разгадать капчу до конца и обновлять её не потребуется.
 
  • Спасибо
Реакции: LightWood

ramzes

Client
Регистрация
04.09.2014
Сообщения
19
Благодарностей
4
Баллы
3
Спасибо автору за труды жалко что не допустили статью на конкурс
 
  • Спасибо
Реакции: deopl и AlexGoodWeb

Dolph

Client
Регистрация
25.11.2013
Сообщения
67
Благодарностей
50
Баллы
18
Как я понял на рукапчу не пишет текст задания.
У меня на капче витрины, а рукапча шлет постоянно, что картинок нет или тыкают на воду.
Чего делать с этим?
Зайдите в загруженные изображения. Там текст задания есть?
Проверьте, что у вас в настройках не стоит "приоритет параметров API = из личного кабинета"
 

Narcanes

Client
Регистрация
14.02.2012
Сообщения
18
Благодарностей
6
Баллы
3
2) у нас есть свое решение для этих каптч.
Добрый вечер, понимаю что решение которое приняли Вы не обсуждается, но может команда попробует прикрутить распознавание Recaptcha 2 в штатный функционал зеннопостера с использованием сторонних сервисов? Ведь другие капчи мы гадаем и антикапчей и рукапчей и прочими сервисами. Что мешает сделать поддержку рекапчи2 от разработчиков(а не через разные c# и прочие бубны)? Она появилась не день и не неделю назад, с ней давно идут войны. Я как не сильно активный пользователь не вижу смысла покупать ваш продукт капмонстр, но и танцы с бубном вокруг этой капчи никакого удовольствия не приносят. В итоге приходится приходится пользоваться платными альтернативными сервисами.
Заранее большое спасибо за ответ.
 
  • Спасибо
Реакции: Marcelo, deopl и ramzes

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43
Amyboose КРАСАВЕЦ! Качай его ребята )) Не крохобор! Взял да и подарил людям огонь.
Тестировал оба шаблона: оба щелкают рекапчу как орехи. Причем достал из под полы вхлам заезженные прокси, которые я как только включаю мне гугл звонит, мол выруби своих ботов! Рукаим их уже задолбаешься разгадывать, а шаб разгадал. Побольше бы таких людей!
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Amyboose КРАСАВЕЦ! Качай его ребята )) Не крохобор! Взял да и подарил людям огонь.
Тестировал оба шаблона: оба щелкают рекапчу как орехи. Причем достал из под полы вхлам заезженные прокси, которые я как только включаю мне гугл звонит, мол выруби своих ботов! Рукаим их уже задолбаешься разгадывать, а шаб разгадал. Побольше бы таких людей!
Ну теперь по крайней мере на дорогие прокси раскошеливаться не придется :-)
 
  • Спасибо
Реакции: LightWood

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
186
Благодарностей
24
Баллы
18
Спасибо больше) в каком-то топике читал про то что автор выложит на конкурс статью, потом расстроился не увидев ее.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Если у кого-то неправильно сохраняет картинку (проверьте её в папке img внутри папки проекта), то поменяйте в экшене CaptchaSaver номер совпадения с 0 на другой (протестируйте 1, 2 и т.д.). Обычно первое или 2 совпадение срабатывает.
 
  • Спасибо
Реакции: LightWood

cobra369

Client
Регистрация
13.01.2016
Сообщения
35
Благодарностей
5
Баллы
8
Потерто...
 

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43
У рекапчи видимо есть спец настройки, на сайте теста гугла проект капчу гадает легко, но на некоторых сайтах та же рекапча с того же прокси не разгадывается ни в какую, попадает в бесконечный цикл разгадывания новых заданий, пока не уничтожит весь баланс на рукапче. Если бы в проект добавить проверку на количество разгадываний и после n-го кол-ва попыток разгадывать капчу через аудио на том же рукапче! Тогда шаблон был бы реально непобедим!
 
  • Спасибо
Реакции: AlexGoodWeb

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Да гугл всякое мог придумать, но мне нужно знать подробнее как именно не разгадывает. У вас после каждой разгаданной рекапчи пишет "Нужно выполнить несколько заданий" и так до бесконечности? Ещё вопрос: вы запускаете в многопотоке и какой из 2 шаблонов?
 
Последнее редактирование:
  • Спасибо
Реакции: LightWood

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43
Пробовал в один поток, шаблон однозапросный. Да, бесконечно "Нужно выполнить несколько заданий"
 

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Пробовал в один поток, шаблон однозапросный. Да, бесконечно "Нужно выполнить несколько заданий"
Ну люди же как-то разгадывают её сразу. Может дело в том, что у гугла самая высокая защита от ботов стоит как раз на вашем сайте и ошибившись хотя бы в 1 изображении гугл уже считает вас ботом и шлет по несколько заданий, чтобы в 2 подряд вы не сделали ни 1 ошибки?
Попробуйте вручную раз 10 поразгадывать и проверьте степень защиты от ботов, может просто стоит сразу тогда через аудио гадать.
 
  • Спасибо
Реакции: LightWood

vvitus

Client
Регистрация
18.05.2016
Сообщения
24
Благодарностей
1
Баллы
3
Ну люди же как-то разгадывают её сразу. Может дело в том, что у гугла самая высокая защита от ботов стоит как раз на вашем сайте и ошибившись хотя бы в 1 изображении гугл уже считает вас ботом и шлет по несколько заданий, чтобы в 2 подряд вы не сделали ни 1 ошибки?
Попробуйте вручную раз 10 поразгадывать и проверьте степень защиты от ботов, может просто стоит сразу тогда через аудио гадать.
amyboose ,Скиньте ваш контакт в личку
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)