Кликабельная капча
-
Подскажите, могу ли я значение капчи "3" (третий квадрат для клика)
установить как имя переменной, что бы в дальнейшем, использовать значение переменной для "Кликнуть на элемент"? Посоветуйте как реализовать.
-
если в БАС варианты ответов отображаются в виде :nth-child(4), то вместо цифры можно подставить ответ_капчи+1, чтоб совпало с этой цифрой.(но это неточно:)
-
@denanotherday ответ капчи будет сразу записан в переменной капча_результа, как уже выше ответили нужно подставлять число в селекторе как порядковый номер элемента. Это будет работать если вы сами решаете капчу и в поле ответа укажите "3". А если хотите что бы какой-то сервис решал капчу, то тут вы будете получать от сервиса не порядковый номер, а результат капчи (судя по всему вы это и хотите сделать). В таком случае можно попробовать способ который кажется предлагал support - узнать код base64 этих блоков с ответами и через условие кликать на нужный блок. То есть в функции будет 9 или 10 сравнений с переменными, если пришел ответ "1" - найти переменную с base64 кодом блока ответа и кликнуть на этот блок. Как то так
-
@venom777 А как по коду base64 узнать, что изображено, и совпадает ли нарисованная цифра с ответом капчи?
-
@MAKAR @denanotherday по идее так:
Узнать base64 для каждой цифры блока (скорее всего от нуля до девятки)цифра 0 | base64_code_block0
цифра 1 | base64_code_block1
цифра 2 | base64_code_block2
цифра 3 | base64_code_block3
цифра 4 | base64_code_block4
цифра 5 | base64_code_block5
цифра 6 | base64_code_block6
цифра 7 | base64_code_block7
цифра 8 | base64_code_block8
цифра 9 | base64_code_block9Вот типа таких данных должны быть готовые в басе, что бы знали base64 для каждого блока с циферкой
- Далее приходит ответ от сервиса, например число 5
- Тогда мы идем и получаем из уже сохраненной выше таблички base64 (по факту у нас будут переменные) код для цифры 5.
- Теперь на сайте каждый вариант ответа перевести в base64 и как-то записать что чему соответствует. Например воспользоваться последовательностью, записываем в переменные L1 L2 L3 L4 коды base64 соответствующих элементов.
- сравниваем, мы уже знаем что "5" равен [[base64_code_block5]] значит сравниваем [[base64_code_block5]] с каждой переменной [[L1]] [[L2]] [[L3]] [[L4]]
это я бы сделал в "Выполнить код" вот так
[[CLICK1]] = false; [[CLICK2]] = false; [[CLICK3]] = false; [[CLICK4]] = false; if ([[captcha_result]] == "5") { if ([[base64_code_block5]] == [[L1]]) { [[CLICK1]] = true; } if ([[base64_code_block5]] == [[L2]]) { [[CLICK2]] = true; } if ([[base64_code_block5]] == [[L3]]) { [[CLICK3]] = true; } if ([[base64_code_block5]] == [[L4]]) { [[CLICK4]] = true; } }; if ([[captcha_result]] == "6") { ... };
ЗЫ т.к. софт не будет знать что нужно сравнивать именно base64_code_block5 то нужно делать дополнительный if перед выполнить блок ( если "5" выполнять след код, если "6" то выполнять след код).
- Одна из переменных будет true
- Теперь создать 4 экшена проверки
if [[CLICK1]] то двигать мышь и кликнуть >CSS> block >AT> 0 if [[CLICK2]] то двигать мышь и кликнуть >CSS> block >AT> 1 if [[CLICK3]] то двигать мышь и кликнуть >CSS> block >AT> 2 if [[CLICK4]] то двигать мышь и кликнуть >CSS> block >AT> 3
Сам не проверял но должно работать, возможно это костыль и можно сделать лучше)
-
@venom777 При ручном вводе >CSS> :nth-child([[CAPTCHA_RESULT]]) > a > img
Как прописать +1 в селекторе спасибо.
-
@denanotherday возможно потому что в [[CAPTCHA_RESULT]] тип данных не int а string (строка а не цифренный)
выполнить код нужно что бы преобразовать в int[[CAPTCHA_RESULT]] = parseInt([[CAPTCHA_RESULT]])
-
@venom777 Спасибо работает. Я не ту переменную прописал. Подскажите как в селектор добавить +1
-
@denanotherday
номер селектора на странице?>CSS> :nth-child([[CAPTCHA_RESULT]]) > a > img >AT> 0 это будет первый элемент >CSS> :nth-child([[CAPTCHA_RESULT]]) > a > img >AT> 1 это второй >CSS> :nth-child([[CAPTCHA_RESULT]]) > a > img >AT> 2 это третий
-
@venom777 1 это 2, 2 это 3 и тд.
-
@denanotherday да индекс с 0 начинается
-
@venom777 Спасибо