Как распознать капчу бесплатно: используем онлайн сервисы, самостоятельно распознаем и убираем

Содержание

Как найти зашифрованный код капчи – Лайфхакер

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

Содержание

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

Как работают программы для обхода капчи?

texnologia nika turing tests internet e1472802208539 - Как найти зашифрованный код капчи

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

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

Для робота подобрать нужный вариант оказывается не так сложно, бывает же, что в интернете встречаются капчи, которые можно взломать. Бот оценивают капчу и если ее код легко добыть, то поиск правильного ответа не заставит себя ждать.

Антикапча-сервис ручного распознаванияНад распознаванием капчи работают живые люди, поэтому сервису подвластно все, что способен распознать человек:

текстовые капчи, графические капчи: ReCaptcha V2, KeyCaptcha, FunCaptcha и др.

Зарегистрироваться>>>

Как можно обходить капчу на простых ресурсах?

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

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

Где зашифрован код капчи и как его получить

Чаще всего код капчи помещен в PHP-скрипт index.php и недостаточно защищенный сайт позволяет легко получить код для последующего взлома. Обычно в скрипте капчи зашифрован ее собственный алфавит и варианты ответа на те или иные изображения.

Смотрите видео – Сервис для автоматического распознавания капчи:


Антикапча-сервис ручного распознаванияНад распознаванием капчи работают живые люди, поэтому сервису подвластно все, что способен распознать человек:

текстовые капчи, графические капчи: ReCaptcha V2, KeyCaptcha, FunCaptcha и др.

Зарегистрироваться>>>

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

нейросеть на Tensorflow,Keras,python v числовая зашумленная капча / Хабр

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

попутно понять работу простой нейросети на практике, а также улучшить ее результаты.


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

Плясать от печки. Вместо вступления

Возможно повторятся чьи-то слова, но большинство книг по Deep Learning действительно начинаются с того, что читателю предлагаются заранее заготовленные данные, с которыми он начинает работать. Как-то MNIST — 60 000 рукописных цифр, CIFAR-10 и т.п. После прочтения человек выходит подготовленным… к этим наборам данных. Совершенно не ясно, как использовать свои данные и главное, как что-то улучшить при построении своей собственной нейросети.

Поэтому очень кстати вышла статья на pyimagesearch.com о том как работать со своими собственными данными, а также ее перевод.

Но, как говорится, хрен редьки не слаще: даже с переводом разжеваной статьи по keras осталось много слепых мест. Опять же предлагается заранее подготовленный датасет, только уже с котами, собаками и пандами. Придется заполнить пустоты самостоятельно.

Однако за базу будет взята эта статья и код.

Собираем данные по капчам

Здесь нет ничего нового. Нам нужны капчи-образцы, т.к. сеть будет учиться по ним под нашим руководством. Можете намайнить капч самостоятельно, а можете взять немного здесь — 29 000 капч. Теперь необходимо нарезать цифр из каждой капчи. Необязательно резать все 29 000 капч, тем более, что 1 капча дает 5 цифр. 500 капч будет более чем достаточно.

Как резать? Можно в photoshopе, но лучше иметь нож получше.

Поэтому вот код ножа на python — скачать. (для Windows. Предварительно создать папки C:\1\test и C:\1\test-out).

На выходе получится свалка из цифр от 1 до 9 (нулей в капче нет).

Далее надо разобрать этот завал из цифр по папкам от 1 до 9 и разложить в каждую папку по соответствующей цифре. Так себе занятие. Но за день можно разобрать до 1000 цифр.

Если при выборе цифры возникает сомнение какая из цифр, лучше удалить этот образец. И ничего страшного если цифры будут зашумлены или неполностью входить в «кадр»:

Набрать в каждую папку надо штук по 200 образцов каждой цифры. Можно эту работу поручить сторонним сервисам, но лучше сделать все самим, чтобы потом не искать неправильно соотнесенные цифры.

Нейросеть. Тестовая

Тятя, тятя, наши сети притащили мертвеца

Перед тем как начать работать с собственными данными лучше пройтись по вышеуказанной статье и запустить код, чтобы понять, что все компоненты (keras, tensorflow и т.п.) установлены и работают корректно.

Будем использовать простую сеть, синтаксис запуска которой из командной (!) строки:

python train_simple_nn.py --dataset animals --model output/simple_nn.model --label-bin output/simple_nn_lb.pickle --plot output/simple_nn_plot.png

*Tensorflow может писать при работе об ошибках в собственных файлах и устаревших методах, можно это исправить руками, а можно просто игнорировать.

Главное, чтобы на выходе после отработки программы в папке проекта output появились два файла: simple_nn_lb.pickle и simple_nn.model, а на экран будет выведено изображение животного с надписью и процентом распознавания, например:

Нейросеть — собственные данные

Теперь, когда тест работоспособности сети проверен, можно подключить собственные данные и начать обучать сеть.

Поместим в папку dat папки с цифрами, содержащими отобранные образцы по каждой цифре.

Папку dat для удобства разместим в папке с проектом (например рядом c папкой animals).

Теперь синтаксис запуска обучения сети будет таким:

python train_simple_nn.py --dataset dat --model output/simple_nn.model --label-bin output/simple_nn_lb.pickle --plot output/simple_nn_plot.png

Однако пока рано запускать обучение.

Необходимо поправить файл train_simple_nn.py.

1. В самый конец файла:

#model.summary()
score = model.evaluate(testX, testY, verbose=1)
print("\nTest score:", score[0])
print('Test accuracy:', score[1])

Это добавит информативности.

2.

image = cv2.resize(image, (32, 32)).flatten()

поменять на

image = cv2.resize(image, (16, 37)).flatten()

Здесь мы изменяем размер входной картинки. Почему именно такой размер? Потому как большинство из нарезанных цифр имеют такой размер либо приводятся к нему. Если масштабировать до 32×32 пикселя, картинка будет искажена. Да и зачем это делать?

Кроме того, загоняем это изменение в try:


try:
   image = cv2.resize(image, (16, 37)).flatten()
except:
    continue

Т.к. некоторые картинки программа не может переварить и выдает None, поэтому они пропускаются.

3.Теперь самое важное. Там где комментарий в коде

определим архитектуру 3072-1024-512-3 с помощью Keras

Архитектура сети в статье определена как 3072-1024-512-3. Это означает, что сеть получает на вход 3072 (32 пикселя * 32 пикселя * 3), далее слой 1024, слой 512 и на выходе 3 варианта — кот, собака или панда.

В нашем случае вход 1776 (16 пикселей*37 пикселей*3), далее слой 1024, слой 512, на выходе 9 вариантов цифр.

Поэтому наш код:

model.add(Dense(1024, input_shape=(1776,), activation="sigmoid"))model.add(Dense(512, activation="sigmoid"))

*9 выходов дополнительно указывать не нужно, т.к. программа сама определяет количество выходов по количеству папок в датасете.

Запускаем

python train_simple_nn.py --dataset dat --model output/simple_nn.model --label-bin output/simple_nn_lb.pickle --plot output/simple_nn_plot.png

Так как картинки с цифрами маленькие, сеть обучается очень быстро (5-10 мин) даже на слабом железе, используя только CPU.

После прогона программы в командой строке посмотрим результаты:

Это означает, что на обучающем наборе достигнута верность — 82,19%, на контрольном — 75,6 % и на тестовом — 75,59 %.

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

Посмотрим также графическую часть работы нейросети. Она в папке output проекта simple_nn_plot.png:

Быстрее, выше, сильнее. Улучшаем результаты

Совсем коротко о настройке нейросети можно посмотреть здесь.

Вариант подлиннее следующий.

Добавим эпох.

В коде меняем

EPOCHS = 75

на

EPOCHS = 200

Увеличим «количество раз», которое сеть пройдет обучение.

Результат:

Таким образом, 93,5%, 92,6%, 92,6%.

В картинках:

Здесь заметно, что синяя и красные линии после 130 эпохи начинают разъезжаться друг от друга и это говорит, что дальнейшее увеличение числа эпох ничего не даст. Проверим это.

В коде меняем

EPOCHS = 200

на

EPOCHS = 500

и снова прогоняем.

Результат:

Итак, имеем:

99%,95,5%,95,5%.

И на графике:

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

Проверим работу сети на реальном примере.

Для этих целей в папке проекта есть скрипт predict.py. Перед запуском подготовимся.

В папку images проекта положим файлы с изображениями цифр с капчи, ранее не попадавшиеся сети в процессе обучения. Т.е. надо взять цифры не из набора датасета dat.

В самом файле поправим две строки для размера изображений по умолчанию:

ap.add_argument("-w", "--width", type=int, default=16, help="target spatial dimension width")
ap.add_argument("-e", "--height", type=int, default=37, help="target spatial dimension height")

Запускаем из коммандной строки:

python predict.py --image images/1.jpg --model output/simple_nn.model --label-bin output/simple_nn_lb.pickle --flatten 1

И видим результат:

Другая картинка:

Однако не со всеми зашумленными цифрами работает:

Что здесь можно сделать?

  1. Увеличить количество экземпляров цифр в папках для обучения.
  2. Попробовать другие методы.

Попробуем другие методы

Как видно из последнего графика, синяя и красная линии расходятся примерно на 130 эпохе. Это означает, что, обучение после 130 эпохи неэффективно. Зафиксируем результат на 130 эпохе: 89,3%,88%,88% и посмотрим, работают ли другие методы улучшения работы сети.

Снизим скорость обучения.

INIT_LR = 0.01

на

INIT_LR = 0.001

Результат:
41%,39%,39%

Что ж, мимо.

Дабавим дополнительный скрытый слой.

model.add(Dense(512, activation="sigmoid"))

на

model.add(Dense(512, activation="sigmoid")) 
model.add(Dense(258, activation="sigmoid"))

Результат:
56%,62%,62%

Получше, но нет.

Однако, если увеличить количество эпох до 250:

84%,83%,83%

При этом красная и синяя линия не отрываются друг от друга после 130 эпохи:

Сохраним 250 эпох и применим прореживание:

from keras.layers.core import Dropout

Между слоями вставим прореживание:


model.add(Dense(1024, input_shape=(1776,), activation="sigmoid"))
model.add(Dropout(0.3)) 
model.add(Dense(512, activation="sigmoid"))
model.add(Dropout(0.3))
model.add(Dense(258, activation="sigmoid"))
model.add(Dropout(0.3))

Результат:
53%,65%,65%

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


model.add(Dense(1024, input_shape=(1776,), activation="sigmoid"))
model.add(Dropout(0.3)) 
model.add(Dense(512, activation="sigmoid"))
model.add(Dropout(0.3))

Результат:
88%,92%,92%

С 1 дополнительным слоем, прореживанием и 500 эпохами:

