Содержание

Текстовые капчи легко распознаются нейронными сетями глубокого обучения / Хабр

Нейронные сети глубокого обучения достигли больших успехов в распознавании образов. В тоже время текстовые капчи до сих пор используются в некоторых известных сервисах бесплатной электронной почты. Интересно смогут ли нейронные сети глубоко обучения справится с задачей распознавания текстовой капчи? Если да то как?

Что такое текстовая капча?

Капча (англ. “CAPTCHA”) — это тест на “человечность”. То есть задача, которую легко решает человек, в то время как для машины эта задача должна быть сложной. Зачастую используется текст со слипшимися буквами, пример на картинке ниже, также картинку дополнительно подвергают оптическим искажениям.

Капча, как правило, используется на странице регистрации для защиты от ботов рассылающих спам.

Полносверточная нейронная сеть

Если буквы “слиплись”, то их обычно очень трудно разделить эвристическими алгоритмами. Следовательно, нужно искать каждую букву в каждом месте картинки. С этой задачей справится полносверточная нейронная сеть. Полносверточная сеть — сверточная сеть без полносвязного слоя. На вход такой сети подается изображение, на выходе она выдает тоже изображение или несколько изображений (карты центров).

Количество карт центров равно длине алфавита символов использованных в определенной капче. На картах центров отмечаются центры букв. Масштабное преобразование, которое в сети происходит из-за наличия пуллинг слоев, учитывается. Ниже показан пример карты символа для символа “D”

В данном случае используются сверточные слои с паддингом так, чтобы размер изображений на выходе сверточного слоя равнялся размеру изображений на входном слое. Профиль пятна на карте символа задается двумерной гауссовой функцией с ширинами 1.3 и 2.6 пикселей.
Первоначально полносверточная сеть была проверена на символе “R”:

Для проверки применялась небольшая сеть с 2мя пуллингами, натреннированная на CPU. Убедившись, что идея хоть как то работает, я приобрел б/у видеокарту Nvidia GTX 760, 2GB.

Это дало мне возможность тренировать более крупные сети для всех символов алфавита, а также ускорило обучение (примерно в 10 раз). Для тренировки сети использовалась библиотека Theano, на текущий момент уже не поддерживаемая.

Тренировка на генераторе

Разметить большой датасет вручную казалось делом долгим и трудозатратным, поэтому было решено генерировать капчи специальным скриптом. При этом карты центров генерируются автоматически. Мною был подобран шрифт, используемый в капче для сервиса Hotmail, сгенерированная капча визуально была похожа по стилю на реальные капчи:

Финальная точность тренировки на сгенерированных капчах, как оказалось, в 2 раза ниже, по сравнению с тренировкой на реальных капчах. Вероятно, такие нюансы как степень пересечения символов, масштаб, толщина линий символов, параметры искажения и т. п., важны, и в генераторе эти нюансы воспроизвести не удалось. Сеть тренированная на сгенерированных капчах давала точность на реальных капчах около 10%, точность — какой процент капч распознался правильно.
Капча считается распознанной, если все символы в ней распознаны правильно. В любом случае этот эксперимент показал, что метод рабочий, и требуется повысить точность распознавания.
Тренировка на реальном датасете

Для ручной разметки датасета реальных капч был написан скрипт на Matlab с графическим интерфейсом:

Здесь кружочки можно расставлять и двигать мышкой. Кружочком отмечается центр символа. Ручная разметка занимала 5-15 часов, однако есть сервисы, где за не большую плату размечают вручную датасеты. Однако, как оказалось, сервис Amazon Mechanical Turk не работает с российскими заказчиками. Разместил заказ на разметку датасета на известном сайте фриланса. К сожалению, качество разметки было не идеальным, поправлял разметку самостоятельно. Кроме того, поиск исполнителя занимает время (1 неделя) и также это показалось дорого: 30 долларов за 560 размеченных капч. От данного способа отказался, в итоге пришел к использованию сайтов ручного распознавания капч, где самая низкая стоимость 1 доллар за 2000 капч.

Но полученный ответ там — это строка. Таким образом, ручной расстановки центров избежать не удалось. Более того, исполнители в таких сервисах допускают ошибки или вовсе действуют недобросовестно, печатая произвольную строку в ответе. В итоге приходилось проверять и исправлять ошибки.

Более глубокая сеть

Очевидно точность распознавания была недостаточна, поэтому возник вопрос подбора архитектуры. Меня интересовал вопрос “видит” ли один пиксель на выходном изображении весь символ на входном изображении:

