Разное

Simple captcha: Really Simple CAPTCHA — Плагин для WordPress

26.10.1983

Содержание

#23. Использование капчи captcha | Django уроки

  • Классы представлений, регистрация, оптимизация
  • Классы представлений: ListView, DetailView, CreateView
  • Основы ORM Django за час
  • Mixins — убираем дублирование кода
  • Постраничная навигация (пагинация)
  • Регистрация пользователей на сайте
  • Делаем авторизацию пользователей на сайте
  • Оптимизация сайта с Django Debug Toolbar
  • Включаем кэширование данных
  • Использование капчи captcha
  • Тонкая настройка админ панели
  • Начинаем развертывание Django-сайта на хостинге
  • Завершаем развертывание Django-сайта на хостинге
  • Поделиться

    Наш канал

Смотреть материал на видео

Архив проекта: lesson-23-coolsite.zip

На данный момент у нас с вами получился уже полноценный сайт, но одна страница все еще не сделана – это форма обратной связи.

Давайте ее добавим. Для начала вместо функции contact пропишем следующий класс представления (в файле women/views.py):

class ContactFormView(DataMixin, FormView):
    form_class = ContactForm
    template_name = 'women/contact.html'
    success_url = reverse_lazy('home')
 
    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        c_def = self.get_user_context(title="Обратная связь")
        return dict(list(context.items()) + list(c_def.items()))
 
    def form_valid(self, form):
        print(form.cleaned_data)
        return redirect('home')

Здесь все стандартно: определяем атрибуты form_class, template_name и success_url, а также методы: get_context_data и form_valid. Последний метод я прописал, чтобы продемонстрировать возможность обработки данных формы. Если пользователь все поля заполнил корректно, то будет вызван метод  form_valid(), в консоли увидим словарь с данными формы и выполнится перенаправление на главную страницу.

Далее, в файле women/forms.py пропишем класс формы:

class ContactForm(forms.Form):
    name = forms.CharField(label='Имя', max_length=255)
    email = forms.EmailField(label='Email')
    content = forms.CharField(widget=forms.Textarea(attrs={'cols': 60, 'rows': 10}))

Здесь тоже все так, как мы делали ранее, просто определены три поля для ввода.

Создадим шаблон contact.html с содержимым:

{% extends 'women/base.html' %}
 
{% block content %}
<h2>{{title}}</h2>
 
<form method="post">
    {% csrf_token %}
 
    <div>{{ form.non_field_errors }}</div>
 
{% for f in form %}
<p><label for="{{ f.id_for_label }}">{{f.label}}: </label>{{ f }}</p>
<div>{{ f.errors }}</div>
{% endfor %}
 
    <button type="submit">Отправить</button>
 
</form>
 
<p>{% endblock %}

И в файле women/urls.py свяжем маршрут contact с классом ContactFormView:

path('contact/', ContactFormView. as_view(), name='contact'),

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

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

django-simple-captcha

Для его установки достаточно прописать команду:

pip install django-simple-captcha

и модуль готов к использованию. Ниже в описании модуля есть ссылка на документацию:

https://django-simple-captcha.readthedocs.io/en/latest/

где описывается как использовать этот пакет в своем приложении.

Сделаем это. Вначале в файле settings.py пропишем этот модуль в списке установленных приложений:

INSTALLED_APPS = [
...
    'captcha',
...
]

Далее, по документации нам нужно выполнить миграцию:

python manage.py migrate

Затем, в корневой список маршрутов добавим строчку:

urlpatterns = [
...
    path('captcha/', include('captcha.urls')),
...
]

Все, привязка модуля к нашему приложению завершена и мы можем использовать ее в нашей форме. Для этого в файле women/forms.py импортируем класс для формирования поля капчи:

from captcha.fields import CaptchaField

и в классе ContactForm пропишем его:

captcha = CaptchaField()

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

Если нужен другой вид капчи, оформить ее в своих стилях, то для этого используется дополнительно класс CaptchaTextInput, пример представлен в документации:

https://django-simple-captcha.readthedocs.io/en/latest/advanced.html

Кроме того, если требуется поменять шрифт, или его размер, цвета и прочее, то можно прописывать соответствующие переменные (приведены там же) в файле settings.py.

Вот так в самом простом варианте можно подключать капчу к своим формам.

Видео по теме

#1. Django — что это такое, порядок установки