model.add(Dense(1024, input_shape=(1776,), activation="sigmoid"))
model.add(Dropout(0.3)) 
model.add(Dense(512, activation="sigmoid"))
model.add(Dropout(0.3))
model.add(Dense(258, activation="sigmoid"))

Результат:
92,4%,92,6%,92,58%

Несмотря на более низкий процент по сравнению с простым увеличением эпох до 500, график выглядит более ровным:

И сеть обрабатывает изображения, которые ранее выпадали:

Соберем теперь все в один файл, который нарежет изображение с капчей на входе на 5 цифр, прогонит каждую цифру через нейросеть и выдаст результат в интерпретатор python.

Здесь попроще. В файл, который нарезал нам цифры из капчи добавим файл, который занимается предсказаниями.

Теперь программа не только нарежет капчу на 5 частей, но и выведет все распознанные цифры в интерпретатор:

Опять же надо иметь в виду, что программа не дает 100% результата и зачастую одна из 5 цифр неверна. Но и это неплохой результат, если учесть, что в обучающем наборе всего по 170-200 экземпляров для каждого числа.

Распознавание капчи длится 3-5 сек на компьютере средней мощности.

Как еще можно попытаться улучшить работу сети можно почитать в книге «Библиотека Keras — инструмент глубокого обучения» А. Джулли, С.Пала.

Итоговый скрипт, который режет капчу и распознает — здесь.

Запускается без параметров.

Переработанные скрипты для тренировки и теста сети.

Капчи для теста, в том числе с ложным срабатыванием — здесь.

Модель для работы — здесь.

Цифры, разложенные по папкам — здесь.

Декодирование капчи на Python / Хабр

Это перевод и форма повествования от первого лица сохранена. Автор — Бен Бойтер, бакалавр информационных технологий в Университете Чарльза Стерта (CSU).

Большинство людей не в курсе, но моей диссертацией была программа для чтения текста с изображения. Я думал, что, если смогу получить высокий уровень распознавания, то это можно будет использовать для улучшения результатов поиска. Мой отличный советник доктор Гао Джунбин предложил мне написать диссертацию на эту тему. Наконец-то я нашел время написать эту статью и здесь я постараюсь рассказать о всем том, что узнал. Если бы только было что-то подобное, когда я только начинал…

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

Капча устроена так, что человек может прочитать текст без труда, в то время, как машина — нет (привет, reCaptcha!). На практике это никогда не работало, т. к. почти каждую капчу, которую размещали на сайте взламывали в течение нескольких месяцев.

У меня неплохо получалось — более 60% изображений было успешно разгадано из моей небольшой коллекции. Довольно неплохо, учитывая количество разнообразных изображений в интернете.

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

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

Давайте начнем. Вот список того, что я собираюсь осветить в этой статье:

  • Используемые технологии
  • Что такое капча
  • Как найти и извлечь текст из изображений
  • Распознавание изображения с использованием ИИ
  • Обучение
  • Собираем все вместе
  • Результаты и выводы
Используемые технологии

Все примеры написаны на Python 2.5 с использованием библиотеки PIL. Должно работать и в Python 2.6 (под Python 2.7.3 отлично запускается, прим. перев.).

Установите их в указанном выше порядке и вы готовы к запуску примеров.

Отступление

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

Капча, что это такое в конце концов?

В основном капча является примером одностороннего преобразования. Вы можете легко взять набор символов и получить из него капчу, но не наоборот. Другая тонкость – она должна быть простая для чтения человеком, но не поддаваться машинному распознаванию. Капча может рассматриваться как простой тест типа «Вы человек?». В основном они реализуются как изображение с какими-то символами или словами.

Они используются для предотвращения спама на многих интернет-сайтах. Например, капчу можно найти на странице регистрации в Windows Live ID.

Вам показывают изображение, и, если вы действительно человек, то вам нужно ввести его текст в отдельное поле. Кажется неплохой идеей, которая может защитить вас от тысяч автоматических регистраций с целью спама или распространения виагры на вашем форуме? Проблема в том, что ИИ, а в частности методы распознавания изображений претерпели значительные изменения и становятся очень эффективными в определенных областях. OCR (оптическое распознавание символов) в наши дни является довольно точным и легко распознает печатный текст. Было принято решение добавить немного цвета и линий, чтобы затруднить работу компьютеру без каких-то неудобств для пользователей. Это своего рода гонка вооружений и как обычно на любую защиту придумывают более сильное оружие. Победить усиленную капчу сложнее, но все равно возможно. Плюс ко всему изображение должно оставаться довольно простым, чтобы не вызывать раздражение у обычных людей.

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

Это довольно простая капча, которая состоит из символов одинакового цвета и размера на белом фоне с некоторым шумом (пиксели, цвета, линии). Вы думаете, что этот шум на заднем плане затруднит распознавание, но я покажу, как его легко удалить. Хоть это и не очень сильная капча, но она является хорошим примером для нашей программы.

Как найти и извлечь текст из изображений

Существует много методов для определения положения текста на изображении и его извлечения. С помощью Google вы можете найти тысячи статей, которые объясняют новые методы и алгоритмы для поиска текста.

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

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

  • Белый (фон)
  • Серый (шум)
  • Красный (текст)

На Python это будет выглядеть очень просто.

Следующий код открывает изображение, преобразует его в GIF (облегчает нам работу, т. к. в нем всего 255 цветов) с печатает гистограмму цветов.

from PIL import Image

im = Image.open("captcha.gif")
im = im.convert("P")

print im.histogram()

В итоге мы получим следующее:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0
, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 2, 0, 1, 0, 0, 1,
0, 2, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 3, 1, 3, 3, 0,
 0, 0, 0, 0, 0, 1, 0, 3, 2, 132, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 15, 0
, 1, 0, 1, 0, 0, 8, 1, 0, 0, 0, 0, 1, 6, 0, 2, 0, 0, 0, 0, 18, 1, 1, 1, 1, 1, 2,
 365, 115, 0, 1, 0, 0, 0, 135, 186, 0, 0, 1, 0, 0, 0, 116, 3, 0, 0, 0, 0, 0, 21,
 1, 1, 0, 0, 0, 2, 10, 2, 0, 0, 0, 0, 2, 10, 0, 0, 0, 0, 1, 0, 625]

Здесь мы видем количество пикселей каждого из 255 цветов в изображении. Вы можете увидеть, что белый (255, самый последний) встречается чаще всего. За ним идет красный (текст). Чтобы убедиться в этом, напишем небольшой скрипт:

from PIL import Image
from operator import itemgetter

im = Image.open("captcha.gif")
im = im.convert("P")
his = im.histogram()

values = {}

for i in range(256):
  values[i] = his[i]

for j,k in sorted(values.items(), key=itemgetter(1), reverse=True)[:10]:
  print j,k

И получаем такие данные:












ЦветКоличество пикселей
255625
212365
220186
219135
169132
227116
213115
23421
20518
18415

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

Как только мы получили эту информацию, мы создаем новые изображения, основанные на этих цветовых группах. Для каждого из наиболее распространенных цветов мы создаем новое бинарное изображение (из 2 цветов), где пиксели этого цвета заполняется черным, а все остальное белым.

Красный у нас стал третьем среди наиболее распространенных цветов и это означает, что мы хотим сохранить группу пикселей с цветом 220. Когда я экспериментировал я обнаружил, что цвет 227 довольно близок к 220, так что мы сохраним и эту группу пикселей. Приведенный ниже код открывает капчу, преобразует ее в GIF, создает новое изображение такого же размера с белым фоном, а затем обходит оригинальное изображение в поисках нужного нам цвета. Если он находит пиксель с нужным нам цветом, то он отмечает этот же пиксель на втором изображении черным цветом. Перед завершением работы второе изображение сохраняется.

from PIL import Image

im = Image.open("captcha.gif")
im = im.convert("P")
im2 = Image.new("P",im.size,255)

im = im.convert("P")

temp = {}

for x in range(im.size[1]):
  for y in range(im.size[0]):
    pix = im.getpixel((y,x))
    temp[pix] = pix
    if pix == 220 or pix == 227: # these are the numbers to get
      im2.putpixel((y,x),0)

im2.save("output.gif")

Запуск этого фрагмента кода дает нам следующий результат.



ОригиналРезультат

На картинке вы можете увидеть, что у нас успешно получилось извлечь текст из фона. Чтобы автоматизировать этот процесс вы можете совместить первый и второй скрипт.

Слышу, как спрашиваете: «А что, если на капче текст написан разными цветами?». Да, наша техника все еще сможет работать. Предположите, что наиболее распространенный цвет – это цвет фона и тогда вы сможете найти цвета символов.

Таким образом, на данный момент мы успешно извлекли текст из изображения. Следующим шагом будет определение того, содержит ли изображение текст. Я пока не буду писать здесь код, т. к. это сделает понимание сложным, в то время как сам алгоритм довольно прост.

for each binary image:
  for each pixel in the binary image:
    if the pixel is on:
      if any pixel we have seen before is next to it:
        add to the same set
      else:
        add to a new set

На выходе у вас будет набор границ символов. Тогда все, что вам нужно будет сделать – это сравнить их между собой и посмотреть, идут ли они последовательно. Если да, то вам выпал джек-пот и вы правильно определили символы, идущие рядом. Вы так же можете проверять размеры полученных областей или просто создавать новое изображение и показывать его (метод show() у изображения), чтобы убедиться в точности алгоритма.

from PIL import Image

im = Image.open("captcha.gif")
im = im.convert("P")
im2 = Image.new("P",im.size,255)

im = im.convert("P")

temp = {}

for x in range(im.size[1]):
  for y in range(im.size[0]):
    pix = im.getpixel((y,x))
    temp[pix] = pix
    if pix == 220 or pix == 227: # these are the numbers to get
      im2.putpixel((y,x),0)

# new code starts here

inletter = False
foundletter=False
start = 0
end = 0

letters = []

for y in range(im2.size[0]): # slice across
  for x in range(im2.size[1]): # slice down
    pix = im2.getpixel((y,x))
    if pix != 255:
      inletter = True
  if foundletter == False and inletter == True:
    foundletter = True
    start = y

  if foundletter == True and inletter == False:
    foundletter = False
    end = y
    letters.append((start,end))

  inletter=False
print letters

В результате у нас получалось следующее:

[(6, 14), (15, 25), (27, 35), (37, 46), (48, 56), (57, 67)]

Это позиции по горизонтали начала и конца каждого символа.

ИИ и векторное пространство при распознавании образов

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

