Эффективные антибот-меры (если ты — владелец стримингового сайта)
Продолжаем цикл:
Эффективные антибот-меры (если ты — владелец стримингового сайта)
👉GeoIP фильтрация: только регионы твоей аудитории.
👉ipset + ASN блокировка: AWS, GCP, Hetzner и др.
👉UA rate-limiting: ограничение частоты запросов по UA/IP.
Динамические ключи и токены:
👉token=sha256(user_id+secret+timestamp)
👉Истекает через 5 минут.
☑️Никогда не вставляй .m3u8 или .mp4 напрямую в HTML.
☑️Используй backend-прокси, выдающий видео под другим URL (например, /player/proxy?id=XYZ&auth=token).
☑️Видео подгружается через JS после взаимодействия (например, кнопка "Начать").
☑️Проверка на navigator.webdriver, canvas, fonts, audio fingerprinting.
☑️honeypot-URL (например, stream/secret.mp4) — если кто-то запрашивает его, это точно бот.
☑️Captcha для доступа к потокам в первый раз.
☑️Публикация ложных страниц под названия матчей с мёртвыми ссылками (ловушки).
☑️Генерация видео-файлов, которые выглядят как стрим, но содержат watermark или no-content видео.
1. NGINX: защита стримов через JS + reverse proxy
Цель:
Не светить прямые .m3u8/.mp4 URL.
Защищать стрим через backend-прокси, доступ к которому выдаётся только после JS-проверки.
Шаг A: Nginx reverse proxy для потока
location /stream-proxy/ {
internal; # доступ только через X-Accel-Redirect
proxy_pass https://real-cdn.example.com/stream/;
proxy_set_header Host real-cdn.example.com;
proxy_set_header X-Real-IP $remote_addr;
}
Шаг B: JS-генерация токена (frontend)
<script>
fetch('/auth-token')
.then(res => res.json())
.then(data => {
const video = document.createElement('video');
video.src = `/access/${data.token}.m3u8`;
video.autoplay = true;
document.body.appendChild(video);
});
</script>
Шаг C: Backend проверка токена
location ~ ^/access/([a-zA-Z0-9]+)\.m3u8$ {
set $token $1;
if ($token = "") { return 403; }
# Валидация токена (можно через fastcgi_pass, uwsgi_pass или Lua)
# Если валиден:
rewrite ^ /stream-proxy/actual-stream-name.m3u8;
}
2. Скрипт автообновления ipset из ASN провайдеров
#!/bin/bash
# Сохрани как /etc/cron.daily/ipset_update.sh
IPSET_NAME="cloud_asn"
TMP_FILE="/tmp/cloud_asn.txt"
# Загрузка Amazon диапазонов
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq -r '.prefixes[].ip_prefix' | grep -E 'amazonaws.com' > $TMP_FILE
# Аналогично можешь добавить GCP, Azure и т.д.
# Очистка и обновление
ipset flush $IPSET_NAME
for ip in $(cat $TMP_FILE); do
ipset add $IPSET_NAME $ip -exist
done
iptables -I INPUT -m set --match-set $IPSET_NAME src -j DROP
Запускай через cron ежедневно.
3. Фишки и хаки: “как пират пирату”
A. Приманки
Страницы с "левыми" матчами, которые триггерят анти-пиратов, но не содержат контента. Статистика покажет IP ботов → бан.
B. Фальшивые плееры
iframe, который выглядит как стрим, но на самом деле iframe-заглушка → ты знаешь, кто триггерится по ней.
C. Fingerprint-ловушки
JS скрипт, который детектит:
👉navigator.webdriver
👉отсутствие navigator.languages
👉нет реакции на DOM события
Если такие условия — отправка "фальшивого" потока (например, видео с логотипом сервиса → если пожалуются, ты знаешь, кто бот).
👉Привязывай поток к IP + браузеру через HMAC-секрет, TTL = 3–5 минут.
👉Если токен валид, но другой IP → 403.
#Антибот #ЗащитаСтриминга #Стриминг #Антипиратство #GeoIP #БлокировкаБотов #JSЗащита #Nginx #ReverseProxy #Токены #Капча #Fingerprinting #АнтиКопираст #ВидеоПоток #БезопасностьСайта #Хаки #ПревентивныеМеры #ОбманБотов #СпортивныйСтриминг #ITБезопасность
Анонс следующего выпуска цикла АнтиКопираст:
Полный, рабочий стек "под ключ" для защиты спортивного стрим-сайта, включая:
👉JS-токен генерацию с детектом ботов,
👉backend-прокси на Nginx,
👉автоистекающие токены с IP-биндингом,
👉ловушки и обходы анти-пиратов.
Ещё больше в нашем ТГ канале https://t.me/blackhatseowww