Не зливай бюджет впусту: Як закрити лендінг від ботів Facebook та конкурентів

Не зливай бюджет впусту: Як закрити лендінг від ботів 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 і прочитати системні файли вашого сервера. Завжди використовуйте жорстко прописані шляхи або білі списки дозволених файлів.

Пам'ятайте, що захист лендінгу — це не разова акція, а постійний процес. Слідкуйте за логами, оновлюйте ПЗ та адаптуйтесь до нових методів модерації. Інвестиції в технічну грамотність завжди окупаються стабільним профітом та здоровими нервами. Успішних запусків!