Чуть ли ни первой вещью, с которой сталкиваются при знакомстве с ИИ в распознавании образов являются нейронные сети. Лично я никогда не имел успеха с нейронными сетями при распознавании символов. Я обычно обучаю его 3-4 символам, после чего точность падает так низко, что она была бы на порядок выше, отгадывай я символы случайным образом. Сначала это вызвало у меня легкую панику, т. к. это было тем самым недостающем звеном в моей диссертации. К счастью, недавно я прочитал статью о vector-space поисковых системах и посчитал их альтернативным методом классификации данных. В конце концов они оказались лучшем выбором, т. к.

  1. Они не требуют обширного изучения
  2. Вы можете добавлять/удалять неправильные данные и сразу видеть результат
  3. Их легче понять и запрограммировать
  4. Они обеспечивают классифицированные результаты, таким образом вы сможете видеть топ X совпадений
  5. Не можете что-то распознать? Добавьте это и вы сможете разпознать это моментально, даже если оно полностью отличается от чего-то замеченного ранее.

Конечно, бесплатного сыра не бывает. Главный недостаток в скорости. Они могут быть намного медленнее нейронных сетей. Но я думаю, что их плюсы все же перевешивают этот недостаток.

Если хотите понять, как работает векторное пространство, то советую почитать Vector Space Search Engine Theory. Это лучшее, что я нашел для начинающих.

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

Уже вернулись? Хорошо. Теперь мы должны запрограммировать наше векторное пространство. К счастью, это совсем не сложно. Приступим.

import math

class VectorCompare:
  def magnitude(self,concordance):
    total = 0
    for word,count in concordance.iteritems():
      total += count ** 2
    return math.sqrt(total)

  def relation(self,concordance1, concordance2):
    relevance = 0
    topvalue = 0
    for word, count in concordance1.iteritems():
      if concordance2.has_key(word):
        topvalue += count * concordance2[word]
    return topvalue / (self.magnitude(concordance1) * self.magnitude(concordance2))

Это реализация векторного пространства на Python в 15 строк. По существу оно просто принимает 2 словаря и выдает число от 0 до 1, указывающее как они связаны. 0 означает, что они не связаны, а 1, что они идентичны.

Обучение

Следующее, что нам нужно – это набор изображений, с которыми мы будем сравнивать наши символы. Нам нужно обучающее множество. Это множество может быть использовано для обучения любого рода ИИ, который мы будем использовать (нейронные сети и т. д.).

Используемые данные могут быть судьбоносными для успешности распознавания. Чем лучше данные, тем больше шансов на успех. Так как мы планируем распознавать конкретную капчу и уже можем извлечь из нее символы, то почему бы не использовать их в качестве обучающего множества?

Это я и сделал. Я скачал много сгенерированных капч и моя программа разбила их на буквы. Тогда я собрал полученные изображения в коллекции (группы). После нескольких попыток у меня было по крайней мере один пример каждого символа, которые генерировала капча. Добавление большего количества примеров повысит точность распознавания, но мне хватило и этого для подтверждения моей теории.

from PIL import Image
import hashlib
import time

im = Image.open("captcha.gif")
im2 = Image.new("P",im.size,255)
im = im.convert("P")

temp = {}

print im.histogram()

for x in range(im.size[1]):
  for y in range(im.size[0]):
    pix = im.getpixel((y,x))
    temp[pix] = pix
    if pix == 220 or pix == 227: # these are the numbers to get
      im2.putpixel((y,x),0)
    

inletter = False
foundletter=False
start = 0
end = 0

letters = []


for y in range(im2.size[0]): # slice across
  for x in range(im2.size[1]): # slice down
    pix = im2.getpixel((y,x))
    if pix != 255:
      inletter = True

  if foundletter == False and inletter == True:
    foundletter = True
    start = y

  if foundletter == True and inletter == False:
    foundletter = False
    end = y
    letters.append((start,end))
  inletter=False

# New code is here. We just extract each image and save it to disk with
# what is hopefully a unique name
  
count = 0
for letter in letters:
  m = hashlib.md5()
  im3 = im2.crop(( letter[0] , 0, letter[1],im2.size[1] ))
  m.update("%s%s"%(time.time(),count))
  im3.save("./%s.gif"%(m.hexdigest()))
  count += 1

На выходе мы получаем набор изображений в этой же директории. Каждому из них присваивается уникальных хеш на случай, если вы будете обрабатывать несколько капч.

Вот результат этого кода для нашей тестовой капчи:

Вы сами решаете, как хранить эти изображения, но я просто поместил их в директории с тем же именем, что находится на изображении (символ или цифра).

Собираем все вместе

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

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

Здесь мы просто загружаем обучающее множество, чтобы иметь возможность сравнивать с ним:

def buildvector(im):
  d1 = {}
  count = 0
  for i in im.getdata():
    d1[count] = i
    count += 1
  return d1
v = VectorCompare()

