Zennoposter русская капча. Как использовать специальные сервисы для распознавания капчей в zennoposter

Легким движением руки превращаем Zennoposter DEMO в практически полноценный Zennoposter Lite ​


Добрый день, уважаемые складчики,
Вашему вниманию предлагается авторский материал по расширению возможностей Zennoposter DEMO.


ZennoPoster это программа, предназначенная для автоматизации практически любых действий на любых интернет-сайтах. Она эффективно применяется для быстрого создания различных авторегеров, парсеров, постеров, чекеров и других вещей ограниченных вашей фантазией.

Как мы знаем ограничения у демо версии зеннопостера, это невозможность использовать прокси, отгадывать капчу и работа только в один поток.
У меня получилось решить проблемы с прокси и капчей, в итоге получаем почти zennoposter lite.
Почему почти?

Потому-что для использования прокси и капчи надо иметь права на изменения шаблона, чтобы внести в него необходимые изменения.​


Если у Вас покупной шаблон, без привязки, то его можно без проблем в течении непродолжительного времени (обычно около получаса) обучить работать на демо версии с использованием всех фишек zennoposter light.

Кому будет интересна данная складчина?

  1. Складчина расчитана в первую очередь на тех, кто пишет шаблоны сам, или хочет попробовать себя в этом увлекательном деле, но отпугивает момент, если работать без прокси и капчи то какой смысл возиться?
  2. Так-же складчина подойдет владельцам уже купленных версий зеннопостера, которым надо по каким-то причинам вынести некоторые шаблоны в отдельные вари, покупать каждый раз лайт версию за почти 90$, имхо, не вариант.

Меня на обучение демки сподвиг как раз второй вариант)))
Кроме одной многопоточной версии понадобилось еще штук 10 однопотоков в разных варях да еще и на разных машинах, брать 10 лайт версий для этого дела слишком накладно, а возможности демки ограничены.​


Так что-же именно я предлагаю?

Я предлагаю вашему вниманию свое решение для Zennoposter DEMO, которое позволяет использовать при работе с ним прокси , и сервисы автоматического распознавания капчи .
Это не хак программы, это дополнения которые вставляются в свой шаблон зеннопостера (или купленный если его можно редактировать) которые позволят реализовать эти возможности.

Реализация этих возможностей отличается от реализации в самом зеннопостере, но все отлично работает, плюс мы не привязаны к одному компютеру.
Даже мне, как человеку у которого есть купленный zennoposter, часто бывает нужда запустить какой-то отдельный инстанс в отдельной вмваре, покупать для этого лайт версию за 87$ это немного слишком.

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

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

Пример:


Что входит в комплект поставки?
  1. Шаблон с кодом позволяющий использовать прокси и сервис antigate, который довольно просто подключить к своему проекту.
  2. Сторонняя программа для реализации некоторых возможностей (там где без нее не обойтись).
  3. Инструкция по использованию и встраиванию кода и программы в ваш шаблон.
  4. Всесторонняя помощь и консультации по встраиванию кода в ваш шаблон, при необходимости модернизация кода.
В данный момент написано решение для сервиса ANTIGATE, если складчина будет пользоваться интересом, сделаю и для других сервисов, каких попросите.

P.S. Демо версию желательно (но не обязательно) запускать на виртуальной машине, т.к. для работы некоторого функционала надо будет использовать стороннюю программу.
P.P.S. Каждый выданный шаблон и инструкция к нему буду уникализированны, чтобы отследить тех кто попробует слить в тему в паблик.

Введение


Приветствую всех.
Ни для кого не секрет, что 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 (необходимо только вставить шаблон и наслаждаться его работой).

