Боти можуть створювати зайве навантаження на сайт, сканувати сторінки без користі для власника, надсилати автоматичні запити, перевіряти форми або просто витрачати ресурси хостингу. Якщо сайт працює на веб-сервері LiteSpeed, для частини таких випадків можна використовувати додаткову перевірку відвідувачів через reCAPTCHA без внесення змін у код самого сайту.
Що дає захист від ботів
Не кожен бот є шкідливим. Пошукові системи також використовують ботів для індексації сайту, і їх зазвичай не потрібно блокувати. Але існують і небажані автоматизовані запити: парсери, сканери, сумнівні SEO-боти, боти для підбору форм, автоматичні перевірки вразливостей або програми, які створюють високе навантаження на сайт.
Такі запити можуть призводити до декількох проблем:
- збільшення навантаження на процесор, пам’ять і базу даних;
- повільнішої роботи сайту для реальних відвідувачів;
- зайвого споживання ресурсів хостингу;
- засмічення статистики відвідувань;
- автоматичного сканування форм, сторінок авторизації або пошуку;
- підвищеного ризику атак на CMS, плагіни або адміністративні розділи.
Тому в окремих випадках доцільно не одразу блокувати відвідувача, а спочатку показати йому перевірку reCAPTCHA. Якщо це реальна людина — вона зможе пройти перевірку і продовжити роботу з сайтом. Якщо це автоматизований бот — найчастіше він не зможе пройти перевірку або припинить подальші запити.
Як працює перевірка через LiteSpeed
На хостингу з веб-сервером LiteSpeed можна використовувати спеціальні правила в файлі .htaccess. Вони дозволяють визначити, для яких запитів потрібно увімкнути додаткову перевірку reCAPTCHA.
Для цього використовується змінна:
RewriteRule .* - [E=verifycaptcha]
Таке правило не змінює адресу сторінки і не виконує редирект. Воно лише передає LiteSpeed вказівку, що для запиту потрібно застосувати перевірку captcha.
Також можна не показувати перевірку, а одразу заблокувати небажаного бота:
RewriteRule .* - [E=blockbot:1]
У такому випадку запит буде заблоковано без можливості пройти reCAPTCHA.
Важливо: перед внесенням правил у .htaccess бажано зробити резервну копію файлу. Помилка в правилах може призвести до некоректної роботи сайту.
Коли варто використовувати reCAPTCHA для ботів
Перевірку reCAPTCHA через LiteSpeed варто використовувати не для всіх відвідувачів підряд, а точково. Наприклад, коли ви бачите у статистиці або логах, що певні боти створюють підозріло багато запитів або навантажують сайт.
Найчастіші сценарії використання:
- перевірка окремих ботів за User-Agent;
- перевірка відвідувачів з країн, які не є цільовою аудиторією сайту;
- захист сторінок авторизації, пошуку або форм;
- обмеження небажаних SEO-ботів і парсерів;
- тимчасовий захист під час підвищеного навантаження або атаки.
Не рекомендується без потреби вмикати captcha для всіх відвідувачів. Це може погіршити користувацький досвід і зменшити кількість звернень або замовлень на сайті.
Приклад 1. Перевірка ботів за User-Agent
Якщо певний бот створює високе навантаження на сайт і не приносить користі, його можна відправити на перевірку reCAPTCHA за значенням User-Agent.
Наприклад, так можна увімкнути перевірку для ботів MJ12bot та AhrefsBot:
<IfModule LiteSpeed>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MJ12bot [OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsBot
RewriteRule .* - [E=verifycaptcha]
</IfModule>
У цьому прикладі, якщо запит надходить від User-Agent, який містить MJ12bot або AhrefsBot, LiteSpeed застосує перевірку reCAPTCHA.
Такий підхід зручний, коли потрібно обмежити конкретних ботів, але не чіпати звичайних користувачів сайту.
Приклад 2. Перевірка відвідувачів не з України
Якщо сайт орієнтований переважно на відвідувачів з України, можна зробити так, щоб користувачі з України відкривали сайт без додаткових перевірок, а відвідувачі з інших країн проходили reCAPTCHA.
<IfModule LiteSpeed>
RewriteEngine On
GeoIPEnable On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule .* - [E=verifycaptcha]
</IfModule>
У цьому прикладі перевірка застосовується до всіх відвідувачів, країна яких не визначена як UA. Це може бути корисно для локальних сайтів, які працюють тільки з українською аудиторією.
Водночас потрібно враховувати, що частина реальних користувачів може заходити з-за кордону, використовувати VPN або мобільні мережі з нетиповою маршрутизацією. Тому перед використанням такого правила варто оцінити, чи не завадить воно вашим реальним клієнтам.
Як додати пошукового бота у білий список
Якщо ви використовуєте перевірку за країною або іншими загальними умовами, важливо не заблокувати корисних ботів пошукових систем. Наприклад, можна додати виняток для Googlebot.
<IfModule LiteSpeed>
RewriteEngine On
GeoIPEnable On
RewriteCond %{HTTP_USER_AGENT} !^Googlebot
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule .* - [E=verifycaptcha]
</IfModule>
У цьому прикладі для Googlebot перевірка не застосовується, навіть якщо запит не визначений як український.
Але потрібно пам’ятати, що User-Agent можна підробити. Тому для критично важливих сценаріїв одного лише User-Agent недостатньо. Якщо потрібно точно перевіряти пошукових ботів, варто використовувати додаткові методи перевірки, наприклад reverse DNS lookup.
Приклад 3. Перевірка відвідувачів з окремих країн
Можна застосувати reCAPTCHA тільки до відвідувачів з певних країн. Наприклад, якщо з окремих регіонів надходить багато автоматизованих запитів, можна додати перевірку саме для них.
<IfModule LiteSpeed>
RewriteEngine On
GeoIPEnable On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|US)$
RewriteRule .* - [E=verifycaptcha]
</IfModule>
У цьому прикладі перевірка reCAPTCHA буде застосована до відвідувачів, які визначені як користувачі з Китаю або США.
Такий підхід краще використовувати обережно. Якщо ваш сайт може бути корисним для міжнародної аудиторії, не варто без аналізу обмежувати цілі країни. Більш правильний варіант — спочатку перевірити журнали відвідувань і зрозуміти, звідки саме надходить небажане навантаження.
Як заблокувати бота без reCAPTCHA
Якщо ви точно знаєте, що певний бот є небажаним і не повинен отримувати доступ до сайту, можна не показувати йому reCAPTCHA, а одразу заблокувати запит.
<IfModule LiteSpeed>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} BadBot
RewriteRule .* - [E=blockbot:1]
</IfModule>
У цьому прикладі запити від User-Agent BadBot будуть заблоковані.
Повне блокування варто використовувати тільки тоді, коли ви впевнені, що не обмежите реальних користувачів або корисні сервіси. Для сумнівних випадків краще спочатку застосувати reCAPTCHA, а не жорстке блокування.
Практичні рекомендації
Щоб захист від ботів працював коректно і не заважав реальним відвідувачам, варто дотримуватися декількох простих правил:
- спочатку аналізуйте логи сайту, а вже потім додавайте правила;
- не вмикайте captcha для всіх відвідувачів без реальної потреби;
- додавайте винятки для важливих пошукових систем;
- обережно використовуйте обмеження за країнами;
- після зміни .htaccess перевіряйте роботу сайту в браузері;
- зберігайте резервну копію робочого файлу .htaccess;
- якщо сайт працює на CMS, додатково оновлюйте саму CMS, теми та плагіни;
- не розглядайте reCAPTCHA як повну заміну комплексного захисту сайту.
Захист від ботів найкраще працює тоді, коли він застосовується точково: до конкретних ботів, підозрілих країн, окремих сторінок або періодів підвищеного навантаження.
Висновок
LiteSpeed дозволяє гнучко керувати перевіркою відвідувачів через reCAPTCHA за допомогою правил у файлі .htaccess. Це зручний інструмент для зменшення навантаження від небажаних ботів без внесення змін у код сайту.
За допомогою таких правил можна перевіряти окремих ботів за User-Agent, застосовувати captcha для відвідувачів з певних країн, додавати винятки для пошукових систем або повністю блокувати небажані автоматизовані запити.
Головне — використовувати ці можливості обережно. Надмірна кількість перевірок може заважати реальним користувачам, а занадто жорстке блокування може випадково обмежити корисний трафік. Тому найкращий підхід — аналізувати логи, визначати джерела небажаного навантаження і застосовувати правила саме там, де вони справді потрібні.