iconset =  
['0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',' 
u','v','w','x','y','z']

imageset = []

for letter in iconset:
  for img in os.listdir('./iconset/%s/'%(letter)):
    temp = []
    if img != "Thumbs.db":
      temp.append(buildvector(Image.open("./iconset/%s/%s"%(letter,img))))
    imageset.append({letter:temp})

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

count = 0
for letter in letters:
  m = hashlib.md5()
  im3 = im2.crop(( letter[0] , 0, letter[1],im2.size[1] ))

  guess = []

  for image in imageset:
    for x,y in image.iteritems():
      if len(y) != 0:
        guess.append( ( v.relation(y[0],buildvector(im3)),x) )

  guess.sort(reverse=True)
  print "",guess[0]
  count += 1
Выводы

Теперь у нас есть все, что нужно и мы можем попробовать запустить нашу чудо-машину.

Входной файл – captcha.gif. Ожидаемый результат: 7s9t9j

python crack.py
 (0.96376811594202894, '7')
 (0.96234028545977002, 's')
 (0.9286884286888929, '9')
 (0.98350370609844473, 't')
 (0.96751165072506273, '9')
 (0.96989711688772628, 'j')

Здесь мы видем предполагаемый символ и степень уверенности в том, что это действительно он (от 0 до 1).

Похоже, что у нас действительно все получилось!

На самом деле на тестовых капчах данный скрипт будет выдавать успешный результат примерно в 22% случаев (у меня получилось 28.5, прим. перев.).

python crack_test.py
  Correct Guesses -  11.0
  Wrong Guesses -  37.0
  Percentage Correct -  22.9166666667
  Percentage Wrong -  77.0833333333

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

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

Выполнение этого кода на Core 2 Duo E6550 дает следующие результаты:

real	0m5.750s
user	0m0.015s
sys	0m0.000s

От переводчика. У меня на Dual Core T4400 получились следующие результаты:

real	0m0.176s
user	0m0.160s
sys	0m0.012s

В нашем каталоге находится 48 капч, из чего следует, что на разгадывание одной уходит примерно 0.12 секунд. С нашими 22% процентами успешного разгадывания мы можем разгадывать около 432 000 капч в день и получать 95 040 правильных результатов. А если использовать многопоточность?

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

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

В поисках идеальной CAPTCHA / Хабр

CAPTCHA, или Completely Automated Public Turing Tests to Tell Computers and Humans Apart (Полностью автоматический публичный тест Тьюринга для различения компьютеров и людей), была создана для того, что бы убедиться, что введенные данные не были сгенерированы компьютером. Эти своеобразные тесты обычно используются в Интернете для защиты форм регистрации и комментирования от спама. Если быть честным, я испытываю смешанные чувства насчет CAPTCHA. Она в большинстве случаев раздражает меня, но не смотря на это я использовал CAPTCHA в качестве защиты на некоторых сайтах.

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

Стремление к человечности

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

  • Массивная реклама;
  • Манипулирование онлайновыми системами голосования;
  • Создание нечестного превосходства;
  • Вандализм или уничтожение целостности, чистоты сайта;
  • Публикация неуместных ссылок для повышения рейтингов в поисковых системах;
  • Получение доступа к личной информации;
  • Распространение вредоносного кода.

Все это приводит к созданию прибыльных ситуаций для спамеров. Автоматизация процесса, очевидно, приводит к сверхчеловеческой скорости и эффективности.

Те, кто управляют сайтами, знают, что это достаточно распространенный бизнес и достаточно серьезная проблема. Akismet, популярная система по отлову спама (чаще всего встречается в виде плагина для WordPress), фиксирует более 18 миллионов спам-комментариев в день, в сумме эта система отловила 20 миллиардов комментариев за все ее историю. Система Mollom, которая создана с тем же предназначением, отлавливает более миллиона спам-комментариев в день, эта же система подсчитала, что более 90% комментариев – спам. Никакие просьбы остановиться не действуют на спамеров, но их жадность может сыграть нам на руку; использование автоматических систем для получения выгоды имеет некоторые слабости.

Знакомство с CAPTCHA

На одной стороне монеты спамер, на другой обычный владелец сайта, который столкнулся с некоторыми проблемами:

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

Автоматический спам постоянно беспокоит владельцев сайтов, поэтому CAPTCHA выглядит привлекательно как решение этой проблемы… до поры до времени. Время, необходимое для постоянного контроля пользовательского контента несопоставимо со временем, необходимым для введения CAPTCHA на сайте – именно это толкает разработчиков на использование CAPTCHA.

Не секрет то, что CAPTCHA используется практически везде. По статистике проекта reCAPTCHA более 200 миллионов сгенерированных reCAPTCHA проходят проверку ежедневно, в среднем пользователи затрачивают на ввод 10 секунд. Проект Drupal CAPTCHA сообщает о 100 тысячах использований в неделю, при том, что это лишь часть сайтов с этой защитой (речь идет лишь о тех, кто дал добро на отправку отчетов).

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

К сожалению, это не так. Проблема читаемости CAPTCHA не нова. Организация W3C опубликовала отчет в 2005 году на тему недоступности CAPTCHA, в котором было объявлено, что читаемость CAPTCHA человеком в некоторых системах может достигать лишь 90%. Немногим позже, в 2009 году, Кейси Генри обратил внимание на влияние CAPTCHA на переходы и предположил, что возможные потери клиентов составляют примерно 3%:

Учитывая тот факт, что множество людей рассматривают переходы, как источник доходов, потеря 3.2% клиентов может отразиться на продажах. Как по мне, так лучше вручную перебирать спам, чем терять часть прибыли.

— Кейси Генри, CAPTCHAs’ Effect on Conversion Rates

В 2010 году, команда Стэндфордского Университета опубликовала исследование, названное “Насколько хорошо люди справляются с CAPTCHA? Подробная оценка ситуации” (PDF), в котором была дана оценка CAPTCHA на крупнейших сайтах Интернета. Не стало сюрпризом то, что результаты оказались весьма неудовлетворительными, но больше всего поражает тот факт, что в среднем люди тратили 28.4 секунд на решение аудио-CAPTCHA. В исследовании так же уделялось внимание на проблемы людей, у которых английский язык не является родным.

Веб-разработчик Тим Кадлек предвещает смерть CAPTCHA, предоставляя достаточно серьезный аргумент против использования этой защиты:

Спам не является проблемой пользователей, это проблема людей, администрирующих сайт. Это очень высокомерно со стороны администраторов – сваливать такую проблему на плечи пользователей сайта.

— Тим Кадлек, Death To CAPTCHAs

Ввод CAPTCHA может казаться абсолютно тривиальной задачей, но исследования (как вышеупомянутый отчет от W3C) показывают, что подобное суждение имеет мало общего с реальным положением дел. И, как сказал Кадлек в своей статье, что же насчет пользователей с проблемным зрением, дислексией и другими заболеваниями, затрагивающими сенсорные функции? Для них это непреодолимое препятствие, это просто нечестно. Именно пользователи инвестируют и задают предназначение сайтам.

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

Мир CAPTCHA

Человеческий мозг является потрясающим инструментом. Его возможность концептуализировать, находить порядок в хаосе, адаптировать что-либо под человека делает его невероятно полезной вещью. В некоторых задачах он с легкостью оставляет компьютеры позади. В других – например, математика – он проигрывает по всем параметрам.
Логически рассуждая, можно вывести основные параметры наиболее успешной CAPTCHA. Итак, CAPTCHA должна быть:

  • Задачей, которую пользователи могут решить в любых условиях, но на решение которой не способен компьютер,
  • Задачей, которая решается пользователями в миг, но которая является тяжелой для компьютера,
  • Задачей, для решения которой требуется минимум ввода данных,
  • Задачей, которая должна быть легко выполнимой для всех пользователей, включая тех, кто страдает специфическими заболеваниями (CAPTCHA должна быть не сложнее обычного веб-серфинга).

Одно из наиболее заметных превосходств человека над компьютером выражается в умении различать визуальные образы и модели. Наиболее популярные CAPTCHA отталкиваются именно от этого факта.

Веб-разработчики перелопатили множество вариантов: простые тесты по определению образов, интерактивные задания, игра в крестики-нолики и математические задачи, с которым пришлось бы изрядно побороться даже математикам. Мы же рассмотрим более адекватные идеи, которые внедряются в Интернете в наше время.

Определение текста

Наиболее популярным типом CAPTCHA на данный момент является определение текста, набора символов (ярким примером является проект reCAPTCHA).
Проект reCAPTCHA нацелен на остановку спама и помощь в оцифровке книг.

reCAPTCHA была создана в Университете Карнеги-Меллона, доме первопроходцев CAPTCHA и создателей термина (в 2000). Ныне под управлением корпорации Google, проект использует отсканированный текст, который системы оптического распознавания символов (OCR) понять не могут. Это, в теории, предоставляет не взламываемую CAPTCHA, у которой так же есть еще одна «фича» — помощь в оцифровке книг силами пользователей.

Пример текста, проблемного для OCR, именно такие «проблемные» тексты использует reCAPTCHA

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

Команда проекта reCAPTCHA делает большие усилия для обеспечения аудио-альтернатив для людей с нарушениями зрения, но множество других CAPTCHA этого типа не имеют подобных вспомогательных средств. Как было упомянуто в исследовании Стэндфордского Университета, выполнение аудио-CAPTCHA занимает много времени. В том же исследовании было обращено внимание на проблемы с выполнением CAPTCHA с английскими словами.

Другая попытка улучшить обыкновенную текстовую CAPTCHA представлена в конце 2010 года компанией Solve Media, чье решение заключалось в том, что бы заменить обычный текст рекламой и связанным с ней вопросом.

Solve Media утверждает, что их CAPTCHA может быть выполнена гораздо быстрее, чем любые другие. Не смотря на то, что большинство относится к подобной маркетинговой болтовне скептически, у данного проекта определенно есть потенциал, особенно учитывая то, что у многих мировых брендов название не зависит от локального языка.

Пока текстовая CAPTCHA имеет некоторые недостатки (к примеру, спамеры могут использовать специальное ПО для распознавания текста в изображении и таким образом преодолеть анти-спам защиту), она все таки бесспорно решаема. Этот факт – камень в огород тех, кто не признает подобную защиту.

Логические задачи

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

Сервис TextCAPTCHA располагает более 180 миллионами вопросов, например:

  • Какая буква является шестой в слове «хабрахабр»?
  • Как выглядит число пятьдесят восемь тысяч пятьсот семьдесят четыре в виде цифр?
  • Какое число из 3, двадцать девять, 70, 46, 65 является наименьшим?

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

IBM Watson недавно показал миру устрашающе похожую на человеческую возможность обрабатывать текст, и подобная технология может стать повсеместной быстрее, чем мы думаем. Но вместо тревог о том, что логические вопросы могут стать посильными для компьютеров, мы должны использовать эту технологию для анализа пользовательских данных и отделения человеческого контента от сгенерированного компьютером, который в большинстве случаев является спамом. Сервисы вроде SBlam! активно развивают эту идею.

Специфические вопросы о конкретном сайте, такие как «Как называется этот сайт?» и «Какой цвет доминирует на изображении выше?» могут быть лучше вопросов на общую тему. Но с другой стороны, конечно, количество таких вопросов в любом случае будет смотреться ничтожным рядом с 180 миллионами вопросов от TextCAPTCHA.

Наиболее заметная проблема логических вопросов заключается в том, что они не многоязычны, обычно используется английский язык. Создание базы с сотнями миллионов вопросов на всех языках мира – задача непосильная никому. Когда перспективы столь далеки от идеальных, всплывает вопрос: правильным ли решением является CAPTCHA?

Определение изображений

Много людей экспериментировали с изображениями вместо текста. Выгода? Нет проблем с разборчивостью. Сервисы вроде identiPIC предлагают пользователю определить объект на изображении. Корпорация Microsoft так же исследовала этот метод в своем проекте Asirra.
Microsoft Asirra

Тот факт, что мы не видим распространенности подобной CAPTCHA, означает, что этот метод не улучшает юзабилити. На самом деле, он ставит под угрозу доступность. Люди с проблемным зрением лишены всякого шанса пройти эту CAPTCHA, а добавление какого-либо текста или описания резко снизит эффективность теста.

В 2009 году Google опубликовал исследование (созданное под руководством Рича Госсвейлера, Марьяма Кемвара и Шумита Балуджа), в котором был обращен взгляд на альтернативные формы этого типа CAPTCHA. Проект предлагал пользователям поправить положения изображений, поворачивая их.

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

Определение друзей

Еще одна действительно интересная CAPTCHA, представленная в январе 2011 года как результат работы интернет-гиганта Facebook. Компания экспериментирует с социальной аутентификацией для подтверждения владения аккаунтом. В чем же заключается этот эксперимент:

Мы покажем вам несколько фотографий ваших друзей и попросим вас назвать того, кто на них изображен. Хакеры на другой стороне планеты могут знать ваш пароль, но не могут знать ваших друзей.

— Алекс Райс, Facebook, A Continued Commitment to Security
Тест Facebook на определение друзей

То, что делает нововведение Facebook абсолютно отличным от остальных решений, так это то, что эта CAPTCHA отсеивает не только машин, но и вполне себе человечных злоумышленников.

У Facebook определенно есть перспектива внедрить эту CAPTCHA по всему Интернету. С базой в 600 миллионов пользователей и миллионами сайтов, в которые интегрированы модули Facebook, интернет-гигант может использовать метод определения друзей для аутентификации где угодно. Нельзя забывать и про то, что подобный метод куда легче, чем определение текста.

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

Интерактивные CAPTCHA

Существует метод, который привлек нешуточное внимание пользователей за то, что выполнить предлагаемую задачу могут только люди. They Make Apps представила CAPTCHA в виде маленького ползунка, который надо передвинуть в правую сторону для того, что бы подтвердить отправку данных. CAPTCHA сообщает пользователю: «Покажи свою человечность, переведи ползунок на конец линии для создания аккаунта.»
They Make Apps использует CAPTCHA в виде ползунка

Очевидно, этот вариант не подходит для людей с ограниченными способностями. Более того, разработка скрипта, который автоматически бы переводил ползунок для активации кнопки «Отправить» не должна быть сложной. Более продвинутая версия ползунка используется в комментариях в блоге Adafruit. Четыре разных ползунка должны быть установлены в правильное положение для публикации комментария.

CAPTCHA в блоге Adafruit

Более продвинутое решение?

Ни одно из приведенных выше решений не соответствует всем требованиям, которые мы выделили в качестве обязательных для идеальной CAPTCHA. Каждый из вариантов создает неприемлемые препятствия для крупного сегмента пользователей. Мы и пришли к выводу, что пользователи предпочитают классическую текстовую CAPTCHA, и никакую альтернативу они не воспримут как нечто лучшее. Несколько лишних секунд, требуемых от пользователя на решение предложенной задачи, сводит все преимущества метода на нет. Если метод слишком медленный, значит, он не стоит того.

Из всех доступных решений, текстовая CAPTCHA (вроде reCAPTCHA) выглядит наиболее привлекательно. Но вопрос все равно остался открытым: зачем мы просим пользователей выполнять задания? Разумеется, мы можем победить спамеров в их же игре используя автоматические системы, которые будут делать за нас всю работу. Итак, мы пришли к тому, что всегда есть определенная проблема, которую решает CAPTCHA.

Не смотря на превосходство компьютерного интеллекта, большинство механизмов, созданных для спама — тупые. Если отправка данных оканчивается провалом (из-за CAPTCHA или же по какой-либо другой причине), то спам-бот пойдет по своему списку сайтов дальше. Джеф Атвуд наглядно показал это в 2006 году в своей статье “Эффективность CAPTCHA”. Не смотря на исследования в области взлома CAPTCHA, большинство спамеров не желает инвестировать в эти исследования или вообще пользоваться средствами взлома. Приличное количество сайтов, доступных для атаки и скорость, с которой эта атака производится означают, что взлом CAPTCHA не входит в интересы большей части спамеров.

Корпорация BBC является одним из самых тщательных исследователей в этой области в Великобритании. Ее требования к доступности не имеют равных, и недавнее исследование систем CAPTCHA в плане доступности пришло к выразительному и минималистическому ответу: «Нет»:

Участники с проблемным зрением ожидали полной доступности от BBC, и мы почувствовали, что использование подобных систем защиты может подмочить нашу репутацию. Пользователи испытывали некоторые проблемы с искаженным текстом. Логические паззлы показались им слишком необычными. Аудио им тоже не понравилось. В общем, пользователи испытывали к CAPTCHA крайне негативные чувства.

— Рован Гайлс, BBC, CAPTCHA and BBC iD

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

Альтернативы CAPTCHA

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

Автоматическое и ручное определение спама

Мы упомянули несколько сервисов по определению спама в самом начале статьи. Akismet, Mollom и SBlam! анализируют полученные от пользователей данные и отмечают спам автоматически. Система Mollom иной раз предлагает ввести CAPTCHA, но только в том случае, если она не уверена. Но почему бы не разработать свою собственную систему, которая будет подогнана специально под нужды, требования и специфику определенного сайта?

Переложив на себя ответственность и снятие бремени с пользователей улучшит их мнение о сайте и увеличит их активность. Ручной контроль контента зачастую является жертвой, которую стоит принести.

Метод «Горшочек Меда»

В 2007 году, Фил Хаак преложил весьма умный метод определения ботов: использование горшочка с медом. Идея проста: форма на сайте содержит дополнительное поле, скрытое от пользователей. Спам-боты обрабатывают и взаимодействуют с исходным HTML-кодом, поэтому они не смогут определить, что поле скрыто. Если в это поле были введены данные, администратор сайта может быть абсолютно уверен, что это сделал не настоящий пользователь.

Метод «горшочек с медом» может быть более эффективным, если обфусцировать скрытие поля методами JavaScript или хэшированием данных. Эти методы не непробиваемы, но мы можем рассчитывать на лучшее.

JavaScript может быть использован для заполнения скрытых полей динамически, что может быть проверено скриптом на стороне сервера. Scratchmedia использует подобное решение наряду с CAPTCHA, если JavaScript отключен.

Можно так же использовать дополнительный таймстамп и данные сессии для определения автоматической отправки. Недавнее обсуждение на сайте Stack Overflow представляло из себя огромное количество примеров и идей насчет этого, включая Hashcash, который доступен в виде плагина для WordPress. Урок по созданию такой защиты средствами jQuery описывает похожий метод и включает в себя интересную мысль:

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

— Джек Борн, Safer Contact Forms Without CAPTCHAs

Централизация базы пользователей

С постепенной «социализацией» Интернета, множество сайтов стали предлагать пользователям зарегистрироваться и взаимодействовать друг с другом. Публикация данных на сайт обычно проводится наряду с регистрацией полноценного аккаунта, или же анонимно. Оба этих метода являются открытыми воротами для спама. В 2008 году, Facebook анонсировал Facebook Connect, сервис, который предоставляет сайтам и их пользователям интегрированную платформу на базе социальной сети. Twitter подхватил эстафету в 2009 с похожим сервисом «Войти с помощью Twitter». Оба этих сервиса могут быть встроены на сайт весьма легко, с их помощью можно полностью избавиться от регистрации и форм для комментариев, которые являются целью ботов.

Эти сервисы стали настолько популярными, что появился Janrain.

Сервис Janrain предоставляет свое собственно решение, базированное на вышеупомянутых Facebook Connect, Sign in with Twitter и иже с ними, для того, что бы сделать сайт доступным из любой социальной сети.

Mahalo предоставляет возможность авторизоваться, используя любую социальную сеть с помощью Janrain

Другие сервисы типа Disqus, позволяют пользователям взаимодействовать с помощью встроенной системой защиты от спама и встроенной авторизацией.

Практически полное отсутствие анонимности заставляет пользователей подумать дважды перед отправкой какого-либо контента. Это так же очень эффективно предотвращает спам; стоит удалить одного пользователя Facebook и все сайты с подключенным Facebook Connect стали огорожены от очередного спамера.

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

Фиксирование времени, затраченного пользователем

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

Идеальная CAPTCHA

Судя по многолетнему опыту и исследованиям можно с уверенностью сказать, что CAPTCHA далека от идеала как решение проблемы. Уберем спамеров из уравнения и таким образом мы полностью избавимся от нужды в CAPTCHA; именно на это мы и должны ориентироваться. Идеальная CAPTCHA – отсутствующая CAPTCHA.

Восстание людей

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

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

Мы должны признать необходимость в модерации и определения ботов в фоне, невидимыми методами. CAPTCHA – лучшее временное решение на данный момент и худшее в целом. Либо бороться со спамом вручную, либо просто забыть про интересы пользователей – выбор за вами.

Выводы

Если владельцы сайтов будут работать сообща для уничтожения спама, то тогда он с течением времени сойдет на нет, и в один прекрасный момент необходимость в CAPTCHA сама собой отпадет. Это слишком идеалистично? Возможно. В реальности, мы скорее увидим тесное сотрудничество технологии и закона для уничтожения спамеров как вида.

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

  • Модерация везде, где только возможно

    Не разрешайте размещать определенный контент на сайте, или наоборот, разрешайте его публикацию после прохождения проверки аккаунта. Лучше всего использовать сервисы типа Facebook Connect или Disqus; это будет проще и для вас, и для пользователей.
  • Альтернативы CAPTCHA

    Попробуйте использовать метод «горшочек с медом» или любой другой, лишь бы он бы невидимым для пользователей.
  • Определение с клиентской стороны

    Это будет работать просто потому, что пока есть обходные пути, спамеры не будут тратить свое время. Взаимодействие с ключевыми словами или мышью может быть использовано для определения, кто вводит данные, человек или машина. Эта защита не должна быть использована как самостоятельная, но она добавит защищенности сайту.
  • Определение с серверной стороны

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

    Простая возможность голосовать за контент поможет избавиться от спама.

Абсолютно ясно, учитывая все «за» и «против» CAPTCHA, что будущее за незаметными для пользователя технологиями. На данный момент CAPTCHA должна быть самой крайней мерой.


Оригинал статьи: In Search Of The Perfect CAPTCHA, David Bushell, 03/04/2011.

Перевод довольно вольный, но суть и мысль, передаваемые автором, сохранены. Исключены несколько незначительных фрагментов, каждый с определенной причиной. Например, фрагмент с информацией об изменении алгоритмов Google был удален, так как ссылается на недоступную страницу в блоге Google (404).

Прошу не кидаться ничем нехорошим, мой первый перевод такого объема.



Этот текст распространяется на условиях лицензии «Creative Commons Attribution-NonCommercial-ShareAlike 3.0».

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

Почему капчи стали такими сложными / Хабр

Доказывать, что ты не робот, становится всё сложнее

В какой-то момент прошлого года постоянные требования от Google доказать, что я человек, начали казаться всё более агрессивными. Всё чаще за простой и немного чересчур милой кнопочкой «Я не робот» начали появляться требования доказать это – выбрав все светофоры, переходы или витрины в сетке изображений. Вскоре светофоры начали прятаться в листве, переходы искажаться и уходить за угол, а вывески магазинов стали размытыми и перешли на корейский язык. Есть что-то весьма разочаровывающее в неудачных попытках найти на изображении пожарный гидрант.

Эти тесты называются CAPTCHA – акроним от «полностью автоматического публичного теста Тьюринга, предназначенного для различения людей и компьютеров», и когда-то они уже доходили до подобной степени неразборчивости. В начале 2000-х простых изображений с текстом было достаточно, чтобы остановить большинство спам-ботов. Прошло десять лет, и после того, как компания Google купила программу у исследователей из Университета Карнеги-Меллона и использовала её для оцифровки в проекте Google Books, тексты приходилось всё сильнее искажать и скрывать, чтобы обгонять улучшающиеся программы оптического распознавания символов – те самые программы, которые помогали улучшать те самые люди, кому приходилось разгадывать все эти капчи.


Поскольку CAPTCHA – элегантный инструмент для тренировок ИИ, то любой придуманный тест может продержаться лишь некоторое время, что признают и его изобретатели. Со всеми этими исследователями, мошенниками, и простыми людьми, решающими миллиарды задачек на грани возможного для ИИ, в какой-то момент машины просто обязаны были нас обогнать. В 2014-м Google стравила между собой свой лучший алгоритм по разгадыванию самых искажённых текстов и людей: компьютер правильно распознал текст в 99,8% случаев, а люди всего в 33%.

После этого Google перешла на NoCaptcha ReCaptcha, наблюдающую за поведением людей и собирающую их данные, что позволяет некоторым из них пройти дальше просто по клику на кнопке «Я не робот», а другим выдаёт задачи на поиск изображений, которые мы сегодня и наблюдаем. Но машины снова настигают нас. Все эти навесы, которые могут быть или не быть витринами магазинов – это заключительная стадия гонки вооружений людей и машин.

Язон Полакис, профессор информатики в Университете Иллинойса в Чикаго лично отвечает за недавнее усложнение капчи. В 2016-м он опубликовал работу, в которой использовал готовые программы распознавания изображений, включая собственный поиск по изображением от Google, чтобы решать капчи с точностью в 70%. Другие исследователи справлялись с распознаванием аудио капчи от Google при помощи программ по распознаванию речи от самой же компании.

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

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

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

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

«Тесты ограничены возможностями человека, — говорит Полакис. – Дело не только в физических возможностях – нужно найти что-то межкультурное, межъязыковое. Нужна задача, которая хорошо работает с человеком из Греции, с человеком из Чикаго, с человеком из Южной Африки, Ирана и Австралии одновременно. И она не должна зависеть от культурных нюансов и различий. Нужна задача, с которой хорошо справляется средний человек, она не должно быть ограничено определённой подгруппой людей, и она должна быть трудной для компьютера. Всё это сильно ограничивает выбор вариантов. А ещё это должно быть что-то, с чем люди справляются быстро, и что не сильно раздражает».

Попытки решения этих загадок с размытыми картинками быстро переводят человека на философские рельсы: есть ли какое-то универсальное человеческое качество, которое можно продемонстрировать машине, и которое машина не может имитировать? Что значит – быть человеком?

Может, наша человечность измеряется не тем, как мы выполняем задачи, а тем, как мы ведём себя, продвигаясь сквозь мир – или, в данном случае, сквозь интернет. Игровые капчи, видеокапчи, любые капчи, которые вы сможете придумать, в итоге будут взломаны, говорит Шуман Госмахумдер [Shuman Ghosemajumder], занимавшийся в Google борьбой с автоматизацией кликов, а потом ставший технологическим директором компании по распознаванию роботов Shape Security. Он склоняется в сторону «постоянной авторизации» вместо отдельных тестов – к наблюдению за поведением пользователя и поиску признаков автоматизации. «Реальный человек не очень хорошо контролирует моторику, и не может двигать мышь одинаковым образом много раз во время нескольких взаимодействий, даже если будет пытаться сделать это», — говорит Госмахумдер. Робот будет взаимодействовать со страницей, не двигая мышью, или двигая её очень точно, а в действиях человека будет наблюдаться «энтропия», которую сложно подделать, говорит Госмахумдер.

Собственная команда Google, занимающаяся капчей, работает в сходном направлении. Последняя версия reCaptcha v3, выход которой был объявлен в конце прошлого года, использует «адаптивный анализ рисков» для оценки трафика по подозрительности; владельцы сайтов могут предлагать подозрительным пользователям задачи вроде ввода пароля или двухфакторной авторизации. В Google не сообщают, какие факторы учитываются при оценках, кроме того, что компания оценивает, как выглядит на сайте «хороший трафик», и использует эту информацию для фильтрации «плохого трафика», согласно Сай Кормаи [Cy Khormaee], менеджеру продукта из команды CAPTCHA. Исследователи в области безопасности говорят, что это, вероятно, смесь куков, атрибутов браузера, закономерностей трафика и других факторов. Один недостаток новой модели распознавания роботов состоит в том, что навигация в вебе при попытках минимизации наблюдений за пользователем может стать немного раздражающей, поскольку такие вещи, как VPN и расширения, затрудняющие отслеживание пользователя, могут отметить вас, как подозрительного.

Аарон Маленфант [Aaron Malenfant], ведущий инженер команды CAPTCHA в Google, говорит, что сдвиг в сторону от тестов Тьюринга должен помочь обойти соревнование, которое люди всё время проигрывают. «Чем больше мы будем вкладываться в машинное обучение, тем сложнее эти задачи будут становиться для людей, и, в частности, поэтому мы запустили CAPTCHA V3 – чтобы опередить эту кривую». Маленфант говорит, что через 5-10 лет задачи в капче вообще не будут иметь смысла. Большая часть веба будет зависеть от постоянного скрытого теста Тьюринга, работающего на фоне.

В своей книге «Самый человечный человек» Брайан Кристиан [Brian Christian] принимает участие в тесте Тьюринга в качестве подсадной утки и понимает, что очень сложно доказать свою человечность в беседах. С другой стороны разработчики ботов обнаружили, что эти тесты легко пройти, не притворяясь красноречивым или интеллектуальным собеседником, а отвечая на вопросы при помощи нелогичных шуток, делая опечатки, или, как в случае бота, выигравшего соревнование Тьюринга в 2014-м, заявляя, что ты – 13-летний украинский мальчик, плохо говорящий по-английски. Ведь человеку свойственно ошибаться. Возможно, что такое будущее ждёт и капчу, самый распространённый тест Тьюринга в мире – новая гонка вооружений будет создавать не роботов, превосходящих людей в сортировке изображений и разборе текста, а роботов, делающих ошибки, промахивающихся по кнопкам, отвлекающимся и переключающим вкладки. «Думаю, народ начинает понимать, что есть области применения для симуляции среднего пользователя-человека… или тупых людей», — говорит Госмахумдер.

Капчи могут сохраниться и в этом мире. В 2017-м Amazon зарегистрировала патент на схему, в которой используются оптические иллюзии и логические задачки, с которыми тяжело справляться людям. Этот тест называется «тест Тьюринга через ошибку», и единственный способ пройти его – дать неверный ответ.

5 фактов об обходе CAPTCHA при парсинге веб-страниц (обновлено в 2019 г.)

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

Сегодня мы поговорим о 5 вещах, которые вам нужно знать о CAPTCHA, чтобы помочь вам лучше обходить ее при парсинге веб-страниц.

1. Что такое CAPTCHA?

2. Как работает CAPTCHA

3. Каковы общие типы CAPTCHA

4. Почему веб-сайты применяют CAPTCHA

5. Как работать с CAPTCHA для парсинга веб-страниц

1. Что такое CAPTCHA?

Согласно Википедии, CAPTCHA (полностью автоматизированный общедоступный тест Тьюринга, позволяющий отличить компьютеры и людей друг от друга) — это тип теста «вызов-ответ», используемый в вычислениях для определения того, является ли пользователь человеком.

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

2. Как работает CAPTCHA

Технология

CAPTCHA основана на тесте Тьюринга, который используется для проверки того, может ли машина мыслить как люди. Цель CAPTCHA — задавать вопросы или решать проблемы, с которыми компьютеры не могут справиться. Обычно он показывает искаженную строку случайных символов или чисел.Это работает, потому что человек, смотрящий на искаженное изображение, может без проблем читать слова, в то время как инструмент соскабливания не распознает их легко. Даже самая сложная автоматизированная система, которая была запрограммирована для сканирования изображения страницы печатного текста и чтения слов на картинке, все еще испытывает трудности с чтением слов, когда слова слишком сильно затемнены или искажены.

3. Каковы общие типы CAPTCHA

CAPTCHA бывает разных размеров и типов.Наиболее распространенными типами CAPTCHA являются CAPTCHA на основе текста, CAPTCHA на основе изображений и CAPTCHA на основе звука.

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

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

CAPTCHA CAPTCHA

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

CAPTCHA

CAPTCHA на основе аудио использует случайные слова или числа, взятые из записей, объединяет их и даже добавляет к ним некоторый шум.Пользователи должны вводить слова или числа в записи. Звуковые CAPTCHA сложнее сравнивать с CAPTCHA для контента и изображений, поскольку нелегко позволить парсинговому боту научиться слушать.

4. Почему веб-сайты применяют CAPTCHA

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

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

5.Как работать с CAPTCHA для парсинга веб-страниц

CAPTCHA может легко сломать настроенные вами сканеры, как только она появится в процессе извлечения, поэтому работа с ней очень важна для парсинга веб-страниц. Лучший способ справиться с CAPTCHA — постараться не встретить ее :). Никогда не пытайтесь очистить веб-сайт слишком часто, а действуйте скорее как человек. (У нас есть еще одна статья, в которой рассказывается о том, как избежать блоков во время очистки, и вы можете проверить это здесь .)

