При разгадывании ReCaptcha2 пишет - задание не определено

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

bgmt

Client
Регистрация
19.02.2016
Сообщения
41
Реакции
2
Баллы
8
Добрый день, иногда при разгадывании ReCaptcha2 пишет - задание не определено
upload_2016-2-25_13-14-41.png
 
На всех картинках?
Вомзможно в базе данных модуля просто нет этой загадки
 
  • Спасибо
Реакции: masterLomaster
нет, на некоторых
 
Тогда может быть
 
У меня на всех пишет что делать что за глюк ?
 
У меня на всех пишет что делать что за глюк ?
просто гугль не спит и добавляет много новых картинок, у меня тоже много попадается таких но не сказать что все, но встречаются. Это новые картинки которых нет в базе CM2.
 
просто гугль не спит и добавляет много новых картинок, у меня тоже много попадается таких но не сказать что все, но встречаются. Это новые картинки которых нет в базе CM2.
Поставил 100 попыток прогнал 10 раз, результат из 1000 каптч 0% распознано увы печаль ка, ради этой капчи купил кап2 стандарт, а по ходу только зря деньги выкинул, лучше бы обнову купил наверно. И какого то чёрта каждая картинка 2 раза кидается в кап2 все картинки по 2 раза это глюк или так и надо ?

_WYdwW5n9lWnjlZEC3xX3WbhX5ogr5RgDasYz0IyM2RpyN3rag4afRkwi4ctET8QzdNUdZ4kwJbS3ARQvVvrQw%3D%3D