#2. Модель MTV. Маршрутизация. Функции представления

#3. Маршрутизация, обработка исключений запросов, перенаправления

#4. Определение моделей. Миграции: создание и выполнение

#5. CRUD — основы ORM по работе с моделями

#6. Шаблоны (templates). Начало

#7. Подключение статических файлов. Фильтры шаблонов

#8. Формирование URL-адресов в шаблонах

#9. Создание связей между моделями через класс ForeignKey

#10. Начинаем работу с админ-панелью

#11. Пользовательские теги шаблонов

#12. Добавляем слаги (slug) к URL-адресам

#13. Использование форм, не связанных с моделями

#14. Формы, связанные с моделями. Пользовательские валидаторы

#15. Классы представлений: ListView, DetailView, CreateView

#16. Основы ORM Django за час

#17. Mixins — убираем дублирование кода

#18. Постраничная навигация (пагинация)

#19. Регистрация пользователей на сайте

#20. Делаем авторизацию пользователей на сайте

#21. Оптимизация сайта с Django Debug Toolbar

#22. Включаем кэширование данных

#23. Использование капчи captcha

#24. Тонкая настройка админ панели

#25. Начинаем развертывание Django-сайта на хостинге

#26. Завершаем развертывание Django-сайта на хостинге

  • Предыдущая
  • Следующая

Я не робот: 10 альтернатив reCAPTCHA

К маю 2020 года свыше 5 миллионов вебсайтов установили виджет reCAPTCHA, а более 1 миллиона из них используют последнюю невидимую версию — reCAPTCHA v3. Этот инструмент защищает веб-сервисы от интернет-ботов, но не всегда устраивает владельцев и пользователей.

Главные минусы reCAPTCHA — проблемы с конфиденциальностью данных, дизайн виджета, который редко сочетается со стилем сайта, и привлечение пользователей к обучению нейросетей. И даже после выхода Invisible reCAPTCHA, которая работает в невидимом для пользователей режиме, вопросы конфиденциальности остаются открытыми.

Правда, виджеты с поисками светофоров, мостов и гидрантов вряд ли скоро забудутся: они давно стали героями мемов. А Matthew Rayfield, о проектах которого мы уже рассказывали, даже сделал игру про капчу:

Итак, чем можно заменить reCAPTCHA?

Другие капчи

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

MTCaptcha

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

Как и в случае с reCAPTCHA v3, есть невидимая версия. На главной странице можно ознакомиться со сравнением характеристик MTCaptcha и reCAPTCHA.

Capy

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

Своя капча

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

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

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

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

CMS плагины

Вы можете воспользоваться готовыми плагинами различных CMS, не прибегая к reCAPTCHA. Мы выбрали несколько наиболее популярных.

Really Simple CAPTCHA

Лаконичный виджет, который установило свыше 800 000 пользователей WordPress:

Однако создатели Really Simple CAPTCHA предупреждают, что название плагина говорит само за себя: он очень прост, в том числе и для ботов. Надёжен только в тандеме с другими инструментами безопасности.

Hidden CAPTCHA

Вариант скрытой капчи в виде плагина для Drupal:

Около 8000 пользователей Drupal установили Hidden CAPTCHA.

OSOLCaptcha

OSOLCaptcha — это простенький вариант для тех, чей сайт на Joomla!: блокирует ботов, нормально смотрится и легко читается:

Solve Media

Вас интересует дополнительная монетизация ресурса? Тогда выбирайте Solve Media — капчу, которая объединила баннерную рекламу и антиспам-сервис в одном виджете:

А вот стандартный вариант без рекламы:

Работает на большинстве популярных CMS, среди которых vBulletin, WordPress, MediaWiki, Drupal, Joomla!, MyBB и другие.

Другие инструменты защиты от ботов

Honeypot-ловушки

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

Форма ввода на JavaScript

Большинство спам-ботов примитивны. Чаще всего они даже не пытаются выполнять JS-скрипты, поэтому создание простой формы ввода на JS их отсечёт. Но метод не сработает, если у вас много пользователей с отключённым JavaScript. В таком случае нужно либо вообще отказаться от этого способа, либо параллельно использовать что-то ещё.

Двухфакторная аутентификация