Но есть еще много CAPTCHA, которых нельзя избежать, например, CAPTCHA на странице входа в систему.В Octoparse вы можете вручную решить CAPTCHA так же легко, как и обычно при просмотре сайта. (Посмотрите пример здесь .)

Для людей, которые кодируют свои собственные скреперы, существует множество решателей CAPTCHA, которые можно интегрировать в их систему скрепинга. Например, Death by CAPTCHA и Bypass CAPTCHA позволяют пользователям подключать сервис через API для автоматического решения CAPTCHA во время процесса парсинга. Эти инструменты решения CAPTCHA могут работать с обычными текстовыми CAPTCHA и даже с reCAPTCHA.

CAPTCHA может быть головной болью при сканировании веб-страниц. Но не волнуйтесь. С каждым поколением CAPTCHA есть каждое поколение ботов. CAPTCHA стала побежденной с появлением инструментов для очистки и решателей CAPTCHA. Вы можете беспрепятственно выполнять парсинг веб-страниц с помощью этих инструментов.

Автор: Иина Хуанг

Корректура: Изабель Ли

Artículo en español: 5 Cosas que Debes Sabre al Evitar CAPTCHA para El Web Scraping
También puede leer artículos de web scraping en El Website Oficial

20 лучших инструментов для быстрого парсинга веб-сайтов