Таким образом, мы рассматриваем один пиксель на выходном изображении, и есть вопрос: значения каких пикселей на входном изображении влияют на значения этого пикселя? Я рассуждал так: если пиксель видит не весь символ, то используется не вся информация о символе и точность хуже. Для определения размера этой области видимости (будем называть ее так), я провел следующий эксперимент: установил все веса сверточных слоев равным 0.01, а смещения равным 0, на вход сети подается изображение, в котором значения всех пикселей равны 0 кроме центрального.

В результате на выходе сети получается пятно:


Форма данного пятна близка к форме гауссовой функции. Форма получившегося пятна вызывает вопрос, почему пятно круглое, тогда как ядра сверток в сверточных слоях квадратные? (В сети использовались ядра сверток 3×3 и 5×5). Мое объяснение такое: это похоже на центральную предельную теорему. В ней, как и здесь, присутствует стремление к гауссовому распределению. Центральная предельная теорема утверждает, что для случайных величин, даже с разными распределениями, распределение их суммы равно свертке распределений. Таким образом, если мы сворачиваем любой сигнал сам с собой много раз, то по центральной предельной теореме результат стремится к гауссовой функции, а ширина гауссовской функции растет как корень из количества сверток (слоев). Если для такой же сети с константными весами посмотреть, где в выходном изображении значения пикселей больше нуля, то получается все таки квадратная область (см. рисунок ниже), размер этой области пропорционален сумме размеров сверток в сверточных слоях сети.


Раньше думал, что из-за ассоциативного свойства свертки две последовательные свертки 3×3 эквивалентны свертке 5×5 и потому, если свернуть 2 ядра 3×3 получится одно ядро 5×5. Однако, потом пришел к выводу, что это не эквивалентно хотя бы потому, что у двух сверток 3×3 9*2=18 параметров, а у одной 5×5 25 параметров, таким образом, у свертки 5×5 больше степеней свободы. В итоге, на выходе сети получается гауссова функция с шириной меньше суммы размеров сверток в слоях. Здесь ответил на вопрос какие пиксели на выходе подвержены влиянию одного пикселя на входе. Хотя изначально вопрос ставился обратный. Но оба вопросы эквивалентны, что можно понять из рисунка:


На рисунке можно представить, что это вид на изображения с боку или, что у нас высота изображений равна 1. Каждый из пикселей A и B имеет свою зону влияния на выходном изображении (обозначены синим цветом): для А это D-C, для B это C-E, на значения пикселя C влияют значения пикселей A и B и значения всех пикселей между A и B. Расстояния равны: AB = DC = CE (с учетом масштабирования: в сети присутствуют пуллинг слои, поэтому входное и выходное изображения имеют разные разрешения). В итоге, получается следующий алгоритм нахождения размера области видимости:

  1. задаем константные веса в сверточных слоях, весам-смещениям задаем значения 0
  2. на вход подаем изображения с одним ненулевым пикселем
  3. получаем размер пятна на выходе
  4. умножаем этот размер на коэффициент учитывающий разное разрешение входного и выходного слоя (например, если у нас 2 пулинга в сети, то разрешение на выходе в 4 раза меньше, чем на входе, значит этот размер надо умножать на 4).

Чтобы посмотреть какие признаки сеть использует, провел следующий эксперимент: в тренированную сеть подаем изображение капчи, на выходе получаем изображения с отмеченными центрами символов, из них выбираем какой-нибудь задетектированный символ, на изображениях-картах центров оставляем ненулевой только ту карту, которая соответствует рассматриваемому символу. Такой выход сети запоминаем как , затем градиентным спуском минимизируем функцию:

Здесь — входное изображение сети, — выходные изображения сети, — некоторая константа, которая подбирается экспериментально (). При такой минимизации вход и выход сети считаются переменными, а веса сети константами. Начальное значение переменной это изображение капчи, является начальной точкой оптимизации алгоритма градиентного спуска. При такой минимизации мы уменьшаем значения пикселей на входе изображения, при этом сдерживаем значения пикселей на выходном изображении, в результате оптимизации на входном изображении остаются только те пиксели, которые сеть использует в распознавании символа.
Что получилось:
Для символа “2”:

Для символа “5”:

Для символа “L”:

Для символа “u”:

Изображения слева — исходные изображения капч, изображения справа — это оптимизированное изображение . Квадратом на изображениях обозначена область видимости output>0, окружности на рисунке — это линии уровня Гауссовой функции области видимости.

Малая окружность — уровень 35% от максимального значения, большая окружность — уровень 3%. Примеры показывают, что сеть видит в пределах своей области видимости. Однако, у символа “u” наблюдается выход за область видимости, возможно это частичное ложное срабатывание на символ “n”.

Было проведено много экспериментов с архитектурой сети, чем более глубокая и широкая сеть, тем более сложные капчи она может распознавать, самой универсальной архитектурой оказалась следующая:

Синим цветом, поверх стрелок, показано количество изображений (feature maps). c- сверточный слой, p — max-pooling слой, зеленым цветом внизу показаны размеры ядер. В сверточных слоях используются ядра 3×3 и 5×5 без strade, пуллинг слой имеет патч 2×2. После каждого сверточного слоя есть ReLU слой (на рисунке не показан). На вход подается одно изображение, на выходе получется 24 (количество символов в алфавите). В сверточных слоях паддинг подобран таким образом, чтобы на выходе слоя размер изображения был таким же как и на входе.

Паддинг добавляет нули, однако это никак не влияет на работу сети, потому что значение фонового пикселя капчи — 0, так как всегда берется негативное изображение (белые буквы по черному фону). Паддинг лишь незначительно замедляет работу сети. Так как в сети 2 пуллинг слоя, то разрешение изображения на выходе в 4 раза меньше разрешения изображения на входе, таким образом каждый пуллинг уменьшает разрешение в 2 раза, например, если на входе у нас капча размером 216×96 то на выходе будет 24 изображения размером 54×24.

Улучшения

Переход от решателя SGD к решателю ADAM дал заметное ускорение обучения, и финальное качество стало лучше. Решатель ADAM импортировал из модуля lasagne и использовал внутри theano-кода, параметр learning rate ставил 0.0005, регуляризация L2 была добавлена через градиент. Было замечено, что от тренировки к тренировке результат получается разный. Объясняю это так: алгоритм градиентного спуска застревает в недостаточно оптимальном локальном минимуме. Частично поборол это следующим образом: запускал тренировку несколько раз и выбирал несколько самых лучших результатов, затем продолжал их тренировать еще несколько эпох, после из них выбирал один лучший результат и уже этот единственный лучший результат долго тренировал. Таким образом удалось избежать застревания в недостаточно оптимальных локальных минимумах и финальное значение функции ошибок (loss) получалась достаточно малым. На рисунке показан график — эволюция значения функции ошибок:

По оси x — число эпох, по оси y — значение функции ошибок. Разными цветами показаны разные тренировки. Порядок обучения примерно такой:

1) запускаем 20 тренировок по 10 эпох
2) выбираем 10 лучших результатов (по наименьшему значению loss) и тренируем их еще 100 эпох
3) выбираем один лучший результат и продолжаем тренировать его еще 1500 эпох.

Это занимает около 12 часов. Конечно, для экономии памяти, данные тренировки проводились последовательно, например, в пункте 2) 10 тренировок проводились последовательно одна за другой, для этого провел модификацию решателя ADAM от Lasagne, чтобы иметь возможность сохранять и загружать состояние решателя в переменные.

Разбиение датасета на 3 части позволяло отслеживать переобучение сети:

1 часть: тренировочный датасет — исходный, на котором сеть обучается
2 часть: тестовый датасет, на котором сеть проверяется в процессе тренировки
3 часть: отложенный датасет, на нем проверяется качество обучения после тренировки

Датасеты 2 и 3 небольшие, в моем случае было по 160 капч в каждом, также по датасету 2 определяется оптимальный порог срабатывания, порог который устанавливается на выходное изображение. Если значение пикселя превышает порог, то в данном месте обнаружен соответствующий символ. Обычно оптимальное значение порога срабатывания находится в диапазоне 0.3 — 0.5. Если точность на тестовом датасете значительно ниже, чем точность на тренировочном датасете — это значит что произошло переобучение и тренировочный датасет необходимо увеличить. В случае, если эти точности примерно одинаковы, но не высокие, то архитектуру нейронной сети нужно усложнять, а тренировочный датасет увеличивать. Усложнять архитектуру сети можно двумя путями: увеличивать глубину или увеличивать ширину.

Предварительная обработка изображений также повышала точность распознавания. Пример предобработки:

В данном случае методом наименьших квадратов найдена средняя линия повернутой строки, производится поворот и масштабирование, масштабирование проводится по средней высоте строки. Сервис Hotmail часто делает разнообразные искажения:

Эти искажения необходимо компенсировать.

Неудачные идеи

Всегда интересно почитать про чужие неудачи, опишу их здесь.

Существовала проблема малого датасета: для качественного распознавания требовался большой датасет, который требовалось разметить вручную (1000 капч). Мной предпринимались различные попытки каким-то образом обучить сеть качественно на малом датасете. Делал попытку обучать сеть на результатах распознавания другой сети. при этом выбирал только те капчи и те места изображений, в которых сеть была уверена. Уверенность определял по значению пикселя на выходном изображении. Таким образом можно увеличить датасет. Однако идея не сработала, после нескольких итераций обучения качество распознавания сильно ухудшилось: сеть не распознавала некоторые символы, путала их, то есть ошибки распознавания накапливались.