А вот ещё одна альтернатива reCAPTCHA. Подтверждение по email или SMS решит проблему со спамом на 100%. Однако запрос такого подтверждения при каждом посещении сайта или действии на нём утомляет. Используйте двухфакторную аутентификацию точечно, например только при регистрации или авторизации пользователя.

Заключение

Любое из этих решений защищает от спам-ботов не хуже reCAPTCHA, но при этом лишено её недостатков. Попробуйте протестировать их в своих проектах — возможно, они понравятся вам больше решения от Google.

Также хорошим тоном будет обеспечить пользователям конфиденциальность с помощью DNT-функции (Do Not Track), которая позволит им отключать отслеживание в браузере. Для её использования достаточно собрать весь отслеживающий код в одном месте и обернуть в проверку:

if(!navigator.doNotTrack){
   // Google Analytics и прочая слежка
}

***

  • Всегда так делаю
  • Бывает иногда
  • Нет, ввожу капчу раз уж зашёл

Really simple captcha что это

Пример взлома капчи за 15 минут с помощью машинного обучения

А именно самого используемого в мире плагина для WordPress Really Simple Captcha.

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

Я прочел отличную книгу: Deep Learning for Computer Vision with Python, которую написал Adrian Rosebrock. В этой книге Адриан описывает способ, которым он взломал капчу на сайте E-ZPass New York используя машинное обучение:

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

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

Я зашел на WordPress.org Plugin Registry и ввел в поиске “captcha”. Первый результат назывался “Really Simple CAPTCHA” и установлен более миллиона раз.

И самое крутое — он с открытыми исходниками! Раз у нас есть алгоритм, генерирующий картинку, его, должно быть, не сложно взломать. Чтобы было сложнее, ограничим себе время. Можно ли уложиться в 15 минут? Давайте попробуем!

Важное замечание: Это ни в коем случае не критика плагина “Really Simple CAPTCHA” или его автора. Сам автор указал, что плагин более не является надежным и рекомендует использовать что-нибудь другое. Это просто небольшой интересный челлендж. Если вы один из того миллиона пользователей, установивших его, то возможно вам стоит сменить данный плагин на что-нибудь другое

Челлендж

Для начала посмотрим на изображения, создаваемые Really Simple CAPTCHA. На демке видим это:

Итак, капча состоит из четырех букв. Убедимся в этом, посмотрев исходники:

Да, действительно капча создается случайным образом из четырех букв или цифр с разными шрифтами. Символы “O”, “0”, “I”, “1” не используются, чтобы пользователь не путался. Остается 32 символа, которые нужно распознать. Не проблема!

Прошло: 2 минуты

Наш набор инструментов

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

Python 3

Python — простой и мощный язык программирования с отличными библиотеками для машинного обучения и машинного зрения.

OpenCV

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

Keras

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

TensorFlow

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

Итак, обратно к задаче!

Создаем датасет

Чтобы собрать любую модель машинного обучения, требуются обучающие данные. Нам понадобятся данные, выглядящие следующим образом:

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

Пару минут повозившись с кодом и добавив в него простой цикл ‘for’, я получил папку с обучающими данными — 10,000 PNG файлов, в названии которых указан правильный ответ:

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

Упрощаем задачу

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

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

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

У меня нет времени разрезать каждую из 10,000 картинок в фотошопе. Это бы заняло несколько дней, а у меня осталось всего 10 минут. И нельзя просто автоматически разделить все картинки на 4 одинаковых куска. Потому что алгоритм задает символам случайное горизонтальное положение:

Символы сдвинуты случайным образом, чтобы изображение было сложнее разделить.

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

Итак, начнем с изображения капчи:

Преобразуем изображение в бинарное (это называется thresholding), чтобы было легче найти связные области:

Далее, используем функцию findContours(), чтобы выделить связные группы пикселей, состоящие из одного цвета:

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

Погодите-ка! Тут есть проблемка! Буквы в капче иногда накладываются друг на друга:

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

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

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

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

Вот так выглядит моя папка с буквой “W” после того, как я запустил свой алгоритм:

Некоторые буквы “W”, вытащенные из наших 10,000 изображений. У меня всего получилось 1,147 разных “W”.

Прошло: 10 минут…

Создаем и обучаем нейросеть

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

Будем использовать простую сверточную нейросеть с двумя сверточными (convolutional) слоями и двумя полносвязными (dense):

Теперь можно обучать нейросеть!

