Мои проекты

Правила слов, CSV и защита от спама

Настраиваем общий словарь, проверяем совпадения и отличаем модерацию от ограничения частоты.

Урок 11 / 22 · Commentail 1.3.2

Начните с нескольких правил, смысл которых вы можете объяснить модератору. В Comments откройте Rules и добавьте фразу с действием review. На учебной странице выберите Apply rules: в других режимах словарные правила не выполняются.

Проверим совпадение

Отправьте фразу в другом регистре и с пунктуацией между словами. Совпадение ищется по целым последовательностям слов, а не по вхождению внутри другого слова; ё и е считаются одинаковыми. Текст пользователя при этом не переписывается. Если одновременно подходят review и reject, победит reject.

Перенесём правила через CSV

Сначала экспортируйте существующий список — экспорт включает все правила, даже при фильтре. Создайте UTF-8 CSV с неизменёнными заголовками:

csv
phrase,action,enabled
unwanted promotion,review,1
blocked phrase,reject,1

В action разрешены review и reject; в enabled — 1/0, также принимаются true/false. Поддерживаются запятая и точка с запятой как разделитель. Для фраз с разделителями используйте корректные кавычки CSV. Экспорт содержит BOM для совместимости с таблицами.

Импорт обновляет действие и включённость по точному тексту фразы, добавляет новые, сохраняет неупомянутые. Это не полная замена словаря. Дубликат строки или некорректное значение отменяет весь импорт: исправьте указанную строку. Сначала проверьте маленький файл. Лимиты по умолчанию — 5 МиБ и 20 000 строк; менять их можно только в default.

Что ещё отправляет гостя на проверку

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

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

python
COMMENTAIL = {
    "default": {
        "GUEST_CAPTCHA_MODE": "adaptive",
        "AUTHOR_MIN_INTERVAL": 30,
        "AUTHOR_LIMIT_PER_HOUR": 20,
        "IP_LIMIT_PER_HOUR": 100,
        "GUEST_FORM_MIN_SECONDS": 2,
        "GUEST_LINK_REVIEW_THRESHOLD": 3,
    },
}

GUEST_FORM_MIN_SECONDS — порог для проверки, а не обязательное ожидание перед кнопкой. Ноль отключает именно этот сигнал. GUEST_CAPTCHA_MODE="always" меняет требование CAPTCHA, но не подтверждение почты.

Лимиты автора и IP общие для страниц одного Site. Посетители офиса или мобильного оператора могут делить внешний IP. Если блокируются все подряд, сначала проверьте прокси из урока 19. Не увеличивайте лимиты вслепую и не выключайте CSRF. При переопределении формы сохраняйте honeypot commentail_contact, form_age и остальные скрытые поля.

Другие уроки по этой задаче

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

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.