zennoposter + rucaptcha (funcaptcha)

  • Автор темы Автор темы HWMD
  • Дата начала Дата начала

HWMD

Client
Регистрация
16.08.2019
Сообщения
83
Реакции
9
Баллы
8
Приветствую!
Есть сайт с funcaptcha + recaptcha invisible - gtop100.com/topsites/MapleStory/sitedetails/MapleRoyals-The-Nostalgic-MapleStory-Server-79510?vote=1
Разгадывание funcaptcha происходит через rucaptcha, recaptcha через cp2

Тк поле, куда нужно вставлять результат решения funcaptcha имеет type="hidden" - я сделал следующее:
1) Получение значения [innerhtml] (Всей страницы с funcaptcha)
2) Замена "hidden" на ""
3) Подмена результата
Момент: страница имеет 2 поля с одинаковыми исходным значением funcaptcha и 1 поле recaptcha invisible
4) Решаем каптчу через rucaptcha
5) Заменяем содержимое обоих полей результатом решения funcaptcha
6) Решаем recaptcha invisible
7) Заменяем содержимое поля recaptcha invisible
8-) Жмем кнопку действия

Проблема: Сайт отправляет ошибку без намека на проблему с каптчей
Нюанс: Если проделать все тоже самое в ручную через браузер zennoposter и в ручную решить funcaptcha - все работает, как надо.

Вопрос: В чем может заключаться проблема? Могу предполагать, что как-то не так вставляю результат funcaptcha.
Возможно есть желающие помочь за оплату? Пишите в тему или в лс.
 
Последнее редактирование:
Дело тут такое, что не нужно заменять hidden на "".
Ищите тег input которого type="hidden" и name="funcaptcha_token" - и именно ему устанавливайте значение.
Пример:
Код:
Развернуть Свернуть Копировать
string tokenF = "результат распознавания фан";
instance.ActiveTab.FindElementByName("funcaptcha_token").SetValue(tokenF,"None", false,false);

