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

aluf

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

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


и так далее...
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
1) Воспользоваться яндексом.
2) Создать базу вопрос-ответ
 

aluf

Client
Регистрация
07.03.2010
Сообщения
43
Благодарностей
3
Баллы
8
1) Воспользоваться яндексом.
2) Создать базу вопрос-ответ
1) А если каптчи на разных языках?
2) Вот про базу вопрос-ответ гуглил, но не совсем понял, как это сделать.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
один плюс один;2
два плюс три;5
семь минус 3;4

Создаешь текстовый файл. Заносишь все возможные значения. Сохраняешь. И ищешь соответствие
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93
один=1
два=2
три=3
....
десять=10
плюс=+
умножить
=*
Парсишь по словам, ищешь соответствие и переводишь в математику, решаешь.
 
  • Спасибо
Реакции: Radzhab

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
А как это перевести в математику?
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Не, этот момент понятен. А как дальше узнать ответ? Делать запрос? Или как то по другому можно?
 

Санёк

Client
Регистрация
30.08.2013
Сообщения
325
Благодарностей
111
Баллы
43
Ну что тут не понятного, всё просто, если ты знаешь что это математическая каптча, делаешь базу слово=цифра, действие = знак, далее, распирсив предложение на слова ищешь каждое слово в своей базе, составляешь выражение, прогоняешь через блок джава(в проджект мэйкере есть, свой код - джава скрипт), на выходе результат, его записываешь в ответ.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Вот держи. Накидал на коленке
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;
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Добрый день! Все прочитал, хорошо расписано. Но не хрена не понял......Если можно распишите мой случайСнимкунеуцкнеок.JPG Снимок.JPG
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Еще вопрос: В поле сообщения автоматически вставляется надпись "Здравствуйте, (имя)" а мне надо оставить это приветствие и дальше вставить свой текст. Или можно каким то экшеном стереть этот текст? Сн11111111111111имок.JPG
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Там вся проблема в курсоре, он встает в начале текста, а это значит мое сообщение встанет перед Здрасте....либо курсор в конец текста, либо текст сохраняю, а потом чем стираю?
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
Через конструктор действий получить innertext - это приветствие
потом когда вставляешь текст ,поставь в начале переменную с приветствием ,а потом свой текст
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Через конструктор действий получить innertext - это приветствие
потом когда вставляешь текст ,поставь в начале переменную с приветствием ,а потом свой текст
да, спасибо так и сделал, все работает
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Если можно напишите пошагово, как прописать вот это распознавание. Бака трещит, системник в окно....Заранее спасибо
там же цифры постоянно меняются, т е. образцы надо в текстовом файле сохранить?
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
там же цифры постоянно меняются, т е. образцы надо в текстовом файле сохранить?
так же как и с приветствием
получаем innertext в переменную в этом случае это "шесть"
и заменяем на цифру




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

и просто делаешь 10 таких кубиков подряд, нужно значение заменится и попадет в ответ
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
так же как и с приветствием
получаем innertext в переменную в этом случае это "шесть"
и заменяем на цифру




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

и просто делаешь 10 таких кубиков подряд, нужно значение заменится и попадет в ответ
там есть двузначные цифры
"ceмнадцаTь":17
"шeсTнадцаTь":16
а есть возможность работать со списком, что бы не громоздить 20 кубиков, ??
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
ну можно и списком
создать список слово:число
объединить элементы списка
регуляркой выпарсить строку содержащую нужное нам слово
ну и оттуда потом достать число
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Мне кажется или тему сначала страницы никто не читал?* Зачем громоздить двадцать кубиков, когда можно пихнуть в один кубик. Я понимаю что некоторым трудно дается программирование, но рано или поздно вам придется столкнуться с этим. Включите логику
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28
Мне кажется или тему сначала страницы никто не читал?* Зачем громоздить двадцать кубиков, когда можно пихнуть в один кубик. Я понимаю что некоторым трудно дается программирование, но рано или поздно вам придется столкнуться с этим. Включите логику
читал, купил 2 выпуск видео от ростикса, там как раз С# разбирают...тяжело но осваиваю....но пока можно и по другому
 

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28

georgei2007

Client
Регистрация
10.02.2015
Сообщения
680
Благодарностей
58
Баллы
28

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