Другая попытка обучиться на малом датасете — использовать сиамские сети, сиамская сеть на входе требует пару капч, если у нас датасет из N капч, то пар будет N2, получаем гораздо больше обучающих примеров. Cеть преобразует капчу в карту векторов. В качестве метрики сходства векторов выбрал скалярное произведение. Предполагалось что сиамская сеть будет работать следующим образом. Сеть сравнивает часть изображения на капче с некоторым эталонным изображением символа, если сеть видит, что символ тот же с учетом искажения, то считается, что в данном месте качи есть соответствующий символ. Сиамская сеть тренировалась с трудом, часто застревала в неоптимальном локальном минимуме, точность была заметно ниже точности обычной сети. Возможно проблема была в неправильном выборе метрики сходства векторов.

Также была идея использовать автоэнкодер для предварительного обучения нижней части сети (та, что ближе к входу), чтобы ускорить обучение. Автоэнкодер — это сеть, которая обучается выдавать на выходном изображении то же что и подается на вход, при этом в архитектуре автоэнкодера организуют узкий участок. Тренеровка автоэнкодера есть обучение без учителя.

Пример работы автоэкодера:

Первое изображение — входное, второе — выходное.
У обученного автоэнкодера берут нижнюю часть сети, добавляют новых необученных слоев, все это дотренировывают на требуемую задачу. В моем случае применение автоэнкодера никак не ускоряло обучение сети.

Также был пример капчи, которая использовала цвет:

На данной капче описанный метод с полносверточной нейронной сетью не давал результата, он не появился даже после различных предобработок изображения повышающих контрастность. Предполагаю что, полносверточные сети плохо справляются с неконтрастными изображениями. Тем не менее, данную капчу удалось распознать обычной сверточной сетью с полносвязным слоем, получена точность около 50%, определение координат символов осуществлялось специальным эвристическим алгоритмом.

Результат

Примеры Точность Коментарий


42 % Капча Микрософт
, jpg
61 %
63 %
93 % капча mail.ru, 500×200, jpg
87 % капча mail. ru, 300×100, jpg
65 % Капча Яндекс, русские слова, gif
70 % капча Steam, png
82 % капча World Of Tanks, цифры, png

Что еще можно было бы улучшить

Можно было бы сделать автоматическую разметку центров символов. Сервисы ручного распознавания капч выдают лишь распознанные строки, поэтому автоматическая разметка центров помогла бы полностью автоматизировать разметку тренировочного датасета. Идея такова: выбрать только те капчи, в которых каждый символ встречается один раз, на каждый символ натренировать отдельную обычную сверточную сеть, такая сеть будет отвечать лишь на вопрос: есть ли в данной капче символ или нет? Затем посмотреть какие признаки использует сеть, используя метод минимизация значений пикселей входной картинки (описано выше). Полученные признаки позволят локализовать символ, далее тренируем полносверточную сеть на полученных центрах символов.
Выводы

Текстовые капчи распознаются полносверточной нейронной сетью в большинстве случаев. Вероятно, уже настало время отказываться от текстовых капч. Google давно не использует текстовую капчу, вместо текста предлагаются картинки с различными предметами, которые нужно распознать человеку:

Однако и такая задача кажется решаемой для сверточной сети. Можно предположить, что в будущем возникнут центры регистрации людей, например, человека по скайпу интервьюирует живой человек, проверяет сканы паспортов и тому подобное, затем человеку выдается цифровая подпись, с которой он может автоматически регистрироваться на любом сайте.
© Максим Веденев

Recaptcha 2 vs Zennoposter или «как бот стал человеком» | ZennoLab

Введение


Приветствую всех.
Ни для кого не секрет, что Recaptcha 2 за последний год стала очень популярной и практически нет никого, кто бы с ней не сталкивался. В нашем нелегкой работе приходится сталкиваться с ней при создании проектов: парсинге, создании регеров, брутеров, чеккеров и множестве других задач. И особой проблемой является написание проекта (кода/сниппета) для решения капчи.
Совсем недавно я занимался парсингом данных с одного небезызвестного ресурса с помощью несложной программы. И все шло отлично, пока сайт, с которого парсит программа не решил ввести защиту от ботов — Recaptcha. Я естественно начал искать подходящие решения для того, чтобы дополнить мой бот, но программистов, знакомых с работой Recaptcha было мало, а те кто знали как решить программу, предлагали медленные решения с Imacros или PhantomJS с использованием прокси или т.д. Но осложнялось всё тем, что моей главной целью было стабильное и быстрое решения Recaptcha, при этом изменение ip адреса и использование прокси запрещалось.
Всё изменилось, когда я открыл для себя Zennoposter. Прочитав основные функции и принцип работы Zennoposter я понял, что смогу добиться того, чтобы Recaptcha принимала написанный мною проект за человека и добиться максимально быстрого решения данной капчи.