30 лучших инструментов больших данных для анализа данных

25 приемов для развития вашего бизнеса с помощью извлечения данных из Интернета

Шаблоны веб-скрапинга на вынос

Видео: Создайте свой первый скребок с Octoparse 8

,

Как добавить CAPTCHA на свой сайт

Добавление CAPTCHA на ваш веб-сайт — это мера безопасности, которая часто используется, когда посетители сайта входят в систему или регистрируют учетные записи. Без использования CAPTCHA боты (спам-боты AKA, спам-роботы AKA) могут отправлять формы на вашем сайте, создавать спам-аккаунты и, в зависимости от типа вашего веб-сайта, отправлять на ваш сайт информацию о спаме. Добавить CAPTCHA не так сложно, как вы думаете: следующие параграфы дают хорошее представление о CAPTCHA и о том, как установить ее на свой веб-сайт.

Что такое CAPTCHA?

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

CAPTCHA работают, предлагая вопрос, на который человеку легко ответить, но на который сложно ответить боту.Например, на изображении выше большинству пользователей Интернета не составит труда прочитать слова «Новые зомби». Спам-боты не могут ответить на вопрос, поэтому они не могут отправить форму, поэтому вы будете получать только настоящие формы. (CAPTCHA необходимо постоянно улучшать, чтобы оставаться на умнее , чем спам-боты, которые также постоянно улучшаются).

Лучшие capthcas дают пользователям возможность запросить новый код, если они не могут прочитать данный, а также должны быть варианты для слепых и глухих пользователей.Например, отключено Параметры будут воспроизводить код как звук для слепых пользователей, в то время как глухие пользователи могут видеть расширенную версию кода вместо аудиоверсии. Система CAPTCHA не должна быть запретительной, и вы должны сообщить своим клиентам, что проверка предназначена для их собственной защиты.

Где мне нужно использовать CAPTCHA?

Captchas следует использовать на любых голых формах на вашем сайте. Голая форма — это форма, которая не скрывается за логином.Например, если у вас есть контактная форма на вашем веб-сайте, которая видна пользователям независимо от того, вошли они в систему или нет, тогда эта форма должна иметь CAPTCHA. Если вы не используете CAPTCHA, вас могут завалить спамом или фальшивыми материалами, что значительно усложнит вашу работу по определению, когда требуется ответ. С другой стороны, если у вас есть сайт, на котором пользователи должны входить в систему, и у вас есть форма оформления заказа или покупки продукта. Если пользователь уже вошел в систему, вам не потребуется CAPTCHA в вашей форме оформления заказа, поскольку пользователь уже прошел аутентификацию, когда он или она вошли в систему.

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

Лучшие коды CAPTCHA

Лучший код CAPTCHA помогает пользователям легко читать код и при этом код CAPTCHA не будет слишком длинным. Традиционные коды CAPTCHA начинались с набора цифр или букв, которые могут или не могут быть чувствительными к регистру.Последовательность букв или цифр обычно затемнена, или видоизменена, или установлена ​​на красочном или сложном фоне, чтобы ботам было труднее различать буквы. Клиенты будут разочарованы вами, когда код будет слишком трудным для чтения, и могут отказаться от вашего сайта. ReCAPTCHA (см. Ниже), вероятно, лучшая и наиболее широко используемая и признанная из систем CAPTCHA.

Типы CAPTCHA

За прошедшие годы были разработаны различные типы CAPTCHA, включая простые математические вопросы e.грамм. «Что такое 2 + 9?» и проблемы с классификацией, такие как «выберите все изображения с кошкой!»

ReCAPTCHA

ReCAPTCHA, вероятно, является наиболее широко используемым и признанным. Он был приобретен Google в 2009 году, и теперь Google использует его для автоматической оцифровки учебников и автоматического распознавания реальных уличных знаков и названий. Это кодовая система CAPTCHA, которая представляет два слова для расшифровки. Когда пользователь расшифровывает два слова или числа, результат отправляется обратно в Google, чтобы помочь оцифровать книги и уличные знаки для других проектов Google.

Нет CAPTCHA reCAPTCHA

Последнее обновление ReCAPTCHA пытается минимизировать количество раз, когда CAPTCHA фактически отображается пользователю. Это достигается путем анализа поведения пользователя в браузере и представления сложной CAPTCHA, если система считает, что это бот. В противном случае отображается простой флажок.

BotDetect CAPTCHA

BotDetect — альтернативный сервис CAPTCHA. Он предоставляет более традиционные виды буквенных и цифровых CAPTCHA для изображений (см. Изображение ниже).

BotDetect имеет множество примеров на разных языках и CMS на своем веб-сайте, включая PHP, ASP, Java и WordPress.

