Что делать с математической каптчей?
-
Присутствует такая каптча:
Нужно ее решить и нажать на кнопку, у каждой кнопки есть свой hash, но мне кажется что проще будет просто определить где на этих картинках правильный ответ и дать его. Как это реализовать? Вот в коде элемента отрывок: http://joxi.ru/vAWLljQFgOBalr
-
Первую капчу отправляете с пометкой математическая
Остальные как обычные
Сравниваете
-
Как заставить кликнуть на правильную?
-
@ls5stream
Еле нашел ее.
Проще в басе сохранить все варианты ответов. И делать поиск по картинке. Они не особо меняются. А первую да...отправлять с пометкой math
-
@forall Можешь тестовый скрипт нарисовать? Если не составит труда
-
@forall Не понимаю куда пометку math ставить
-
@forall
Эта капча генерируется. Собрать все ответы не получится.@ls5stream
Сперва разгадываем капчу выражение. Получаем ответ.
Затем поочереди разгадываем цифры. Как только получаем ответ по цифре, совпадающий с ответом на выражение, жмем по этой цифре.
И не понадобится запоминать хеши.Если пилишь на запросах, алгоритм будет чуть сложнее, но всё равно легкий.
-
@xclsv Разгадываю, получаю ответ 2+1=, как мне объяснить скрипту, что нужно выдавать 3 а не 2+1?
-
@ls5stream
eval js
-
-
@xclsv експрешн нужно ставить
-
-
@denanotherday said in Что делать с математической каптчей?:
@denanotherday said in Что делать с математической каптчей?:
@ls5stream експрешн нужно ставить
А теперь установите в переменную строку
1+2
и попробуйте получить результат
-
Для подобной строки (цифры от 1 до 8, сумма или разница) использую регулярку:
[^1-8]*([1-8])[^\+\-]*([\+\-])[^1-8]*([1-8]).*
с занесением GROUP1,GROUP2,GROUP3
В идельном случае в GROUP1,GROUP3 - цифры, в GROUP2 знак.
Но идеал бывает редко, XEvil часто такое гонит, что дофига доп. обработок приходится делать.
Подскажите, а где отметить капчу в качестве математической?
-
@denanotherday Не всегда. Попробуйте получить что то регуляркой в конструкторе или даже так через экшен. И пусть оно соответствует математике на все 100% вы поставьте полученное выражение. Будете удивлены. Выполнить код надежнее.
-
@vituskosoy Нигде. Это ваше действие. Если соответствует то... экшен if string_matches и ваша регулярка, если подходит под нее, извлекаем. Регулярку типа такой
[\s\S]*?(\d+(?:\-|\+|\*|/|x)\d+)[\s\S]*?
но это просто пример я не знаю что у вас там за капча и что приходит.
Данная берет цифру(сколько есть) любой знак из +,-,*,x./ и снова цифру(сколько есть).
Потом выполнить код [[результат]] = eval([[ваша капча]])
Запамятовал. Бас не примет если знак будет x, это будет ошибкой. Его нужно заменить на *. Это все есть в конструкторе. Заменить x (такой знак умножения) на * (js знак умножения)