js_challenge
Директива `js_challenge` включает механизмы proof-of-work на основе JavaScript, которые отпугивают ботов и подтверждают, что пользователи в конфигурациях NGINX — люди.
Описание
Директива js_challenge является частью модуля NGINX Javascript challenge, предназначенного для реализации механизма proof-of-work, который помогает отличать автоматизированных ботов от реальных пользователей. Когда эта директива включена в контексте server или location, она заставляет NGINX отправлять посетителям JavaScript-челлендж. Пользователи должны успешно пройти этот челлендж, чтобы получить доступ к содержимому. Эта техника особенно полезна для уменьшения таких атак, как web scraping или чрезмерный бот-трафик, предлагая более лёгкое решение по сравнению с традиционной CAPTCHA.
Пример конфига
server {
js_challenge on;
js_challenge_secret "your_secret";
js_challenge_title "Please verify you're human";
location / {
# additional configurations
}
}Убедитесь, что cookies включены в браузере пользователя, так как их отключение может привести к бесконечной перезагрузке страницы.
Директива может вызывать проблемы с производительностью, если пользователи часто аннулируют challenge, обновляя страницу, не завершив его.
Будьте осторожны при использовании этой директивы за reverse proxies, поскольку они могут выдавать один и тот же challenge нескольким пользователям.