Изображение CAPTCHA

Другой тип — это изображение CAPTCHA, посредством которого пользователю предоставляется набор изображений в качестве идентификатора. Иногда задача идентификации — это нечетный человек из или выбрать все изображения в классе . На изображении ниже показан подход «нечетного человека»:

Как добавить CAPTCHA на свой сайт

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

Как правило, интегрировать CAPTCHA относительно просто. Например, код для интеграции ReCAPTCHA приведен ниже (из документов ReCAPTCHA):

  

reCAPTCHA demo: простая страница










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

Уведомления

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

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

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

,

Diggernaut: документация для метаязыка | Captcha

Обход Captcha

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

Существует множество сервисов и программных продуктов, которые позволяют веб-мастеру внедрять на сайте капчу. Самый известный
— это сервисы Google ReCaptcha и Funcaptcha. Если Captcha сложная, а наша функция OCR
не поможет вам обойти это, то к вам придут специализированные сервисы с ручным решением CAPTCHA
помощь.Мы реализовали интеграцию с двумя такими сервисами, и ваши диггеры могут легко передать капчу
разрешить эти службы и получить в ответ специальный жетон или распознанные вручную письма
и цифры с картинки в автоматическом режиме.

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

Diggernaut — это наш сервис для решения графической капчи на определенных сайтах. Эта услуга бесплатна для всех наших пользователей и не требует
подключение дополнительных услуг. Эта функция доступна для использования только в облаке. В скомпилированных диггерах не работает.
На данный момент решение капчи работает на следующих сайтах: Amazon.

2Captcha — сервис для решения изображения и капчи Google ReCaptcha v2.Для Google ReCaptcha v2 можно использовать режим «без прокси» (в обычном режиме вы должны использовать собственный защищенный паролем прокси
для парсинга, поскольку работникам 2Captcha потребуется доступ к веб-сайту с помощью captcha, используя ваш прокси-сервер).
Этот режим может быть полезен тем, кто не имеет собственных прокси-серверов и не хочет их использовать,
предпочитая использовать нашу прокси-сеть для парсинга. Пока это единственный сервис для решения Google ReCaptcha v3.

AntiCaptcha — сервис для разгадывания изображения и капчи Google ReCaptcha v2. Для Google ReCaptcha
v2 можно использовать режим «без прокси» (в обычном режиме вы должны использовать собственный защищенный паролем прокси
для парсинга, так как работникам AntiCaptcha потребуется доступ к веб-сайту с помощью captcha, используя ваш прокси-сервер).
Этот режим может быть полезен тем, кто не имеет собственных прокси-серверов и не хочет их использовать,
предпочитая использовать нашу прокси-сеть для парсинга.

DeathByCaptcha — может делать почти то же самое, что и AntiCaptcha, за исключением режима «без прокси». Также
для этого провайдера мы интегрировали только сервис для Google ReCaptcha v2. Следовательно, если
вы хотите использовать режим «без прокси» или разгадывать графическую капчу — воспользуйтесь сервисом AntiCaptcha.

Команда для разрешения капчи
captcha_resolve может использоваться в контекстах блока или страницы.Процесс полностью автоматизирован
для вас, но поскольку это ручная работа (сторонний процесс разрешения капчи), процесс может длиться
от 20 секунд до 2 минут. По завершении команды результат распознавания (или жетон
для ReCaptcha v2) будут сохранены в
переменная captcha.

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

Команда использует следующие параметры:

Параметр Описание
провайдер Обязательный параметр.Указывает провайдера, которого вы собираетесь использовать для разгадывания капчи. В
на данный момент поддерживаются следующие провайдеры:
deathbycaptcha.com, антикапча и 2капча.
тип Тип капчи. На данный момент поддерживаются следующие опции:
изображение для разрешения капчи изображения (работает только для провайдера AntiCaptcha),
recaptchav2 для разрешения Google ReCaptcha v2,
proxyless_recaptchav2 для разрешения Google ReCaptcha v2 в режиме «без прокси» (работает только с провайдерами AntiCaptcha и 2Captcha) и
recaptchav3 для разрешения Google ReCaptcha v3 (работает только с поставщиком 2Captcha).
При использовании провайдера Diggernaut в этом поле необходимо указать один из поддерживаемых идентификаторов веб-сайтов: amazon.
изображение Если тип captcha image или amazon, этот параметр используется для передачи изображения с captcha, закодированного в base64
формат.
имя пользователя Если вы используете поставщика Death By Captcha, этот параметр должен иметь имя пользователя для вашей учетной записи.
на deathbycaptcha.com платформа.
пароль Если вы используете провайдера Death By Captcha, этот параметр должен иметь пароль для вашей учетной записи.
на платформе deathbycaptcha.com.
апики Если вы используете провайдер AntiCaptcha или 2Captcha, этот параметр должен содержать ваш ключ API для AntiCaptcha / 2Captcha.
Платформа.
ключ сайта Ключ сайта — уникальный идентификатор сайта, на котором используется ReCaptcha v2 или v3. Обычно он извлекается автоматически, но если его нельзя извлечь
по какой-то причине вы можете установить его вручную как параметр.
действие Параметр специального действия, который используется для ReCaptcha v3.Обычно он извлекается автоматически, но если его нельзя извлечь
по какой-то причине вы можете установить его вручную как параметр.

Ниже вы можете увидеть пример того, как легко решить капчу Amazon:

                          # SET VARIABLE ДЛЯ ИСПОЛЬЗОВАНИЯ В КОМАНДЕ WALK
- набор_переменных:
    поле: «повторить»
    значение: "да"
# ОТКРЫТЬ СТРАНИЦУ В РЕЖИМЕ ПОВТОРА (КАК НАМ НУЖНО ПЕРЕЗАГРУЗИТЬ СТРАНИЦУ, ЕСЛИ ЕСТЬ CAPTCHA)
- ходить:
    на: https: // www.amazon.com
    повторение:
    делать:
    # ПЕРЕКЛЮЧИТЕ БЛОК КУЗОВА
    - найти:
        путь: тело
        делать:
        - разобрать
        # ПРОВЕРИТЬ, ЕСТЬ ли CAPTCHA
        - если:
            совпадение: введите символы, которые вы видите на этом изображении
            делать:
            # ЕСТЬ КАПЧА
            - набор_переменных:
                поле: «повторить»
                значение: "да"
            # СОБИРАЙТЕ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ СО СТРАНИЦЫ
            # СОХРАНИТЕ ИХ В ПЕРЕМЕННЫЕ
            - найти:
                путь: input [name = "amzn"]
                делать:
                - разобрать:
                    attr: value
                - нормализовать:
                    процедура: urlencode
                - набор_переменных: amzn
            - найти:
                путь: input [name = "amzn-r"]
                делать:
                - разобрать:
                    attr: value
                - нормализовать:
                    процедура: urlencode
                - набор_переменных: amznr
            # ПЕРЕЙТИ К БЛОКУ С ИЗОБРАЖЕНИЕМ CAPTCHA
            - найти:
                путь: div.а-строка> IMG
                делать:
                # PARSE URL-адрес изображения
                - разобрать:
                    attr: src
                # ЗАГРУЗИТЬ ИЗОБРАЖЕНИЕ
                - ходить:
                    ценить, оценивать
                    делать:
                    # ПЕРЕКЛЮЧИТЬСЯ К БЛОКУ С ЗАКОДИРОВАННЫМ ИЗОБРАЖЕНИЕМ BASE64
                    - найти:
                        путь: imgbase64
                        делать:
                        # РАЗБИРАЙТЕ СОДЕРЖИМОЕ И СОХРАНИТЕ ЕГО В ПЕРЕМЕННУЮ
                        - разобрать
                        - набор_переменных: capimg
                        # РЕШИТЬ CAPTCHA
                        - captcha_resolve:
                            провайдер: diggernaut
                            тип: амазонка
                            образ:
                        # ЧИТАТЬ ПЕРЕМЕННУЮ В РЕГИСТР
                        - variable_get: captcha
                        # ЕСЛИ КАПЧА РЕШЕНА
                        - если:
                            совпадение: \ S +
                            делать:
                            # ОТПРАВИТЬ НА СЕРВЕР AMAZON
                            - ходить:
                                на: https: // www.amazon.com/errors/validateCaptcha?amzn=&amzn-r=&field-keywords=
                                делать:
            еще:
            # НЕТ CAPTCHA, ВЫКЛЮЧИТЕ РЕЖИМ ПОВТОРА
            - набор_переменных:
                поле: «повторить»
                значение: "нет"
            # РАЗБОР СТРАНИЦЫ И ПОЛУЧЕНИЕ ДАННЫХ
                         
                     

Рассмотрим случай, когда на какой-то странице используется Google ReCaptcha v2. Мы будем использовать режим «без прокси»:

              # ЗАГРУЗКА СТРАНИЦЫ С CAPTCHA
- ходить:
    на: https: // www.nebraska.gov/sos/corp/corpsearch.cgi
    делать:
    # РАЗРЕШЕНИЕ CAPTCHA
    - captcha_resolve:
        провайдер: антикапча
        тип: proxyless_recaptchav2
        apikey: xxxxxxxxxxxxxxxxxxx
    - найти:
        путь: тело
        делать:
        # ПРОВЕРИТЬ, ЕСТЬ ЛИ У НАС ТОКЕН В ПЕРЕМЕННОЙ captcha
        - variable_get: captcha
        - если:
            совпадение: \ S
            делать:
            # ТОКЕН в порядке, ФОРМА ОТПРАВКИ
            - ходить:
                чтобы:
                    сообщение: https: // www.nebraska.gov/sos/corp/corpsearch.cgi
                    данные:
                        поиск: 1
                        keyword_type: все
                        search_type: num_search
                        corpname:
                        номер счета: 1000011010101
                        г-Recaptcha-ответ:
                        отправить: отправить
                делать:
                # РАЗБОР СТРАНИЦЫ И ИЗВЛЕЧЕНИЕ ДАННЫХ
                 
         

Другой пример для изображения капчи:

                  # ЗАГРУЗИТЬ СТРАНИЦУ С CAPTCHA