Снипет стандартный этот без исправления не работает у меня вообще. Изменил вот так, стал хоть запускаться.
C#:
Развернуть Свернуть Копировать
// Основные параметры
// время ожидания
var waitTime = 1000;
// количество попыток распознать
var tryRecognize = 100;
// количество попыток загрузить элемент
var tryLoadElement = 60;
// получать полный ответ
bool fullAnswer = true;
// показывать сообщения о прогрессе распознавания
var needShowMessages = false;
// проверять корректность распознанного ответа
var needToCheck = true;
// Вспомогательные переменные
// вкладка
var tab = instance.ActiveTab;
// вид рекаптчи 2 (с кнопкой "я не робот" или без)
bool isNewView = true;
// поздравляем, вы не робот
var success = false;
// время вышло
var timeout = false;
// задание для рекапчи 2
var task = string.Empty;
// url изображения
var src = string.Empty;
// картинка в base64
var imageString = string.Empty;
// ответ на каптчу
var answer = string.Empty;
// капча изменилась
var changed = false;
// пустой ответ
var answerIsEmpty = false;
// Проверка прохождения защиты
Action CheckOK= () => {
    System.Threading.Thread.Sleep(waitTime); // подождём загрузки элементов
    for (int k = 0; k < tryLoadElement; k++)
    {
        var check = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
        var more = tab.FindElementByAttribute("div", "class", "rc-imageselect-error-select-more", "regexp", 0);
        var wrong = tab.FindElementByAttribute("div", "class", "rc-imageselect-incorrect-response", "regexp", 0);
        if (!more.IsVoid && !wrong.IsVoid)
        {
            var isNotVisibleMore = more.GetAttribute("outerhtml").Replace(" ","").Contains("display:none");
            var isNotVisibleWrong = wrong.GetAttribute("outerhtml").Replace(" ","").Contains("display:none");
            if (isNotVisibleMore && isNotVisibleWrong)
            {
                if (!check.IsVoid)
                {
                    if (check.OuterHtml.Contains("style=\"\""))
                    {
                        success = true;
                        break;
                    }
                }
                else System.Threading.Thread.Sleep(waitTime);
            }
            else break;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
Action UpdateImage= () => {
    // Обновляем капчу при необходимости
    if (!changed)
    {
        ZennoLab.CommandCenter. HtmlElement reload = null;
        if (isNewView) reload = tab.FindElementByAttribute("div", "id", "recaptcha-reload-button", "text", 0);
        else reload = tab.GetDocumentByAddress("0;0").FindElementByTag("form", 1).FindChildByAttribute("input:submit", "class", "fbc-button-reload fbc-button", "regexp", 0);
        if (!reload.IsVoid) reload.Click();
        else timeout = true;
    }
    changed = false;
    for (int k = 0; k < tryLoadElement; k++)
    {
        System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        // ищем картинку
        var testImage = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
        if (testImage.IsVoid) continue;
        // получаем url изображания
        var newSrc = testImage.GetAttribute("src");
        // если изображение изменилось, то выходим
        if (newSrc != src) break;
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск рекаптчи 2
Action SearchReCaptcha2= () => {
    project.SendInfoToLog("Поиск рекаптчи 2", needShowMessages);
    for (int k = 0; k < tryLoadElement; k++)
    {
        // поиск кнопки "Я не робот"
        var notRobot = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
        // если нашли
        if (!notRobot.IsVoid)
        {
            // клик по кнопке
            notRobot.Click();
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            // если ввод каптчи не требуется
            var check = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
            if (!check.IsVoid)
            {
                if (check.OuterHtml.Contains("style=\"\""))
                {
                    success = true;
                    break;
                }
            }
            // Ждем пока загрузится форма
            for (int j = 0; j < tryLoadElement; j++)
            {
                var loadedForm = tab.FindElementByAttribute("div", "class", "primary-controls", "regexp", 0);
                if (!loadedForm.IsVoid) break;
                else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
                if (j == (tryLoadElement - 1)) timeout = true;
            }
            break;
        }
        else
        {
            // убеждаемся, что это мобильная версия рекапчи
            var form = tab.FindElementByAttribute("form", "fulltag", "form", "text", 0);
            if (!form.IsVoid)
            {
                isNewView = false;
                fullAnswer = false;
                break;
            }
            else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск задания рекапчи 2
Action SearchTask= () => {
    project.SendInfoToLog("Поиск задания", needShowMessages);
    for (int k = 0; k < tryLoadElement; k++)
    {
        ZennoLab.CommandCenter.HtmlElement taskHe = null;
        if (isNewView) taskHe = tab.FindElementByAttribute("div", "class", "rc-imageselect-desc-wrapper", "regexp", 0);
        else taskHe = tab.FindElementByAttribute("label", "class", "fbc-imageselect-message-text", "regexp", 0);
        if (!isNewView && taskHe.IsVoid) taskHe = tab.FindElementByAttribute("div", "class", "fbc-imageselect-message-error", "regexp", 0);
        if (!taskHe.IsVoid)
        {
            task = taskHe.GetAttribute("innertext"); // получаем задание
            string suspecttask = task.ToLower();
            if (suspecttask.Contains("Click verify once there are none left") || suspecttask.Contains("Когда изображения закончатся"))
                throw new Exception("Не распознано");
            if (suspecttask.Contains("street signs") || suspecttask.Contains("указатели") || suspecttask.Contains("дорожні знаки") || suspecttask.Contains("дорожные знаки"))
            {
                UpdateImage();
                continue;
            }
            break;
        }
        else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск изображения
Action SearchImage= () => {
    project.SendInfoToLog("Поиск изображения", needShowMessages);
    System.Threading.Thread.Sleep(waitTime * 3); // подождём загрузки элемента
    for (int k = 0; k < tryLoadElement; k++)
    {
        ZennoLab.CommandCenter.HtmlElement image = null;
        if (isNewView) image = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
        else  image = tab.FindElementByAttribute("img", "class", "fbc-imageselect-payload", "regexp", 0);
        // если есть изображение
        if (!image.IsVoid)
        {
            // получаем url изображания
            src = image.GetAttribute("src");
            imageString = image.DrawToBitmap(true);
            break;
        }
        else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Распознавание
Action Recognize= () => {
    project.SendInfoToLog("Распознавание", needShowMessages);
    if (!isNewView) fullAnswer = false;
    var answerString = ZennoPoster.CaptchaRecognition("CapMonster2.dll", imageString, String.Format("Task={0}&FullAnswer={1}", task, fullAnswer));
    var split = answerString.Split(new [] { "-|-" }, StringSplitOptions.RemoveEmptyEntries);
    answer = split[0];
};
//Вводим ответ
Action InputAnswer= () => {
    if (!String.IsNullOrEmpty(answer) && answer != "sorry")
    {
                project.SendInfoToLog("Ввод ответа и проверка правильности", needShowMessages);
        int count = 0;
        foreach (char c in answer)
        {
            if (fullAnswer)
            {
                if (count == 2) break;
            }
            int index;
            ZennoLab.CommandCenter.HtmlElement he = null;
            if (isNewView)
            {
                index = Convert.ToInt32(c.ToString()) - 1;
                he = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", index);
            }
            else
            {
                string attrValue = "fbc-imageselect-checkbox-" + c;
                he = tab.FindElementByAttribute("input:checkbox", "class", attrValue, "regexp", 0);
            }
            if (!he.IsVoid)
            {
                he.Click(); //кликаем на картинку
                System.Threading.Thread.Sleep(waitTime);// подождём немного
            }
            if (fullAnswer) count++;
        }
        // ищем кнопку "Подтвердить"
        ZennoLab.CommandCenter.HtmlElement apply = null;
        if (isNewView) apply = tab.FindElementById("recaptcha-verify-button");
        else apply = tab.GetDocumentByAddress("0;0").FindElementByTag("form", 0).FindChildByAttribute("input:submit", "fulltag", "input:submit", "text", 0);
        if (!apply.IsVoid) apply.Click();
        // проверим правильность ответа
        if (isNewView)
        {
            CheckOK();
            if (success) return;
            // вводим оставшуюся часть ответа
            if (fullAnswer)
            {
                for (int i = count; i < answer.Length; i++)
                {
                    // снова ищем картинку
                    var testImage = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
                    if (testImage.IsVoid) break;
                    // получаем url изображания
                    var newSrc = testImage.GetAttribute("src");
                    // если изображение изменилось, то выходим
                    if (newSrc != src) break;
                    else changed = true;
                    // иначе продолжаем ввод
                    int index = Convert.ToInt32(answer[i].ToString()) - 1;
                    var he = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", index);
                    if (!he.IsVoid)
                    {
                        he.Click();
                        System.Threading.Thread.Sleep(waitTime); // подождём немного
                        if (!apply.IsVoid) apply.Click();
                        CheckOK();
                        if (success) return;
                    }
                }
            }
        }
    }
    else answerIsEmpty = true;
};
// Дополнительные действия для старого вида рекапчи
Action ActsOldView= () => {
    System.Threading.Thread.Sleep(waitTime * 3); // подождём загрузки элемента
    // Проверяем, была ли ошибка в распознавании
    ZennoLab.CommandCenter.HtmlElement he = tab.FindElementByAttribute("img", "class", "fbc-imageselect-payload", "regexp", 0);
    if (!he.IsVoid)
    {
        return;
    }
    string txt = string.Empty;
    // ищем текст, который надо вставить
    for (int k = 0; k < tryLoadElement; k++)
    {
        ZennoLab.CommandCenter.HtmlElement heGetText = tab.FindElementByAttribute("textarea", "dir", "ltr", "regexp", 0);
        if (!heGetText.IsVoid)
        {
            txt = heGetText.GetAttribute("value");
            break;
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    // ищем куда вставлять текст
    for (int k = 0; k < tryLoadElement; k++)
    {
        ZennoLab.CommandCenter.HtmlElement hePutText = tab.FindElementByAttribute("textarea", "id", "g-recaptcha-response", "regexp", 0);
        if (!hePutText.IsVoid)
        {
            hePutText.SetValue(txt, "None", false);
            break;
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    // нажимаем "Подтвердить"
    for (int k = 0; k < tryLoadElement; k++)
    {
        var submit = tab.FindElementByAttribute("input:submit", "fulltag", "input:submit", "regexp", 0);
        if (!submit.IsVoid)
        {
            submit.Click();
            break;
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    success = true;
};
SearchReCaptcha2();
if (timeout) throw new Exception("Вышло время ожидания загрузки элемента");
for (int i = 0; i < tryRecognize; i++)
{
    SearchTask();
    if (timeout) break;
    SearchImage();
    if (timeout) break;
    Recognize();
    InputAnswer();
    if (!needToCheck) return "ok";
    if (answerIsEmpty)
    {
        answerIsEmpty = false;
        UpdateImage();
        continue;
    }
    if (!isNewView) ActsOldView();
    if (timeout) break;
    if (success) return "ok";
    if (i != (tryRecognize - 1)) UpdateImage();
    if (timeout) break;
}
if (timeout) throw new Exception("Вышло время ожидания загрузки элемента");
else throw new Exception("Не распознано. Закончились попытки распознать, прежде чем ответ был засчитан");

Уже даже скачал типа новый билд который не в админке, а там на dropbox выложенный такая же лажа.
 
Последнее редактирование:
Поставил 100 попыток прогнал 10 раз, результат из 1000 каптч 0% распознано увы печаль ка, ради этой капчи купил кап2 стандарт, а по ходу только зря деньги выкинул, лучше бы обнову купил наверно. И какого то чёрта каждая картинка 2 раза кидается в кап2 все картинки по 2 раза это глюк или так и надо ?

_WYdwW5n9lWnjlZEC3xX3WbhX5ogr5RgDasYz0IyM2RpyN3rag4afRkwi4ctET8QzdNUdZ4kwJbS3ARQvVvrQw%3D%3D
а что в логах зенки? выложи у меня так было когда модуль глючил, я ходил в папку с базой картинок и клацал по этому экзешнику, потом перезапускал зенку и помогло. еще есть такая штука с рекапчей, они там сменили стили на кнопках и модули распознования зависают на тех капчах которые незнают , а пролистать капчу на новую немогут так как стиль у кнопки релоад стоит display: none; и модуль неможет пролистать капчу, изза этого модуль зависает на капче которую неразгадал и клацает по кнопке релоад пока не получает от гугля Эрор api
 
Поставил 100 попыток прогнал 10 раз, результат из 1000 каптч 0% распознано увы печаль ка, ради этой капчи купил кап2 стандарт, а по ходу только зря деньги выкинул, лучше бы обнову купил наверно. И какого то чёрта каждая картинка 2 раза кидается в кап2 все картинки по 2 раза это глюк или так и надо ?
У вас походу 2 раза отправляется одна и та же картинка.
 
В логе пишет два раза тоже не распознано. Зависание нету 100 раз отрабатывает но результата нет а кап2 увеличивает счётчик распознано но на против картинок в логе ни одного ответа.

_WYdwW5n9lWnjlZEC3xX3WK1kxxRKwAt82JtskPCGKvoUexV6zCbb2bp2L4uSYcdNreztpdyOCFbdTpErxnFdw%3D%3D
 
У вас походу 2 раза отправляется одна и та же картинка.
По ходу я это и сказал, вот тот код выше отправляет. Но там нету отправки 2 раза.

Какой ехе запускал МастерЛомастер ? CMconnector.exe - этот ?
 
Последнее редактирование:
По ходу я это и сказал, вот тот код выше отправляет. Но там нету отправки 2 раза.
Вообще недавно гугл исправлял капчу свою и у них вылазило 2 окна. Также возможно на странице 2 рекапчи (тоже встречал такое), но это не объясняет отправку сразу 2 изображений. Попробуйте для теста мой шаблон для картинок, если он сработает, значит проблема в сниппете, а если нет - в сайте.
 
Вообще недавно гугл исправлял капчу свою и у них вылазило 2 окна. Также возможно на странице 2 рекапчи (тоже встречал такое), но это не объясняет отправку сразу 2 изображений. Попробуйте для теста мой шаблон для картинок, если он сработает, значит проблема в сниппете, а если нет - в сайте.
Вы имеете в виду Rucaptcha project for Recaptcha 2 (Zennoposter) для 5 POST запросов.xmlz, уже пытался переделать под кап2 увы не способен. Не вышло. Там Запросы на прямую в Рукапчу. Также возможно на странице 2 рекапчи исключается вроде тест запускаю тут. Проанализировав все нюансы склоняюсь к проблеме в снипете или в самом Кап2, кто может проверит код выше. Он такой же как и стандартный с исправлением маленькой буквы на большую в слове (Когда изображения закончатся) и (Click verify once there are none left") с маленькой работать не будет. Ну и замена (HtmlElement) на (ZennoLab.CommandCenter.HtmlElement) без этого тоже не запускается. Ну и фраза для пропуска как я понимаю каптч, где знаки указатели добавил ещё одну фразу потому что фраза (указатели) у меня не бывает, а вместо неё (дорожные знаки) соответственно добавил (....|| suspecttask.Contains("дорожные знаки")) Кто то проверить может ?
 
Последнее редактирование:
Вы имеете в виду Rucaptcha project for Recaptcha 2 (Zennoposter) для 5 POST запросов.xmlz, уже пытался переделать под кап2 увы не способен. Не вышло. Там Запросы на прямую в Рукапчу.
Да конечно его не получится переделать, так как там структура другая. При желании конечно можно, но придется повозиться. Но не об этом суть, просто если у вас мой шаб работает, то тут проблема в сниппете.
 
Да конечно его не получится переделать, так как там структура другая. При желании конечно можно, но придется повозиться. Но не об этом суть, просто если у вас мой шаб работает, то тут проблема в сниппете.
Ваш работал, точно, но дней так 7 назад тестил. Когда ещё кап2 не было у меня.
 
Подтерто...
Мой глюк.
 
Последнее редактирование:
На скрине выше ничего и не могло быть отгадано. Модуль не решает загадки типа "витрины магазинов", "дорожные знаки", "номера домов"
 
На скрине выше ничего и не могло быть отгадано. Модуль не решает загадки типа "витрины магазинов", "дорожные знаки", "номера домов"
А по чему по 2 картинки приходит на кап2 ?
 
Гугл любит менять свою рекапчу, а сниппеты под него клепать сразу не получается.
Вы проверили снипет или предполагаете что дело в нём. Нужно определится или снипет чинить или кап2 ждать обнову, реально в чём причина точно ?
 
Вы проверили снипет или предполагаете что дело в нём. Нужно определится или снипет чинить или кап2 ждать обнову, реально в чём причина точно ?
Да дело в сниппете. И чинить его будет администрация, я уж точно этим заниматься не буду, так как С# для меня как непреодолимая гора.
 
  • Спасибо
Реакции: masterLomaster
отправляю сниппетом с вики рекаптчу2, в капмонстре - задание не определено. После в шаблоне сниппет зависает. Как можно решить данную проблему?
 

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