Сбор данных для отправки на сервис распознавания Rucaptcha
и эмуляция нажатия кнопок


Первым делом я решил, что для качественной эмуляции человека нужно сэмулировать правильное нажатие кнопок «Я не робот», «Подтвердить» и «Обновить» и поставил эмуляции на уровень «качество».
Далее необходимо было добавиться время задержки после нажатия кнопки «Я не робот». Я долго испытывал тестовую версию Recaptcha (www.google.com/recaptcha/api2/demo) и убедился, что время может колебаться с 1 до 2 сек (редкий вариант). Поэтому поставил около 1 сек и потом добавил экшен проверки того, загрузились ли изображения или разгадка не требуется и капча разгадана, если оба варианта не сработали, то идет ожидание 300 мс и проверка идет заново.

Поиск задания для решения оказался простым и я извлек его обычными регулярными выражениями.
Аналогично я решил проблему с тем, чтобы определить тип разгадываемой Recaptcha:
1) с довыбором изображений;
2) без изменяющихся картинок.
Большой проблемой было получение изображений для отправки на сервис распознавания. Поначалу я собирался извлекать сами ссылки, сохранять их и отправлять для разгадки. Но если попадается капча, в которой изменяются изображения, то они шли отдельными файлами и склейка изображений оказалась бы проблематичной. Поэтому я выбрал для себя вариант со скриншотом страницы, правильно задал все границы и всё работало отлично, пока не стал применять проект на своей ссылке для парсинга и в итоге оказалось, что экшен скриншота иногда неправильно определяет границы страницы и при всем желании не может сделать скриншот капчи, если она выйдет за изначальные границы страницы. Вследствие этого я использовал модуль CaptchaSaver для определенного элемента страницы и стал получать таким образом изображения для отправки на сервис.
Определение размера капчи (3*3,4*4 или 2*4) не составляет труда и эти параметры нужны будут в дальнейшем для отправки на сервис распознавания Rucaptcha и наложения сетки.

POST и GET

Так как стандартный модуль от Zennoposter неудобен для задания сложных запросов с отправкой файлов, сохраненных в какой-либо папке и точным заданием промежутков времени между запросами на сервис распознавания, то я использовал экшены POST и GET запросов. Также благодаря ним можно делать по несколько POST запросов, чтобы увеличить точность и время распознавания, что я и использовал в одном из своих шаблонов.

Решение капчи с изменяющимися изображениями


Поскольку решение такого вида капчи оканчивается тем, что подходящих изображений не остается, то я искал сервис распознавания, который бы позволил мне реализовать данную функцию в шаблоне и остановился на Rucaptcha. Мне пришлось хорошенько обдумать свой шаблон таким образом, чтобы после каждого разгадывания заново отправлялось изображение и при последующем разгадывании позволялось нажимать только на те изображения, которые изменились. Таким образом процент правильно решенных капч повышался.
Но я решил связаться с командой Rucaptcha и предложил им свой вариант решения, который они вскоре реализовали у себя на сервисе. Суть его такова: вводится дополнительный параметр previousID, который закрывает изображения, на которые предлагал нажать предыдущий работник. Если подходящих изображений нет, то работник отправляет специальный параметр, что изображения закончились и шаблон нажимает на кнопку подтвердить.
Решение капчи без изменяющихся изображениями не составляет труда и её отправка практически аналогична (не отправляются параметры previousID и can_no_answer).

Проверка дополнительных ошибок после нажатия «Подтвердить»

Ошибки решении могут остановить работу шаблона или выдать Bad end, поэтому после нажатия кнопки «Подтвердить» идет проверка наличия текста «Выберите все совпадающие изображения» и «Просмотрите также новые изображения» и в случае их присутствия шаблон обновляет изображения и всё идет по новому кругу.

Результат работы шаблона