- ходить:
    на: https: // eservices.cmcoh.org/eservices/home.page
    заголовки:
        Калитка-Focusedelementid: ''
        Уикет-Аякс: ''
    делать:
    # НАЙТИ ЭЛЕМЕНТ С КАПЧЕЙ ИЗОБРАЖЕНИЯ
    - найти:
        путь: img.captchaImg
        делать:
        # PARSE URL КАПЧИ ИЗОБРАЖЕНИЯ
        - разобрать:
            attr: src
        # ЗАГРУЗИТЬ ИЗОБРАЖЕНИЕ В КОДИРОВАНИИ BASE64
        - ходить:
            ценить, оценивать
            делать:
            - найти:
                путь: imgbase64
                делать:
                - разобрать
                - variable_set: изображение
                # RESOLVE CAPTCHA
                - captcha_resolve:
                    провайдер: антикапча
                    тип: изображение
                    apikey: xxxxxxxxxxxxxxxxxxx
                    образ:
        - найти:
            путь: а.anchorButton
            делать:
            - variable_get: captcha
            - если:
                совпадение: \ w +
                делать:
                # CAPTCHA, КАПЧА РАЗРЕШЕНА, И МЫ МОЖЕМ ОТПРАВИТЬ ЕЕ НА СЕРВЕР С ФОРМОЙ
             
         

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

                  # ОТКРЫТЬ СТРАНИЦУ С КАПЧЕЙ
- ходить:
    на: https: // www.nebraska.gov/sos/corp/corpsearch.cgi
    делать:
    # RESOLVE CAPTCHA
    - captcha_resolve:
        провайдер: антикапча
        тип: proxyless_recaptchav2
        apikey: xxxxxxxxxxxxxxxxxxx
    - найти:
        путь: тело
        делать:
        # ПРОВЕРИТЬ, ИМЕЕТ ЛИ captcha VARIABLE TOKEN
        - variable_get: captcha
        - если:
            совпадение: \ S
            делать:
            # ТОКЕН ЕСТЬ, ФОРМА ОТПРАВКИ
            - ходить:
                чтобы:
                    сообщение: https: //www.nebraska.гов / Сос / АМФ / corpsearch.cgi
                    данные:
                        поиск: 1
                        keyword_type: все
                        search_type: num_search
                        corpname:
                        номер счета: 1000011010101
                        г-Recaptcha-ответ:
                        отправить: отправить
                делать:
                - variable_clear: резюме
                - найти:
                    путь: тело
                    делать:
                    # ПРОВЕРИТЬ, ПРИНЯТ ЛИ ТОКЕН CAPTCHA
                    - найти:
                        дорожка: .г-Recaptcha
                        делать:
                        # ЕСЛИ ДАННЫЙ БЛОК СУЩЕСТВУЕТ, ТОКЕН НЕДЕЙСТВИТЕЛЬНО
                        - разобрать:
                            attr: data-sitekey
                        - variable_set: резюме
                    - variable_get: резюме
                    - если:
                        совпадение: \ S
                        делать:
                        # CAPTCHA РАЗРЕШЕНА НЕПРАВИЛЬНО, ОТЧЕТ
                        - captcha_report
                        еще:
                        # CAPTCHA решена правильно, извлечение данных
             
         

Далее мы узнаем, как изменять изображения и сохранять их.

,

Advanced noCaptcha & invisible Captcha (v2 & v3) — плагин для WordPress

Показывать noCaptcha или невидимую captcha в форме комментариев (после текстовой области комментария перед кнопкой отправки), контактной форме 7, bbPress, BuddyPress, woocommerce, логине, регистрации, утерянном пароле, сбросе пароля. Также легко реализовать в любой другой форме.

  • Разрешить несколько кодов на одной странице.
  • Разрешить условный ввод кода авторизации (вы можете установить, после того, сколько неудачных попыток входа будет отображаться после ввода кода входа)

Для Advanced noCaptcha и невидимой Captcha PRO нажмите здесь

Показать noCaptcha на
  • Форма комментария (после текстового поля комментария перед кнопкой отправки)
  • WooCommerce
  • Войти
  • Регистр
  • Регистрация пользователей на нескольких сайтах
  • Забыли пароль
  • Сбросить пароль
  • Контактная форма 7
  • Контактная форма FEP
  • bbPress Новая тема
  • bbPress ответить в теме
  • Регистр BuddyPress
Опции
  • Вы можете выбрать, какая версия reCaptcha будет использоваться (флажок v2 I’m not robot, v2 invisible или v3)
  • Язык можно изменить
  • Сообщение об ошибке можно изменить
  • Для v2 Я не робот: тема, размер можно изменить.
  • Для v2 Invisible: тему, расположение значка можно изменить.
  • Для v3: оценка и время загрузки скрипта можно изменить
  • Возможность показать / скрыть капчу для авторизованных пользователей
  • Captcha покажет, отключен ли также javascript (необязательно)
Уведомления о конфиденциальности
  • Этот плагин отправляет IP-адрес в Google для проверки кода. Пожалуйста, прочтите Политику конфиденциальности Google.
  • Если вы установите для параметра «Показывать пароль для входа после количества неудачных попыток» значение больше 0 (ноль), то хеш пользователя с IP-адреса будет сохранен в базе данных.После успешного входа в систему хеш этого IP-адреса будет удален.
  1. Загрузите «advanced-nocaptcha-recaptcha» в каталог «/ wp-content / plugins /».
  2. Активируйте плагин через меню «Плагины» в WordPress.
  3. Перейдите на страницу настроек плагина для настройки.

Могу ли я использовать этот плагин для моего языка?

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

Могу ли я показать несколько капч на одной странице?

Да. Вы можете отображать неограниченное количество капчи на одной странице.

Как загрузить скрипт reCaptcha v3 только тогда, когда на этой странице есть форма?

Загрузка скрипта v3 в All Pages help Google для аналитики. Если вы хотите загружать скрипт только тогда, когда на этой странице есть форма, перейдите в Панель управления> Настройки> Дополнительные параметры noCaptcha и невидимые Captcha> Загрузка скрипта v3 и установите для параметра «Страницы форм».
Если вы не используете v3, скрипт будет загружаться только тогда, когда на этой странице есть форма. никаких настроек не требуется.

Как установить капчу в контактной форме 7?

Чтобы показать noCaptcha, используйте [anr_nocaptcha g-recaptcha-response]

Как войти, если я заблокирован?

Вы можете получить доступ к своему файлу через FTP или файловый менеджер и переименовать папку «advanced-nocaptcha-recaptcha» во что-нибудь другое. Затем войдите как обычно.Затем переименуйте эту папку обратно.

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

Я использую этот плагин Captcha уже много лет на многих сайтах.
0 проблема
быстро, эффективно.

Извините неправильное место
Удалите пожалуйста мой обзор

Также… большая поддержка от Шамима!

Худший плагин, нарушающий раздел формы сайта …

Этот плагин ужасен. Я думаю, что дизайнер хочет показать, что он более высокая форма жизни, чем люди, которые не умеют программировать. Что бы я ни делал, он не установится. Мне жаль, что я видел это. УДАЛЕНИЕ!

Посмотреть все 108 отзывов

«Advanced noCaptcha & invisible Captcha (v2 & v3)» — это программное обеспечение с открытым исходным кодом.Следующие люди внесли свой вклад в этот плагин.

авторов

5.7.1
5,7
    Добавлена ​​функция белого списка

  • IP.
  • Исправлена ​​проблема с таймаутом Captcha V3.
  • Исправлена ​​проблема входа в единую систему обмена сообщениями.
5,6
  • Вернуть последнюю проверку в случае повторной проверки.
  • Добавить фильтры src скриптов google.
  • Пользовательский хук и шорткод капчи теперь поддерживают настройку при входе в систему.
5,5
  • Исправление: регистрация на мультисайтовый сайт во время регистрации не удалась из-за двойной проверки.
  • Исправление: Ошибка ответа на комментарий из серверной части.
5,4
  • Используйте js for loop вместо php for loop
  • Используйте number_formate_i18n для преобразования числа с плавающей запятой
  • Протестировано до обновления.
5,3
  • Исправление: проблема совместимости с reCaptcha v3 и CF7 версии 5.1 и 5.1.1
5,2
  • Теперь поддерживает reCaptcha v3 также
  • Исправление: невидимая капча иногда не работала
  • anr_verify_captcha добавлен фильтр
4.4
  • Выпущена версия PRO
  • anr_verify_captcha_pre добавлен фильтр
  • anr_get_option добавлен фильтр
4,3
  • Сбросить капчу при возникновении ошибки проверки CF7
  • Изменено Проверено до
4,2
  • BuddyPress упомянут в readme
  • Контрольная капча WooCommerce иногда не проверяла
  • Сбросить капчу при возникновении ошибки оформления заказа WooCommerce
  • Если версия WordPress 4.9.0 или выше, чем фильтр pre_comment_approved, используемый для комментария, который теперь мы можем вернуть WP_Error
4,1
  • Страница настроек переработана.
  • добавлена ​​функция anr_is_form_enabled
  • Ошибка Captcha отображается сначала перед ошибкой пароля имени пользователя. Таким образом, если капча не проверена, ошибка пароля имени пользователя не отображается.
  • поставить в очередь вход в систему css, только если отображается обычная капча
  • Включенные формы хранятся в виде массива в db. ключ массива enabled_forms
  • Добавить класс ANR_Settings, удален класс anr_admin_class
  • BuddyPress зарегистрировать капчу
3.1
  • Иногда возникает фатальная ошибка, если is_admin возвращает истину во внешнем интерфейсе.
  • Не показывать капчу при оформлении заказа, если она не отмечена для оформления заказа.
2,8
  • Теперь показывать капчу при использовании функции wp_login_form () для создания формы входа.
2,7
  • Исправление: не работало снятие флажка страницы настроек.
2,6
  • Новое: Показывать капчу после установленных неудачных попыток входа в систему (может не работать, если вы используете форму входа на основе ajax, вернитесь к отображению всегда).
  • Исправление: использование устаревшей функции контактной формы 7.
2,5
  • Новое: добавлена ​​функция невидимой капчи.
  • Исправление: Показывать ошибку ввода кода при загрузке формы входа
  • Переместите эту страницу настроек плагина в Настройки
2,4
  • Исправление ошибки: поврежденная ссылка WooCommerce lostpassword
2,3
  • Исправлена ​​проблема с капчей в форме комментариев.
  • Captcha теперь обернута в div-класс anr_captcha_field.
  • Тег captcha p формы комментариев удален.
2,2
  • Обновление безопасности.
  • Исправлена ​​проблема с формой оформления заказа WooCommerce.
2,1
    Добавлен

  • Captcha в WooCommerce (вход в WooCommerce, регистрация, утерянный пароль, формы сброса пароля).
  • Разрешить несколько кодов на одной странице.
  • Текстовый домен изменен.
  • Исправлена ​​небольшая ошибка.
1,3
  • Добавлен новый фильтр «anr_same_settings_for_all_sites». Теперь одинаковые настройки можно использовать для всех сайтов в Multisite.
  • Добавлена ​​форма регистрации пользователей с несколькими сайтами.
  • Исправлены некоторые ошибки.
1,2
  • Теперь размер капчи можно изменить.
  • bbPress Добавлена ​​новая тема
  • bbPress ответ в тему добавлен
  • XMLRPC_REQUEST Проверка
  • Исправлены некоторые ошибки.
1,1

,

Отправить ответ

avatar
  Подписаться  
Уведомление о