После 10 прогонов по всему обучающему набору, мы достигаем точности почти в 100%. В начале мы ставили задачу автоматически распознавать любую капчу. И мы это сделали!

Прошло: 15 минут (фух!)

Используем обученную модель для расшифровки капчи

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

  1. Взять изображение капчи с сайта, который использует этот плагин.
  2. Разбить картинку на четыре части, на каждой из которых по одному символу.
  3. Прогнать каждую часть через нейросеть.
  4. Использовать выданные нейросетью буквы, чтобы решить капчу.
  5. PROFIT!

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

А в командной строке вот так:

Попробовать самому!

Если хотите попробовать сами, то возьмите код здесь. Он включает 10,000 картинок и код для каждого шага в этой статье. Инструкция к запуску в файле README.md.

Но если хочется вникнуть и понять, что делает каждая строчка кода, советую купить книгу Deep Learning for Computer Vision with Python. Она содержит более детальное объяснение и кучу разобранных примеров. Это единственная книга из тех что я видел, в которой объясняется и как это работает, и как это использовать, чтобы решать реальные и сложные задачи. Рекомендую!

Шорт-код плагина Really Simple CAPTCHA

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

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

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

За ответом я разумеется полез в Интернет. Его поиск занял у меня не один час. Во время него наткнулся на несколько страниц рассказывающих о том, что это за плагин и как легко его использовать. Правда описание его установки оганичивалось лишь скачиванием и активацией. О том как его подключить к контактной форме в этих статьях не говорилось. По сути все эти статьи представляли собой банальный копипаст подробного описания плагина Really Simple CAPTCHA.

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

Поиски продолжились. И тут я понял, почему авторы плагина убрали описание его подключения. Нет не потому, что оно очень простое, а потому, что начиная с Contact Form 7 версии 4.3 вместо плагина Really Simple CAPTCHA рекомендуется использовать плагин reCAPTCHA. Об этом говорится на официальной странице плагина. Там же приводится ответ на мой изначальный вопрос.

Для его вставки в контактную форму используется следующий синтаксис:

[captchac captcha_name] [captchar captcha_name L/S]

где captcha_name — имя капчи; L — количество символов капчи; S — размер поля под ввод символов капчи.

Конечно это крайне упрощенное описание синтаксиса. У него существуют и другие параметры. Но для большинства задач этого более чем достаточно.

Really Simple CAPTCHA

Плагин «Really Simple CAPTCHA» не работает сам по себе, и предназначен для работы с другими плагинами. Изначально он был создан для Contact Form 7, но вы можете использовать в своих плагинах.

Примечание: Плагин действительно «really simple», название не обманывает, а значит он не обеспечивает серьезной защиты. Если она вам нужна, вам нужно попробовать другие варианты.

Как это работает?

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

Когда вы генерируете CAPTCHA, плагин «Really Simple CAPTCHA» создает два файла. Первый – это изображение для CAPTCHA, а второй – текстовый файл с правильными ответами.

Два файла имеют одинаковые (но случайные) имена, например «a7hk3ux8p.png» и «a7hk3ux8p.txt». Если респондент отвечает «K5GF» на вопрос с картинки «a7hk3ux8p. png», плагин «Really Simple CAPTCHA» высчитывает хеш для «K5GF» и сверяет его с эталонным хешем в файле «a7hk3ux8p.txt». Если есть совпадение, то ответ респондента признается правильным.

Как использовать с вашим плагином

Примечание: Ниже приведены инструкции для разработчиков плагинов.

Во-первых, создайте экземпляр класса ReallySimpleCaptcha:

Вы можете изменить переменные экземпляра по своему желанию.

Изучите really-simple-captcha.php, если вам интересны другие переменные.

Создание случайного слова для CAPTCHA.

Создайте файл изображения и соответствующий текстовый файл во временном каталоге.

Затем покажите изображение и получите ответ от респондента.

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

Если $correct возвращает true, продолжайте. В противном случае, блокируйте респондента – кажется это не человек.

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

Если вы хотите посмотреть живое демо работы плагина, зайдите на страницу плагина Contact Form 7.

Скриншоты

Установка

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

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

  1. Загрузите весь каталог really-simple-captcha в каталог /wp-content/plugins/ .
  2. Активируйте плагин на странице «Плагины» в панели управления WordPress.

Для справки: У этого плагина нет страницы в «панели управления».