string tokenRE = "результат распознавания рекаптча";
instance.ActiveTab.FindElementById("recaptcha-token").SetValue(tokenRE,"None", false,false);
Но, на данном сайте возможно более правильно было бы просто отправлять обычный пост запрос без использования браузера, просто в нужных местах подставлять параметры.
Код, который формирует данный пост-запрос (исходник сайта) предоставлю здесь - может быть чем-то поможет в формировании параметров.
Код:
Развернуть Свернуть Копировать
$("button#votebutton").live('click',function(){
                var user_id=$('#user_id').val();
                var site=$('#site_id').val();
                var base_url=$('#base_url').val();

                //var fpid = new Fingerprint({canvas: true,ie_activex: true}).get();
                
                //var options = {extendedFontList: true};
                //var fp = new Fingerprint2(options);
                //fp.get(function(result) {
                    //var fpid = result;
                    var fpid = "xxx";
                    var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
                    //var fcToken    =    $('#FunCaptcha-Token').val();//Coming from fun captcha
                    var fcToken =   $("[name='fc-token']").val();//Coming from fun captcha
                    //var fcToken =  "";//Coming from fun captcha
                    var pingUsername    =    $('#pingUsername').val();
                    var minecraftname    =    $('#minecraftname').val();
                    var asf   =   "gjlhpmrclypxsvnwlc";
                    var retoken   =   $('#retoken').val();
                    /* if(fcToken==undefined || fcToken == '')
                    {alert('Please enter captcha');}
                    else {} */
                    $('#img_loader').show();
                    $.ajax({
                        type: "POST",
                        url: '/home/send_vote/',
                        data: "site="+site+"&user_id="+user_id+"&fingerprintid="+murmur+"&pingUsername="+pingUsername+'&minecraftname='+minecraftname+'&fcToken='+fcToken+'&asf='+asf+'&tz='+tz+'&reToken='+retoken,
                        success: function (r) {
                            $('#img_loader').hide();
                            // alert(r);
                            // $('#loaddata').attr('id','votebutton');
                            if(r=='success') {
                                $('#captcha-status').html("<p style='color:#00a600;'><b>Thank you for voting!</b></p>");
                                location.href='https://gtop100.com/topsites/MapleStory/';                            } else {
                                $('#captcha-status').html("<p style='color:#00FF00;'><b>"+r+"</b></p>");
                                //$('#captchaReset').trigger('click');
                            }
                        },
 
  • Оценить
Реакции: alex1988
Ищите тег input которого type="hidden" и name="funcaptcha_token" - и именно ему устанавливайте значение.

Не замчали такого - значение устанавливаю,

C#:
Развернуть Свернуть Копировать
string tokenF = project.Variables["FC_Rucap_Session_Answer"].Value;
instance.ActiveTab.FindElementByName("fc-token").SetValue(tokenF,"None", false,false);
instance.ActiveTab.FindElementByName("verification-token").SetValue(tokenF,"None", false,false);


В инспекторе вижу такое отображение -

47110


Вроде в value токен установился, только в outerhtml не появился


Проверяю DOM страницы - там ничего не установлено

<input id="verification-token" name="verification-token" placeholder="Copy verification code in here" style="display:none;" type="text">
<input id="FunCaptcha-Token" name="fc-token" placeholder="Copy verification code in here" style="display:none;" type="text">

Что нам делать, как нам быть? =)
 
Обращаю Ваше внимание что .FindElementByName("funcaptcha_token") не равно .FindElementByName("fc-token") - так как заполняются явно разные поля.
Или названия полей для заполнения там каждый раз изменяются?

P.S. Действительно, вижу что нужно вводить значение в другой элемент.
Специально перепроверил с выводом в лог установленного значения - вижу что значение устанавливается корректно:
Код:
Развернуть Свернуть Копировать
var el = instance.ActiveTab.FindElementByName("fc-token");
el.SetValue("Ещё раз проверка токена", "None", false, false);
project.SendInfoToLog(el.GetAttribute("value")); // Должно вывести в лог Ещё раз проверка токена
 

Вложения

  • картинка2.jpg
    картинка2.jpg
    686,6 KB · Просмотры: 507
  • картинка1.jpg
    картинка1.jpg
    982,4 KB · Просмотры: 527
Последнее редактирование:
Обращаю Ваше внимание что .FindElementByName("funcaptcha_token") не равно .FindElementByName("fc-token") - так как заполняются явно разные поля.
Сорян, не пояснил. Это на другом сайте, но проблема такая же.
Там как раз такие поля
 
Сорян, не пояснил. Это на другом сайте, но проблема такая же.
Там как раз такие поля
Просмотрите пожалуйста мой предыдущий ответ, пока Вы отвечали, я дополнял его - из-за чего Ваше сообщение появилось раньше.
Собственно там есть пример как проверить, что значение действительно установилось.

Относительно же того, что разговор о другом сайте - дело такое, что на страничке (как можно видеть на скриншоте с предыдущего моего ответа) есть несколько полей FunCaptcha, которые могут содержать результат.
Более того, сайт может анализировать содержимое этих полей и использовать для своих целей только результат одного конкретного поля.
Также сайт может без проблем посчитать Вас ботом тогда, когда какое-то определенное поле не должно быть заполнено (а Вы решили сделать доброе дело и заполнить все поля).
Из-за чего, посмотрите код сайта, с которым работаете чтобы убедиться в том, что Вы устанавливаете значение именно в то поле, которое используется для отправки запроса (остальные поля без надобности трогать не нужно).

В коде встречается строчка в таком виде: el.SetValue("Ещё раз проверка токена", "None", false, false);
Я не знаю, как её интерпретируют разработчики Зеннопостера, но для себя я сделал вывод, что для её заполнения не используется эмуляция ввода (что собственно и не требуется для hidden полей).
Если поле не hidden - тогда возможно нужно использовать эмуляцию ввода.

Визуально, выглядит так, что код должен отрабатывать корректно. На предложенном Вами сайте специально перепроверил данный момент.
 
  • Оценить
Реакции: Atom, booms1 и Reactor3000
Пытаюсь решить капчу на сайте github.
Все хорошо до момента изменения содержимого атрибута fc-token.
Ответ от rucaptcha в формате

Код:
Развернуть Свернуть Копировать
OK|2755e5d0347ccf348.2967568705|r=eu-west-1|metabgclr=transparent|maintxtclr=#cbccce|meta=10|mainbgclr=#fafbfc|guitextcolor=#24292e|metaiconclr=#cbccce|pk=69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC|at=40|ht=1|atp=2|cdn_url=https://cdn.arkoselabs.com/fc|lurl=https://audio-eu-west-1.arkoselabs.com|surl=https://api.funcaptcha.com

данный код и вставляю в

C#:
Развернуть Свернуть Копировать
var el = instance.ActiveTab.FindElementByName("fc-token");
var rez_token= project.Variables["rez"].Value;
el.SetValue(rez_token, "None", false, false);
project.SendInfoToLog(el.GetAttribute("value"));

Но дальше меня не пускат...
кто сможет выручить?
 
Пытаюсь решить капчу на сайте github.
...
кто сможет выручить?
Там используется другое поле + возможно нужна эмуляция (при заполнении поля ещё какие-то запросы летят).
Проверил - вродебы проходит нормально (но, так как мне github для таких целей пока не нужен - не могу сказать насколько всё корректно).
Код:
Развернуть Свернуть Копировать
string rez_token= project.Variables["rez"].Value;
HtmlElement he = instance.ActiveTab.FindElementByName("octocaptcha-token");
he.SetValue(rez_token, instance.EmulationLevel, false);

P.S. С ответа естественно нужно удалить OK| - это ведь не относится к токену...
Код:
Развернуть Свернуть Копировать
if(rez_token.Contains("OK")) rez_token = rez_token.TrimStart("OK|".ToCharArray());
 
Там используется другое поле + возможно нужна эмуляция (при заполнении поля ещё какие-то запросы летят).
Проверил - вродебы проходит нормально (но, так как мне github для таких целей пока не нужен - не могу сказать насколько всё корректно).

привет. не знаю какое поле заполнять на twitch.tv funcaptcha, в какое-бы я поле не забивал решение - реакции от сайта 0. можешь помочь?
 

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