Распознавание каптчи в программе можно организовать несколькими способами - вручную, через сервисы ручного распознавания, либо написать свой модуль распознавания каптч и распознавать через него.
Если вы хотите использовать сервисы распознавания, вам необходимо в настройках программы ввести ваши логин-пароль, или ключ для доступа к сервису в специально отведенные поля. Также в параметрах действия распознавания каптчи нужно выбрать модуль распознавания, с которым будет работать проект. Выделите в вашем проекте такое действие, и откройте его свойства (двойным кликом). В открывшемся окне из выпадающего списка выберите нужный модуль.
Если требуется, на вкладке «дополнительно» укажите его параметры (чаще всего параметров нет). Параметры уточняйте на сайтах сервисов. Параметры нужны тогда, когда, например, у вас математическая каптча, т.е. нужно ввести не 7+5 , а сумму 12, еще это касается рекаптчи или каптч с цифрами, также, когда каптча регистрозависимая, тоже нужно это указывать в параметрах.
Бывает, что каптча состоит из нескольких картинок, тогда их можно объединить, чтобы не тратиться на распознавание отдельных частей. Для объединения каптч, если вы не объединили их при записи шаблона, нужно в окне свойств элемента каптчи установить флаг «Склеивать каптчи» и у последней каптчи, которую нужно склеить, установить флаг «Последняя каптча».


Текстовые каптчи

Довольно часто, особенно на слабозащищенных ресурсах, встречается текстовая каптча. Отличается она от простой (графической) каптчи тем, что не нарисована на картинке, а просто написана текстом. Такую каптчу, отсылать, в принципе, никуда не нужно, ее можно взять (выпарсить) прямо из текста страницы. Чтобы выпарсить каптчу из текста страницы нужно взять текст страницы с помощью действия «Данные» из категории «Вкладки», выбрать текст страницы и, отметив «парсить результат», в параметры вписать регулярное выражение для парсинга страницы.


Математические каптчи

Также встречается математическая текстовая каптча. Эта та же текстовая каптча, только на ней обычно пишут математическое выражение типа 58+63. Можно превратить этот текст в картинку и отправить на распознавание, а можно использовать JavaScript. Для решения каптчи можно использовать действие «JavaScript» из категории «Свой код». В поле для кода можно вставить ссылку на переменную, в которой содержится выпарсенное выражение, например 58+63 и после выполнения действие вернет результат 121.


Flash каптча и каптча из любого другого элемента

Если вам встретится flash каптча, ее можно превратить (отрендерить) в обычную картинку и также отправить на распознавание. Найдите этот элемент в дереве элементов, правой кнопкой мыши вызовите меню для выбора действий над этим элементом. Выберите там пункт «Это каптча»… все!

Как обрабатывать ошибки распознавания CAPTCHA

Для тех, кто работает с программой ZennoPoster, сервис РуКапча - это незаменимый помощник для автоматического разгадывания капч, особенно в шаблонах от ZennoArt.ru.

Если с разгадыванием простых капч все понятно, то с ReCaptcha от Google дела обстоят серьезней. Такие капчи эффективны и сервисы массово внедряют ее на свои страницы. Ещё очень интересно то, что гугл недавно выпустил Invisible ReCaptcha. Это такая же рекапча, но суть её в том, что она невидимая изначально, и если история IP и вообще хождений по интернету у вас есть, то вы ничего и не заметите. А если вы запустили пустой браузер на только что установленной операционке - вам скорее всего (но не всегда, если IP чистый у провайдера) нужно будет как и обычно отгадать рекапчу. Суть тут сводится к тому, что как раз таки нужно хранить историю и "гулять" по интернету ботами, чтобы не было проверок бот ты или нет. Тогда почти всегда формы будут сразу сабмитится, но определенное количество, т.к. если постоянно сабмитить инвизибл рекапчу, то она рано или поздно покажет окно, где нужно выбрать что-то. И вот как раз опять же от этого всего геморроя спасает рукапча, не нужно никаких "гуляний" по интернету - работники на сервисе всё сделают за вас. И за вменяемые деньги.

Еще полгода назад, распознавание reCaptcha на зеннпостере - являлось острой проблемой. Корректно работающего модуля для зенки попросту не было. Но время идет и на сегодня есть как минимум два актуальных способа разгадывания ReCaptcha , о которых стоит рассказать.

Первый способ: Встроенный модуль разгадывания recaptcha 2.

Как интегрировать при создании шабона:

1) В ProjectMaker переходим на вкладку "Старт" > Выбираем пункт "Настройки" > Выбираем раздел "Капчи" > вставляем api-ключ от Рукапчи (берем его на странице ) в соответствующее поле:

После добавления ключа - должен отобразится баланс в поле ниже, там должна показаться именно та сумма, что находится у вас на аккаунте. Если баланс не появился, то нужно проверить системный файл hosts, там могут остаться записи от CapMonster/XEvil, если вы его ранее запускали и там была включена "Эмуляция сервиса Рукапча"

2) Теперь можем вставить экшен распознования. На вкладке "Запись и отладка" добавляем действие "Распознать ReCaptcha2".

3) Настраиваем экшен:

  • В модуле распознавания выбираем значение RuCaptcha.dll
  • Прокси нужны с доступом по логину-паролю, если прокси будут с доступом только по айпи и айпи будет прописан тот, где крутится зенка, то не получится использовать такие прокси.

"Сейчас наша реализация такова, что рекапчу работник решает с одного IP, а проходите Вы её с иного IP. Теоритически гугл может это выследить и заблокировать Ваш IP, через который Вы работаете. Поэтому желательно вместе с капчей отправлять нам адрес прокси, через который работник загрузит капчу. Наши работники подключаются к Вашем прокси через наш промежуточный сервер и не видят авторизационные данные от Ваших прокси. "

Поэтому активируем галочку "Использовать прокси проекта".

  • Далее нам нужно указать, как будет находится сам модуль рекапчи на странице. Если проект несложный, то спокойно ставим параметр "Во вкладке".

Но бывают случаи, когда нужно прописать алгоритм парсинга SiteKey вручную (как это сделать, читайте в мануале:). Для этого меняем значение на "Через SiteKey", парсим нужные параметры и вставляем через переменные в поля:

Не забываем указать в свойствах действий переменную, в которую будет записываться результат разгадывания рекапчи. И на этом настройка для первого способа завершена.

Второй способ: ReCaptchaGnizer - бесплатный шаблон для решения Google ReCAPTCHA2 со 100% результатом.

Решение идет в виде отдельного шаблона, который с легкостью встраивается через связку "Проект-в-Проекте". Что умеет данный модуль:

  1. Разгадывание ReCaptcha через барузер;
  2. Разгадывание ReCaptcha с автосабмитом (отправка рекапчи в форме без кнопки "Отправить");
  3. Разгадывание ReCaptcha без использования браузера на GET/POST шаблонах;

Преимущества:

  1. Решение прекрасно работает с сервисом RuCaptcha, так же ведется разработка для англоязычного сегмента 2captcha.com .
  2. Шаблон полностью написан на C#, поэтому он гарантирует высокую скорость работы и работоспособность на большинстве версий ZennoPoster.
  3. Обработка всех ошибок (валидация данных/ответы сервисов распознавания). Официальный кубик разгадывания ReCaptcha может выдать какую-то ошибку, по которой трудно понять, что исправлять. В этом шаблоне все ошибки прописаны человеческим языком и в абсолютно любой ситуации можно посмотреть в лог и определить проблему.
  4. Сделан подсчёт времени решения рекапчи.
  5. Возможно получение прокси текущего инстанса (в каждом тестовом шаблоне прилагается кубик для этого).
  6. Шаблон умеет парсить sitekey 3 различными способами, т.к. на разных сайтах он задается по-разному.
  7. Если вдруг на текущей странице нет рекапчи (например, сдох прокси), то шаблон оповестит об этом.
  8. Возможность встроить для проекта на ZennoBox;

Как использовать:

  1. Прописать API-ключи к RuCaptcha в настройках ZennoPoster
  2. Добавить кубик "Проект в проекте" и выбрать шаблон "ReCaptchaGnizer.xmlz"
  3. Сделать "сабмит" (отправку) формы, т.к. на разных сайтах это происходит по-разному, из-за чего это НЕ реализовано в данном шаблоне.

В случае, если что-то пойдет не так - шаблон выдаст ошибку с детальным описанием.

Можно протестировать!

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

  • Как работает браузерный шаблон разгадывания ReCaptcha (test_project.xmlz);
  • Как работает разгадывание ReCaptcha с автосабмитом (test_project_autosubmit.xmlz);
  • Как работает разгадывание ReCaptcha на GET/POST запросах (test_project_GETandPOST.xmlz);

Что еще нужно знать о ReCaptcha?

Примечание от Lord_Alfred:

У рекапчи есть настройки защиты от простых до сложных (3 градации), и нам не известно какие настройки выбраны на сайте, поэтому иногда получается так, что на рукапче какая-то из капч решается очень долго или вообще бывает, что в итоге выходит не решившись - это очень часто из-за двух причин:

а) сервис может быть загружен

б) у сайта стоят максимальные настройки защиты

в) у текущего работника на рукапче не выполнен вход в gmail-аккаунт в их программе или он очень часто решал до этого рекапчу, поэтому у него всё усложнилось (в случае если один работник не сможет решить рекапчу и пропустит её - сервис сам тут же передаст решение другому работнику)

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

РуКапча опубликовали график текущей скорости распознания (Распознание \ статистика сервиса \ среднее время распознания). И если оно у вас выше - вам не повезло, у вас капчи повышенной сложности. Если у вас ниже - повезло, у вас простые.

Но потаённый смысл ReCaptcha - это хитрость на уровне искусственного интеллекта. Она следит за тем сколько ты решил до этого капч, поэтому работникам иногда приходится на сайте с простой рекапчей разгадывать её подолгу, т.к. они уже "запачкали" свою историю и хитрый гугл за место простой рекапчи начинает подсовывать им посложнее. Нам тут ничего не сделать и не обхитрить его, но если бы мы решали рекапчу сами (кликали мышкой сами или делали это через капмонстр) - у нас было бы ОЧЕНЬ много проблем из-за этого. По ощущениям и субъективному мнению - гугл больше всего смотрит на "историю" IP, которую он хранит у себя. Если использовать бесплатные прокси или прокси, которыми пользуются множество людей (платные пакетные прокси), то очень часто попадаются ситуации, что даже если пробовать решить ReCaptcha руками в ProjectMaker, то гугл будет подсовывать всё новые и новые картинки и так может продолжаться раз 10-15, пока он точно не удостоверится, что это не бот.

Для того, чтобы решать рекапчу через CapMonster - нужны приватные прокси, которыми пользуетесь только вы и ранее ими или не пользовались для этих целей или хотя бы не "убили" их. Такие найти не просто, стоят они от 50р / 1 шт. в месяц, что крайне дорого, если нужно покупать по 1000 штук (чтобы хоть как-то разнообразить их при работе с каким-то сайтом). К тому же, прокси - это не единственная проблема, их, к сожалению, очень много: нужно на каждой прокси иметь по залогиненному аккаунту гугла с историей просмотров обычных сайтов и с использованием сервисов от гугла, чтобы ReCaptcha решалась или кликом на галочку или выдавала очень простые варианты. Нужно иметь "хороший" для гугла UserAgent, причем не просто иметь его, а по максимуму сэмулировать похожесть на него: прописать BuildID, эмулировать в разных профилях различные наборы браузерных плагинов, mime-типов, часовые пояса чтобы были именно для того прокси, который используется, да и кучу других параметров, про которые достоверно никому не известно (разве что гугл знает что именно он смотрит). Вообщем, если коротко - это страшная головная боль, причем гугл каждый месяц закручивает гайки всё сильнее. А рукапча спасает от этого всего: за каких-то 16 копеек вам решат рекапчу без таких сложных заморочек и исследований "что ещё нужно сэмулировать, чтобы выглядеть как реальный пользователь, а не ZennoPoster".

Встречаются сайты, где рекапча подргужается хитрым образом и эти способы не могут отправить форму или бывают какие-то дополнительные способы валидации на сайте, которые прикручены в рекапчу. Например, рекапча позволяет добавить вызов функции по событию, когда она решена - там можно добавить заполнение какого-то скрытого поля в форме, и при дальнейшей валидации - оно будет проверяться. Если решать рекапчу с помощью этих способов, что выше - то там ответ от рекапчи просто вставляется в поле у неё, а событие это не вызывается (если не прикручен автосабмит и если он сработает). Если автосабмит не сработал или нет возможности его выполнить, то проще всего отсниффать отправляемый запрос и сэмулировать отправку через Get/Post режим (у ReCaptchaGnizer есть тестовый проект, в котором можно посмотреть как это делать).

В общем, ReCaptcha хоть и сложная преграда для автоматизации. Но все обходится и все решаемо. А сервис РуКапча помогает нам в этом.