Текстовая каптча

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

aluf

Client
Регистрация
07.03.2010
Сообщения
43
Реакции
3
Баллы
8
Друзья,
не подскажите мне, как решать тектовые каптчи вот такого формата:

"два плюс три"
"один умножить на пять"


и так далее...
 
1) Воспользоваться яндексом.
2) Создать базу вопрос-ответ

1) А если каптчи на разных языках?
2) Вот про базу вопрос-ответ гуглил, но не совсем понял, как это сделать.
 
один плюс один;2
два плюс три;5
семь минус 3;4

Создаешь текстовый файл. Заносишь все возможные значения. Сохраняешь. И ищешь соответствие
 
один=1
два=2
три=3
....
десять=10
плюс=+
умножить
=*
Парсишь по словам, ищешь соответствие и переводишь в математику, решаешь.
 
  • Спасибо
Реакции: Radzhab
А как это перевести в математику?
 
Не, этот момент понятен. А как дальше узнать ответ? Делать запрос? Или как то по другому можно?
 
Ну что тут не понятного, всё просто, если ты знаешь что это математическая каптча, делаешь базу слово=цифра, действие = знак, далее, распирсив предложение на слова ищешь каждое слово в своей базе, составляешь выражение, прогоняешь через блок джава(в проджект мэйкере есть, свой код - джава скрипт), на выходе результат, его записываешь в ответ.
 
Вот держи. Накидал на коленке
C#:
Развернуть Свернуть Копировать
Dictionary<string, int> dictionary =
         new Dictionary<string, int>();

            dictionary.Add("один", 1);
            dictionary.Add("два", 2);
            dictionary.Add("три", 3);
            dictionary.Add("четыре", 4);
            dictionary.Add("пять", 5);
            dictionary.Add("шесть", 6);
            dictionary.Add("семь", 7);
            dictionary.Add("восемь", 8);
            dictionary.Add("девять", 9);

             Dictionary<string, string> znak =
         new Dictionary<string, string>();
            znak.Add("умножить", "*");
            znak.Add("делить", "/");
            znak.Add("прибавить", "+");
            znak.Add("вычесть","-");

            var data = "один умножить на пять";
            var buff = data.Split(' ').Where(x=>x.Length>2).ToList();

            var x1 = Convert.ToInt32(dictionary[buff[0]]);
            var x2 = znak[buff[1]].ToString();
            var x3 = Convert.ToInt32(dictionary[buff[2]]);

            var result = 0;
         
            switch (x2)
            {
                case "+": result = x1 + x3; break;
                case "-": result = x1 - x3; break;
                case "*": result = x1 * x3; break;
                case "/": result = x1 / x3; break;
            }
            return result;
 
Добрый день! Все прочитал, хорошо расписано. Но не хрена не понял......Если можно распишите мой случайСнимкунеуцкнеок.JPG Снимок.JPG
 
WePYvi9.png
 
Еще вопрос: В поле сообщения автоматически вставляется надпись "Здравствуйте, (имя)" а мне надо оставить это приветствие и дальше вставить свой текст. Или можно каким то экшеном стереть этот текст? Сн11111111111111имок.JPG
 
Там вся проблема в курсоре, он встает в начале текста, а это значит мое сообщение встанет перед Здрасте....либо курсор в конец текста, либо текст сохраняю, а потом чем стираю?
 
Через конструктор действий получить innertext - это приветствие
потом когда вставляешь текст ,поставь в начале переменную с приветствием ,а потом свой текст
 
Через конструктор действий получить innertext - это приветствие
потом когда вставляешь текст ,поставь в начале переменную с приветствием ,а потом свой текст
да, спасибо так и сделал, все работает
 
Если можно напишите пошагово, как прописать вот это распознавание. Бака трещит, системник в окно....Заранее спасибо
там же цифры постоянно меняются, т е. образцы надо в текстовом файле сохранить?
 
там же цифры постоянно меняются, т е. образцы надо в текстовом файле сохранить?
так же как и с приветствием
получаем innertext в переменную в этом случае это "шесть"
и заменяем на цифру
dFt2hlN.png




и так для каждой цифры от 0 до 9

и просто делаешь 10 таких кубиков подряд, нужно значение заменится и попадет в ответ
 
так же как и с приветствием
получаем innertext в переменную в этом случае это "шесть"
и заменяем на цифру
dFt2hlN.png




и так для каждой цифры от 0 до 9

и просто делаешь 10 таких кубиков подряд, нужно значение заменится и попадет в ответ
там есть двузначные цифры
"ceмнадцаTь":17
"шeсTнадцаTь":16
а есть возможность работать со списком, что бы не громоздить 20 кубиков, ??
 
ну можно и списком
создать список слово:число
объединить элементы списка
регуляркой выпарсить строку содержащую нужное нам слово
ну и оттуда потом достать число
 
Мне кажется или тему сначала страницы никто не читал?* Зачем громоздить двадцать кубиков, когда можно пихнуть в один кубик. Я понимаю что некоторым трудно дается программирование, но рано или поздно вам придется столкнуться с этим. Включите логику
 
Мне кажется или тему сначала страницы никто не читал?* Зачем громоздить двадцать кубиков, когда можно пихнуть в один кубик. Я понимаю что некоторым трудно дается программирование, но рано или поздно вам придется столкнуться с этим. Включите логику
читал, купил 2 выпуск видео от ростикса, там как раз С# разбирают...тяжело но осваиваю....но пока можно и по другому
 

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