Часто задаваемые вопросы

CAPTCHA не работает; изображение не показывается.

Для работы Really Simple CAPTCHA необходимо установить библиотеки GD и FreeType. Попросите сделать это у своего системного администратора или у технической поддержки вашего хостинга.

Также установите права доступа для временного каталога, которых хватит для записи. Месторасположением временного каталога вы можете управлять с помощью переменной tmp_dir в классе ReallySimpleCaptcha. Обратите внимание, что настройка зависит от вызывающего плагина. Например, Contact Form 7 использует wp-contents/uploads/wpcf7_captcha как временный каталог, но может использовать и другую – в зависимости от ваших настроек.

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

django simple captcha продолжает говорить «недействительный CAPTCHA» Ru Python

Я выполнил шаги, указанные документами, во-первых, он работает хорошо, но я не знаю, что что-то не так, он делает invalid Captcha . я запустил manage.py test captcha , он говорит так:

C:\Windows\system32\cmd.exe /c python.exe manage.py test captcha Creating test database for alias 'default'... .......Internal Server Error: /test/ Traceback (most recent call last): File "D:\Python33\lib\site-packages\django-1.5.5-py3.3.egg\django\core\handler s\base.py", line 115, in get_response response = callback(request, *callback_args, **callback_kwargs) File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\tests\views. py", line 48, in test class CaptchaTestForm(forms.Form): File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\tests\views.py", line 51, in CaptchaTestForm captcha = CaptchaField(help_text='asdasd') File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\fields.py", line 107, in __init__ kwargs['widget'] = kwargs.pop('widget', CaptchaTextInput(output_format=kwarg s.pop('output_format', None))) File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\fields.py", line 73, in __init__ '%%(%s)s' % key django.core.exceptions.ImproperlyConfigured: All of %(image)s, %(hidden_field)s, %(text_field)s must be present in your CAPTCHA_OUTPUT_FORMAT setting. Could not find %(hidden_field)s Internal Server Error: /test-modelform/ Traceback (most recent call last): File "D:\Python33\lib\site-packages\django-1.5.5-py3.3.egg\django\core\handler s\base.py", line 115, in get_response response = callback(request, *callback_args, **callback_kwargs) File "D:\Python33\lib\site-packages\django_simple_captcha-0. 4.1-py3.3.egg\capt cha\tests\views.py", line 56, in test_model_form class CaptchaTestModelForm(forms.ModelForm): File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\tests\views.py", line 59, in CaptchaTestModelForm captcha = CaptchaField(help_text='asdasd') File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\fields.py", line 107, in __init__ kwargs['widget'] = kwargs.pop('widget', CaptchaTextInput(output_format=kwarg s.pop('output_format', None))) File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\fields.py", line 73, in __init__ '%%(%s)s' % key django.core.exceptions.ImproperlyConfigured: All of %(image)s, %(hidden_field)s, %(text_field)s must be present in your CAPTCHA_OUTPUT_FORMAT setting. Could not find %(hidden_field)s ............ 

и я google некоторое время, но не нахожу никаких результатов. может быть что-то не так в CAPTCHA_OUTPUT_FORMAT и %(hidden_field)s , но я не знаю, как его решить?

и мне было скучно с ним. И когда я запускаю py в captcha, он говорит так:

 C:\Windows\system32\cmd.exe /c python.exe fields.py Traceback (most recent call last): File "D:\Python33\Lib\os.py", line 673, in __getitem__ value = self._data[self.encodekey(key)] KeyError: 'DJANGO_SETTINGS_MODULE' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Python33\lib\site-packages\django-1.5.5-py3.3.egg\django\conf\__init_ _.py", line 37, in _setup settings_module = os.environ[ENVIRONMENT_VARIABLE] File "D:\Python33\Lib\os.py", line 676, in __getitem__ raise KeyError(key) KeyError: 'DJANGO_SETTINGS_MODULE' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "fields.py", line 1, in <module> \ufefffrom captcha.conf import settings File "D:\Python33\lib\site-packages\django_simple_captcha-0.4.1-py3.3.egg\capt cha\conf\settings.py", line 5, in <module> CAPTCHA_FONT_PATH = getattr(settings, 'CAPTCHA_FONT_PATH', os. path.normpath( os.path.join(os.path.dirname(__file__), '..', 'fonts/Vera.ttf'))) File "D:\Python33\lib\site-packages\django-1.5.5-py3.3.egg\django\conf\__init_ _.py", line 53, in __getattr__ self._setup(name) File "D:\Python33\lib\site-packages\django-1.5.5-py3.3.egg\django\conf\__init_ _.py", line 46, in _setup % (desc, ENVIRONMENT_VARIABLE)) django.core.exceptions.ImproperlyConfigured: Requested setting CAPTCHA_FONT_PATH , but settings are not configured. You must either define the environment variab le DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings . shell returned 1 

