Урок 11 / 22 · Commentail 1.3.2
Начните с нескольких правил, смысл которых вы можете объяснить модератору. В Comments откройте Rules и добавьте фразу с действием review. На учебной странице выберите Apply rules: в других режимах словарные правила не выполняются.
Проверим совпадение
Отправьте фразу в другом регистре и с пунктуацией между словами. Совпадение ищется по целым последовательностям слов, а не по вхождению внутри другого слова; ё и е считаются одинаковыми. Текст пользователя при этом не переписывается. Если одновременно подходят review и reject, победит reject.
Перенесём правила через CSV
Сначала экспортируйте существующий список — экспорт включает все правила, даже при фильтре. Создайте UTF-8 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 символов за час и от трёх явных ссылок. Это сигналы, а не доказательство, что автор бот.
Технические значения можно задать так, сохраняя другие поля:
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 и остальные скрытые поля.
Выберите способ входа или оставьте комментарий как гость ниже.