Немногие знают, что у Recaptcha 2 есть несколько уровней защиты от ботов и самая высокая представлена на странице Demo версии Recaptcha 2 (http://www.google.com/recaptcha/api2/demo). Я сотни раз запускал свой шаблон и много раз его изменял. Всё чаще перед каждым запуском шаблона гугл отправлял мне капчу, которая не требовала довыбирать изображения. Пару раз даже гугл пропустил мой проект без какого-либо задания.
Затем я решил, что настало время запустить проект для сайта, с которого я парсил данные. Вдобавок я использовал гугловскую почту, что положительно сказывалось на моем проекте. Результат не заставил себя ждать и при нечастом использовании (раз в пару часов решение Recaptcha 2) гугл зачастую меня пропускал без задания или отправлял мне простые картинки.

Тонкости работы с шаблоном и почему я представляю 2 шаблона

Так как необходимо было самое быстрое решение, то я отправляю сразу 5 POST запросов на Rucaptcha. Из них выбираются первые 2 совпадающие и потом уже производится необходимое действие. Если 2 совпадающих вариантов не находится, то проект выбирает те нажатия на изображения, которые предлагались 2 и более раз. Таким образом решаются следующие задачи:
1) увеличивается точность решения;
2) увеличивается скорость решения;
3) минимизируется вариант, что потребуется обновлять капчу.
Помимо этого я представляю вариант с одним POST запросом для тех, кому описанный выше способ является затратным.
Для запуска шаблона надо ввести свой ключ Rucaptcha в указанный на проекте экшен рядом с заметкой.
Иногда бывают ресурсы, на которых придется изменить параметр проверки решения капчи с role=»checkbox» aria-checked=»false» на role=»checkbox» aria-checked=»true» и поменять стрелки местами у экшена условия ‘{-Variable. proverka-}’ == » (возле заметки «Проверка необходимости решения — см. картинку выше). Если стоит «false», то капча не решена, «true» — решена. Я уже сталкивался с обоими вариантами, поэтому тут универсальный не придумаешь.
Если хотите использовать вариант рекапчи без изменяющихся изображений, то после положительного результата надо добавить экшен обновления (до 3 раз рекомендую) и Bad end в случае, когда попытки закончатся (можно использовать экшен условия ‘0’ == ‘1’).
Я выложу 2 варианта шаблонов:
1) с одним POST запросом;
2) с 5 POST запросами для более быстрого и точного решения, который сам использую.

Заключение и выводы

Таким образом, мы в вами разобрали принцип работы шаблона Zennoposter для решения Recaptcha 2 с помощью сервиса распознавания Rucaptcha. Данный шаблон содержит в себе примеры работы с POST и GET, качественной эмуляции кликов, правильным сохранением изображений и, что самое главное, решением Recaptcha 2.
Я думаю, что этот шаблон пригодится многим пользователям программы, так как является готовым решением Recaptcha 2 (необходимо только вставить шаблон и наслаждаться его работой).

Какая программа лучше всего подходит для автоматического ввода капчи

На сегодняшний день обход ввода капчи с помощью специальных программ превратился в целую индустрию заработка – многие сервисы предлагают свои услуги, другие выпускают автоматические программы для ввода капчи, однако все еще человек справляется с распознанием капчей намного быстрее и точнее, чем бот. Поэтому если вам необходимо лучшее решение для обхода капчи, в этой статье вы найдете ссылки на несколько сервисов для массового и эффективного ввода капчи.

Содержание

  • 1 Когда и как можно воспользоваться автоматическим вводом капчи?
  • 2 Как работают программы по вводу капчи?
  • 3 Какие сервисы предлагают лучшие решения для обхода капчи?

Когда и как можно воспользоваться автоматическим вводом капчи?

Капча является одним из самых популярных в интернете способов проверки пользователя, который позволяет отличить программу-бота от настоящего человека.

Если вы лишь изредка сталкиваетесь с капчами, вам не потребуется решение для обхода этой проверки в интернете. Однако когда требуется массовое распространение рекламы, множественная регистрация на сайтах или другие действия, которые обычно блокируются сайтами с помощью проверки-капчи, в этом случае просто не обойтись без программы, предлагающей автоматическое распознавание капчи.

Сегодня используется два основных способа обхода капчи с помощью программ:

  • это полностью автоматизированные решения-боты;
  • полуавтоматические программы, в которых непосредственно распознание доверяется человеку

В целом, иногда полезными оказываются полностью автоматизированные программы, при работе которых распознание обеспечивает специальный бот. Распознание происходит либо благодаря непосредственной расшифровке символов, замаскированных на рисунке капчи, либо с помощью взлома сайта или подбора правильных вариантов ответа из базы данных. Впрочем, автоматические программы-боты не гарантируют 100%-ное распознание и даже сталкиваясь с несложными капчами обеспечивают распознание на уровне 70-75%.

Как работают программы по вводу капчи?

Самые лучшие на сегодняшний день программы по распознанию капчи – полуавтоматические, для работы которых используется специальный скрипт. Для их работы необходимо зарегистрироваться на сайте-поставщике услуг, определить задачу, например это скрипт массовой регистрации на определенном сайте или распространение заданной информации в интернете, после чего программа запускается и начинает свою работу. Она является полуавтоматической, потому что все капчи проходят через работников сайта, которые вручную распознают изображения. Однако сам процесс выполнения заданной задачи программой выполняется автоматически.

На распознание капчи обычно уходит около 15 секунд. Сразу после распознания программа направляет человеку следующую капчу и процесс повторяется, пока не достигается нужное количество распознаний. Боты не способны выполнить такую задачу столь быстро и эффективно.

