В этом мануале хотел бы предоставить своё решение FunCaptch'и на базе ZennoPoster. Так как сейчас поддерживаются только капчи, где нужно выбрать одну из шести картинок, начнем с них. В дальнейшем реализую и другие варианты (например, со стрелками), как только те будут добавлены в XEvil.
Прежде чем начать, хотелось бы сказать, что решение не полностью универсальное и, возможно, его нужно будет адаптировать под ваш сайт ввиду того, что могут изменяться элементы.
Тестирование будет проводиться на сайте Amazon.com.
Итак, рассмотрим пункты пошагово:
-
Загружаем необходимую страницу;
-
Инициализируем получение капчи (в нашем случае - нажатие кнопки);
-
Берем DOM-тело документа. Только в нем содержится наша картинка, закодированная в base64;
-
С помощью регулярного выражения выдергиваем картинку, обрезая все лишнее: (?<=<img\ src="data:image/jpeg;base64,).*(?="\ id="game_challengeItem_image"\ )
-
Из элемента с атрибутом "class", содержащим "Game__TextCenter" берем текст задания
-
Отправляем нашему XEvil'у запрос на создание задания. Не забываем передать параметр imginstructions

-
Делаем сплит и вытаскиваем ID задания
-
Получаем ответ
-
Выполняем C# код, который выбирает нужную нам картинку. В этом коде мы сделаем следующее:
Делаем Split ответа от XEvil;
Если нулевой индекс получившегося массива равен OK, то капча была решена успешно
Первый индекс этого же массива - номер картинки.
Делаем клик по картинке. Не забывайте, что в XEvil нумерация начинается с единицы, в то время, как в ZennoPoster с нуля. Поэтому нужно вычитать единицу.
-
Выполняем C# код, в котором сначала ждем 3 секунды. Этого времени хватает, чтобы перейти на следующий этап капчи ИЛИ получить ошибку ИЛИ получить успешное решение. Там же, проверка на то, решилась ли капча успешно. По факту этот и следующий пункт проверяет, решилась ли капча. Этот кусок точно нужно будет подкорректировать под ваш ресурс.
-
Если пункт 10 сообщил нам, что капча не решилась, проверяем наличие ошибки, сообщающей о том, что XEvil выбрал где-то неправильную картинку.
-
В случае, если есть сообщение об ошибке, перезапускаем челлендж путем нажатия на специальную кнопку и идем к пункту №3
12.1. В случае, если его нет, просто идем к пункту №3
-
В случае, если всё успешно - сообщаем об этом.

- Весь проект постарался закомментировать. Отладкой не занимался, данный манул лишь описывает общие черты. В идеале, еще обработать разного рода исключения, которые может вернуть XEvil при создании или решении капчи. Если вам покажется, что код - кривой, не ругайтесь, я самоучка.