там я продолжаю не могу найти дублированный captcha, любая помощь?

  • Django – проблема с django-simple-captcha
  • Captchas in Scrapy
  • Python CAPTCHA-подобный образ
  • django-recaptcha не подтверждает ввод
  • Как использовать клиентский плагин reCaptcha для проверки подлинности?

Пожалуйста, ознакомьтесь с приведенным ниже URL. С 10-го разговора обсуждается одна и та же проблема.

https://github.com/mbi/django-simple-captcha/issues/41

Возможные решения, приведенные в ссылке выше –

  • У вас также установлена ​​эта библиотека как в глобальной, так и в виртуальной среде?

    если «Да», то удалите тот, который не требуется.

  • Вы переопределили «CAPTCHA_OUTPUT_FORMAT» в своих настройках?

    если да, тогда проверьте после комментирования этой строки.

это потому, что я удаляю globle var = 'DJANGO_SETTINGS_MODULE' в своих окнах, что, по моему мнению, не очень важно. и я перезагружаю его в окнах. и тест, наконец, говорит « OK , что означает, что 2 предупреждения выше не очень важны. но после того, как я исправлю revalidation in formwizard and single validation in captcha , тесты показывают множество ошибок, и я ignores их. этот вопрос аннуирует меня три или более дней, и он должен был записываться для запоминания.

  • Пара IP-адресов в списке, выведенном из xlrd
  • Как отображать объекты InLine в интерфейсе администратора Django
  • библиотека декодера python captcha
  • Сегментирование букв в виде Captcha
  • Как настроить Scrapy для обработки капчей
  • Чтение Python Easy Captcha Tesseract

django-simple-captcha · PyPI

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

Django Simple Captcha — чрезвычайно простое, но легко настраиваемое приложение Django для добавления изображений капчи в любую форму Django.

Характеристики

  • Очень прост в настройке и развертывании, но очень гибок в настройке

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

  • Пользовательские генераторы, функции шума и фильтров изменяют внешний вид сгенерированного изображения

  • Поддерживает преобразование текста в речь текста задания для повышения доступности

  • Обновление Ajax

Требования

  • Джанго 2.2+, Python3.6+

  • Последняя версия Pillow, скомпилированная с поддержкой FreeType

  • Flite требуется для преобразования текста в речь (аудио), но не обязательно

Документация

Прочтите документацию в Интернете.

Детали проекта


Эта версия

0.5.17

0.5.16

0.5.15

0.5.14

0.5.13

0.5.12

0.5.11

0.5.10

0.5.9

0.5.8

0.5.7

0.5.6

0,5,5

0.5.4

0.5.3

0.5.2

0.5.1

0.5.0

0.4.9

0.4.8

0.4.6

0,4,5

0.4.4

0.4.3

0.4.2

0.4.1

0.4.0

0.3.8

0.3.7

0.3.6

0.3.4

0.3.3

0.3.2

0.3.1

0.3.0

0.2.0

0.1.7

0.1.6

0,1,5

0.1.4

0.1.3

0.1.2

0.1.1

0.1.0

Загрузить файлы

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

Исходный дистрибутив

django-простая капча-0.5.17.tar.gz (122,0 КБ посмотреть хеши)

Загружено источник

Встроенный дистрибутив

django_simple_captcha-0. 5.17-py2.py3-none-any.whl (93,7 КБ посмотреть хеши)

Загружено ру2 ру3

Хэши для django-simple-captcha-0.5.17.tar.gz
Алгоритм Дайджест хэша
SHA256 9649e66dab4e71efacbfef02f48b83b898352a1ab56f1686ce71033b328
МД5 0f74a3a1f9b4cfc7753bb52b31d
БЛЕЙК2-256 8722dfbaf9b2df374adaad81cb35f188538a54504a7a3796a167a853e6a