Смотрите видео – Как ZennoPoster 5 может распознавать сложные капчи

Видео: YouTube / Google Webmasters

8. Captcha Solutions API

Captcha Solutions — это веб-сервис декодирования CAPTCHA, предлагающий решения на основе фиксированной ставки для каждой решаемой CAPTCHA. Это RESTful Captcha Solutions APITrack этот API разработан для решения большого количества задач CAPTCHA для широкого спектра приложений.

9. 2Captcha API

2Captcha предоставляет услуги обработки изображений и CAPTCHA, созданные человеком.API 2Captcha возвращает данные распознавания изображений с помощью человека для авторизации онлайн-пользователей. С помощью API разработчики могут применить доступный алгоритм, который включает отправку изображения на сервер, получение идентификатора изображения, начало цикла, который проверяет, решена ли CAPTCHA, и подтверждение правильности ответа.

10. Captcha.guru API

Captcha.guru APITrack этот API предоставляет услуги reCAPTCHA и antiCAPTCHA. С помощью API разработчики могут использовать изображение, содержащее искаженный, но понятный человеку текст.Чтобы решить CAPTCHA, пользователь должен ввести текст с изображения. API поддерживает форматы JSON. Ключи API необходимы для аутентификации.

Вышеупомянутые API, а также еще около 34 API, а также более 50 SDK и 25 образцов исходного кода доступны в категории CAPTCHA на ProgrammableWeb.

решатель капчи · PyPI

Описание проекта

Универсальный API для сервисов разгадывания капчи.

Установка

 pip install captcha-solver
 

Пример серверной части Twocaptcha

Сайт сервиса

https: // 2captcha.com? from = 3019071

 из captcha_solver import CaptchaSolver

solver = CaptchaSolver ('twocaptcha', api_key = '2captcha.com API ЗДЕСЬ')
raw_data = open ('captcha.png', 'rb'). читать ()
печать (solver.solve_captcha (raw_data))
 

Пример серверной части Rucaptcha

Сайт сервиса

https://rucaptcha. com?from=3019071

 из captcha_solver import CaptchaSolver

solver = CaptchaSolver ('rucaptcha', api_key = 'RUCAPTCHA_KEY')
raw_data = open ('captcha.png', 'rb'). читать ()
печать (решатель.решить_captcha (raw_data))
 

Пример серверной части браузера

 из captcha_solver import CaptchaSolver

solver = CaptchaSolver ('браузер')
raw_data = open ('captcha.png', 'rb'). читать ()
печать (solver.solve_captcha (raw_data))
 

Пример бэкэнда антигейт

Веб-сайт службы

http://getcaptchasolution.com/ijykrofoxz

 из captcha_solver import CaptchaSolver

solver = CaptchaSolver ('antigate', api_key = 'ANTIGATE_KEY')
raw_data = open ('captcha.png', 'rb').читать()
печать (solver.solve_captcha (raw_data))
 

Скачать файлы

Загрузите файл для своей платформы. Если вы не уверены, что выбрать, узнайте больше об установке пакетов.

Файлы для решателя капчи, версия 0. 1.5
Имя файла, размер Тип файла Версия Python Дата загрузки Хеши
Имя файла, размер captcha-solver-0.1.5.tar.gz (7.1 КБ) Тип файла Источник Версия Python Никто Дата загрузки Хеши Вид

