Не зливай бюджет впусту: Як закрити лендінг від ботів Facebook та конкурентів
Ви запустили кампанію, відібрали топові креативи, налаштували Pixel, і ось перші кліки... а конверсій немає. CPM летить в космос, CPA не радує, а ROI прямує до нуля. Знайома ситуація? Часто причина не в поганому оффері чи креативі, а в тому, що ваш лендінг — це прохідний двір для модераторів, ботів та хитрих конкурентів, які копіюють ваші зв'язки через спай-сервіси.
Сьогодні ми розберемо технічну базу, яка дозволить вам захистити свої інвестиції та нерви. Це не просто теорія, а покроковий гайд з командами та конфігами, який допоможе зберегти ваш рекламний кабінет в Business Manager та підвищити ефективність кампаній.
Чому безпека лендінгу — це ваші гроші?
Перш ніж перейти до команд в терміналі, давайте зафіксуємо дві головні загрози:
- Модераційні боти рекламних мереж (Facebook, Google, TikTok). Їх мета — перевірити ваш сайт на відповідність правилам. Вони аналізують контент, код, вихідні посилання. Якщо бот побачить щось заборонене на вашому "black page", ви миттєво отримаєте бан акаунту, Pixel та домену.
- Конкуренти та спай-сервіси. Вони парсять ваші лендінги, копіюють тексти, картинки та всю зв'язку цілком. В результаті ви отримуєте вигорілий креатив, перегрітий аукціон і падіння власного ROI, бо хтось запустив вашу ж зв'язку на свій бюджет.
Правильне налаштування інфраструктури відсікає 99% цих небажаних гостей, дозволяючи показувати ваш основний лендінг (black page) тільки цільовій аудиторії.
Рівень 1: Базова гігієна сервера
Все починається з чистого та налаштованого сервера. Забудьте про віртуальний хостинг за долар. Нам потрібен повний контроль, тому беремо будь-який VPS/VDS (наприклад, з DigitalOcean, Hetzner, Vultr) з Ubuntu 22.04 на борту.
Крок 1: Оновлення та базовий firewall
Підключаємось до сервера по SSH та першим ділом оновлюємо всі пакети:
apt update && apt upgrade -yТепер налаштуємо базовий брандмауер UFW (Uncomplicated Firewall). Дозволимо тільки ті з'єднання, які нам потрібні: SSH (порт 22), HTTP (порт 80) та HTTPS (порт 443).
ufw allow ssh
ufw allow 'Nginx Full'
ufw enableСистема попросить підтвердження — погоджуємось, натиснувши 'y'. Тепер наш сервер захищений від сканування по більшості портів.
Крок 2: Правильні права доступу до файлів
Одна з найчастіших помилок новачків — виставляти права 777 на всі файли. Це величезна діра в безпеці. Правильним тоном є налаштування, при якому власником файлів є користувач веб-сервера (зазвичай www-data), а права дозволяють лише читання та виконання для інших.
Після того, як ви завантажили файли лендінгу в директорію /var/www/html, виконайте ці команди:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/htmlЦе означає, що власник (веб-сервер) може читати, писати і виконувати файли, а всі інші — тільки читати і виконувати. Цього достатньо для роботи сайту і набагато безпечніше.
Рівень 2: Cloudflare — ваш головний щит
Cloudflare — це безкоштовний і надпотужний інструмент, який обов'язково має бути у вашому арсеналі. Він не тільки приховує реальну IP-адресу вашого сервера, але й фільтрує значну частину сміттєвого трафіку ще на підльоті.
Налаштування DNS та SSL
Після реєстрації та додавання домену в Cloudflare, переконайтесь, що навпроти вашого A-запису стоїть помаранчева хмаринка (режим Proxied). Це і є магія, що приховує ваш IP.
Далі перейдіть в розділ SSL/TLS. Критично важливий пункт — режим шифрування. Завжди обирайте Full (Strict). Для цього у вас на сервері має бути встановлений SSL-сертифікат (легко робиться через certbot). Режим "Flexible" створює незашифроване з'єднання між Cloudflare та вашим сервером, що є вразливістю.
Правила Firewall (WAF)
Це найцікавіше. В розділі Security -> WAF ми можемо створювати власні правила для блокування небажаних відвідувачів. Ось приклад правила для блокування відомих "поганих" країн та дата-центрів, з яких часто йдуть боти та парсери.
| Field | Operator | Value | Action |
|---|---|---|---|
| Country | is in | India, China, Indonesia | Block |
| AS Num | equals | 16509 (Amazon AWS) | Block |
| AS Num | equals | 14618 (Amazon AWS) | Block |
| User Agent | contains | AhrefsBot | Block |
Також обов'язково увімкніть Bot Fight Mode. Це безкоштовна опція, яка автоматично відсікає велику частину автоматизованого трафіку.
Захист адмінки трекера.
Створіть правило WAF, яке дозволяє доступ до адмін-панелі трекера (наприклад, шлях /admin/) тільки з вашої особистої IP-адреси. Всіх інших — блокувати. Це захистить вас від брутфорсу паролів та спроб зламу трекера.
Рівень 3: Фільтрація на рівні PHP (Клоакінг)
Коли базовий захист налаштовано, час розділяти трафік. Для цього нам знадобиться трекер (наприклад, Keitaro, Binom) або самописний PHP-скрипт. Суть проста: ми створюємо "білий" лендінг (white page) для ботів та "чорний" (black page) для реальних користувачів.
White Page: Це має бути безпечна сторінка, що імітує легальний бізнес. Не потрібно вигадувати щось складне. Використовуйте ChatGPT для генерації унікального тексту на тему блогу про подорожі чи інтернет-магазину квітів. Це значно прискорює процес і робить ваші "вайти" унікальними в очах модераторів.
Black Page: Ваш основний лендінг з оффером.
Пастка для ботів (Honeypot).
Додайте на ваш "чорний" лендінг приховане посилання, яке невидиме для людини (наприклад, через CSS display: none;), але видиме в коді. Боти часто переходять за всіма посиланнями на сторінці. Налаштуйте трекер так, щоб будь-хто, хто перейшов за цим прихованим посиланням, автоматично потрапляв у чорний список за IP.
Приклад інтеграції з Keitaro
Найпопулярніший спосіб інтеграції — завантажити в кореневу папку сайту файл kclient.php з трекера і створити головний файл index.php з таким вмістом:
<?php
// index.php
// Вмикаємо звіт про всі помилки для легкого дебагу
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Підключаємо KClient
require_once 'kclient.php';
// Створюємо екземпляр клієнта, вказуючи URL вашої кампанії в Keitaro
$client = new KClient('https://your-tracker-domain.com/xxxxxxxx', true);
// Встановлюємо параметри (необов'язково, але корисно)
// Наприклад, можна передати User Agent для більш точної фільтрації
$client->setParam('user_agent', $_SERVER['HTTP_USER_AGENT']);
// Запускаємо логіку клоакінгу
$client->execute();
// Важливо: після execute() не повинно бути ніякого виводу (HTML, echo і т.д.)
?>Тепер вся магія відбувається в налаштуваннях кампанії в Keitaro: ви створюєте потоки, в одному з яких вказуєте посилання на ваш black page, а в іншому (catch-all/forced) — показуєте локальний файл white page. Фільтри в Keitaro дозволяють відсіювати ботів за IP-базами, User Agent, відсутністю реферера та десятками інших параметрів.
Альтернатива для конструкторів: JS-інтеграція.
Якщо ваш "білий" сайт зроблено на конструкторі (Tilda, Shopify, Wix), ви не зможете завантажити туди PHP-файл. У цьому випадку використовуйте JS-інтеграцію. Трекер видасть вам шматок JavaScript-коду, який треба вставити в <head> вашого сайту на конструкторі. Скрипт сам зв'яжеться з трекером, перевірить відвідувача і, якщо це бот, залишить його на сайті, а якщо реальна людина — зробить редирект або підмінить контент.
Підводні камені та типові помилки
Навіть з ідеальним гайдом можна припуститися помилок. Ось найпоширеніші:
- Нескінченний редирект (Loop Redirect): Часто виникає, якщо в Cloudflare стоїть режим SSL "Flexible", а на вашому веб-сервері (Nginx/Apache) налаштовано примусовий редирект з HTTP на HTTPS. Cloudflare шле запит на ваш сервер по HTTP, сервер редиректить його на HTTPS, запит знову йде на Cloudflare і так по колу. Рішення: завжди використовуйте режим Full (Strict).
- Використання 301 редиректу замість 302: При клоакінгу, якщо вам потрібно зробити редирект, завжди використовуйте тимчасовий (302). Постійний (301) редирект може закешуватися браузером або ботом, і якщо вам знадобиться змінити логіку, ви не зможете цього зробити. Це може вбити ваш рекламний акаунт.
- Ігнорування IPv6: Все більше ботів та модераторів використовують IPv6-адреси. Переконайтесь, що ваш firewall (UFW) та правила в трекері коректно працюють з цим протоколом.
- Забуті файли на сервері: Файли типу
phpinfo.php,test.php, бекапи архівуsite.zipабо прихована папка.gitв корені сайту — це подарунок для конкурента. Вони дозволяють дізнатись все про вашу інфраструктуру та викачати вихідний код. Завжди видаляйте все зайве. - Діра в безпеці: LFI через GET-параметр. Ніколи не робіть так: include($_GET['page'] . '.php');. Хакер може передати в параметрі page шлях типу ../../../../etc/passwd і прочитати системні файли вашого сервера. Завжди використовуйте жорстко прописані шляхи або білі списки дозволених файлів.
Пам'ятайте, що захист лендінгу — це не разова акція, а постійний процес. Слідкуйте за логами, оновлюйте ПЗ та адаптуйтесь до нових методів модерації. Інвестиції в технічну грамотність завжди окупаються стабільним профітом та здоровими нервами. Успішних запусків!