FATCHA: биометрия предоставляет инструменты для CAPTCHA

  • 1.

    Ахонен Т., Хадид А., Пиетикайнен М. (2006) Описание лица с помощью локальных двоичных шаблонов: приложение для распознавания лиц. IEEE Trans Pattern Anal Mach Intell 28 (12): 2037–2041

    Статья МАТЕМАТИКА Google ученый

  • 2.

    Almazyad AS, Ahmad Y, Kouchay SA (2011) Мультимодальный код проверки подлинности: схема проверки пользователя. В: Международная конференция по информатике и приложениям (ICISA), 2011, стр. 1–7. IEEE

  • 4.

    Bursztein E, Bethard S, Fabry C, Mitchell JC, Jurafsky D (2010) Насколько хорошо люди решают капчи? Масштабная оценка. Дата обращения: 4 декабря 2015 г. http://www.stanford.edu/jurafsky/burszstein_2010_captcha.pdf

  • 5.

    Bursztein E, Martin M, Mitchell J (2011) Сильные и слабые стороны текстовой системы капчи. В: Материалы 18-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 125–138. ACM

  • 6.

    Bushell D (2011 г.) В поисках идеальной CAPTCHA. Дата обращения: 4 декабря 2015 г. http://www.smashingmagazine.com/2011/03/in-search-of-the-perfect-captcha/

  • 7.

    Datta R, Li J, Wang JZ (2005) Imagination: надежная система генерации капчи на основе изображений.В: Материалы 13-й ежегодной международной конференции ACM по мультимедиа, стр. 331–334. ACM

  • 8.

    De Marsico M, Marchionni L, Novelli A, Oertel M (2015) Fatcha: captcha are you !. В: Материалы 11-й проводимой раз в два года конференции, посвященной итальянской главе SIGCHI, стр. 118–125. ACM

  • 9.

    Gossweiler R, Kamvar M, Baluja S (2009) Что такое captcha ?: капча, основанная на ориентации изображения. В: Материалы 18-й международной конференции во всемирной паутине, стр. 841–850.ACM

  • 10.

    Goswami G, Singh R, Vatsa M, Powell B, Noore A (2012) Captcha распознавания лиц. В: Пятая международная конференция IEEE по биометрии: теория, приложения и системы (BTAS), 2012 г., стр. 412–417. IEEE

  • 11.

    Эрнандес-Кастро CJ, Ribagorda A, Saez Y (2010) Атака по побочному каналу на Humanauth captcha. В: Материалы международной конференции по безопасности и криптографии (SECRYPT) 2010 г., стр. 1–7. IEEE

  • 12.

    May M (2005) Недоступность капчи.Альтернативы визуальным тестам Тьюринга в сети. I: W3C (красный), Примечание рабочей группы W3C, работа в процессе

  • 14.

    Мори Дж., Малик Дж. (2003) Распознавание объектов в беспорядке со стороны противника: Нарушение визуальной капчи. В: Конференция компьютерного общества IEEE по компьютерному зрению и распознаванию образов, 2003 г.Ход работы. 2003 г., том 1, стр. I – 134. IEEE

  • 15.

    Pantic M, Rothkrantz LJ (2004) Распознавание лицевых движений для анализа выражения лица по статическим изображениям лиц. IEEE Trans Syst Man Cybern Часть B Cybern 34 (3): 1449–1461

    Статья Google ученый

  • 17.

    Poh N, Blanco-Gonzalo R, Wong R, Sanchez-Reillo R (2016) База данных лиц слепых субъектов. IET Biom 5 (1): 20–27

    Статья Google ученый

  • 18.

    Power C, Freire A, Petrie H, Swallow D (2012) Рекомендации — это только половина дела: проблемы доступности, с которыми сталкиваются слепые пользователи Интернета. В: Материалы конференции SIGCHI по человеческому фактору в вычислительных системах, стр. 433–442. ACM

  • 19.

    Rathgeb C, Uhl A (2011) Обзор биометрических криптосистем и аннулируемой биометрии. EURASIP J Inf Secur 2011 (1): 1–25

    Статья Google ученый

  • 20.

    Рошанбин Н., Миллер Дж. (2013) Обзор и анализ современных подходов к капче. Журнал веб-инженерии 12 (1-2): 1-40

    Google ученый

  • 21.

    Rui Y, Liu Z (2004) Artifacial: автоматический обратный тест Тьюринга с использованием черт лица. Мультимедийные системы 9 (6): 493–502

    Статья Google ученый

  • 22.

    Schapire RE (2003) Повышающий подход к машинному обучению: обзор. В кн .: Нелинейное оценивание и классификация, с. 149–171. Springer

  • 24.

    Ширали-Шахреза М., Ширали-Шахреза С. (2008) Капча движения. В: Конференция по взаимодействию человеческих систем, 2008, стр. 1042–1044.IEEE

  • 25.

    Shirali-Shahreza MH, Shirali-Shahreza M (2007) Локализованная капча для неграмотных людей. В: Международная конференция по интеллектуальным и передовым системам, 2007. ICIAS 2007, стр. 675–679. IEEE

  • 26.

    Виола П., Джонс М. (2001) Быстрое обнаружение объектов с использованием усиленного каскада простых функций. В: Материалы конференции компьютерного общества IEEE 2001 г. по компьютерному зрению и распознаванию образов, 2001 г. CVPR 2001, том 1, стр. I – 511. IEEE

  • 27.

    Фон Ан Л., Маурер Б., МакМиллен С., Абрахам Д., Блюм М. (2008) Recaptcha: распознавание символов на основе человека с помощью мер веб-безопасности. Наука 321 (5895): 1465–1468

    MathSciNet Статья МАТЕМАТИКА Google ученый

  • 28.

    W3C — Инициатива по обеспечению доступности Интернета: альтернативы и идеи с помощью Captcha. http://www.w3.org/WAI/GL/wiki/Captcha_Alternatives_and_gotits (2015 г.). Последнее изменение: 28 августа 2015 г .; Дата обращения: 04.12.2015

  • 29.

    Weinland D, Ronfard R, Boyer E (2011) Обзор основанных на видении методов представления, сегментации и распознавания действий.

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *