Фильтрация трафика
На этой странице описано, как slimTDS определяет и классифицирует входящих посетителей перед маршрутизацией — а именно обнаружение ботов и обработка трафика, не совпавшего ни с одним потоком.
Обнаружение ботов
Заголовок раздела «Обнаружение ботов»BotDetector выполняется при обработке каждого клика, сразу после GeoLookup. Он проверяет посетителя по пяти слоям сигналов по порядку:
- Явный список IP (
core.bot_ips) — отдельные IP известных поисковых краулеров из списка live-веб-краулеров myip.ms. - CIDR-диапазоны (
core.bot_cidrs) — блоки IP датацентров и VPN из X4BNet/lists_vpn (output/datacenter/ipv4.txtиoutput/vpn/ipv4.txt). Postgres использует GiST-индекс по колонкеinetдля субмиллисекундного поиска по точке. - Блоклист ASN (
core.bot_asns) — номера ASN известных хостинг- и датацентр-провайдеров из brianhama/bad-asn-list. Применяется только когдаGeoLookupуспешно определил ASN посетителя. - Regex по имени ISP — запасное сопоставление по regex с распознанным именем ISP для известных поисковиков (Google, Yandex, Bing, Mail.ru, Baidu, Yahoo), когда этап ASN не дал совпадения.
- Паттерны User-Agent — сопоставление по regex с известными сигнатурами UA ботов, включая
Googlebot,YandexBot,bingbot,Baiduspider,HeadlessChrome,wget,curl,python-requests, а также общие паттерныbot/crawler/spider/scraper.
Если срабатывает любой этап, ctx.isBot устанавливается в true, а ctx.botName фиксирует совпавшую категорию. Клики ботов всё равно логируются в stats.clicks с is_bot = true — они не отбрасываются, чтобы качество трафика было видно в админке.
Список IP обновляется cron-задачей bots:update (ежедневно). Списки ASN и CIDR обновляются cron-задачей bots:update-extra (тоже ежедневно).
Трэш-трафик
Заголовок раздела «Трэш-трафик»Трэш — это трафик, попавший на активную кампанию, но не совпавший ни с одним потоком — например, посетитель из гео, на которое не нацелен ни один поток, или не прошедший все группы фильтров. Поле кампании trash_mode управляет ответом:
| Значение | Поведение |
|---|---|
0 | Вернуть HTTP 200 с пустым телом (пустая страница) |
1 | HTTP 302 редирект на trash_url (откат до 204, если trash_url не задан) |
2 | HTTP 403 Forbidden |
3 | HTTP 404 Not Found |
4 | HTTP 301 постоянный редирект на trash_url (откат до 204) |
5 | HTTP 307 редирект на trash_url (сохраняет метод запроса; откат до 204) |
6 | Редирект через meta-refresh на trash_url (откат до 204) |
7 | JavaScript-редирект на trash_url (откат до 204) |
Трэш-клики всегда логируются в stats.clicks с фактически отправленным HTTP-статусом, а для редирект-режимов (1, 4, 5, 6, 7) поле out_url устанавливается в trash_url, чтобы во вкладке кликов админки было видно, куда был отправлен посетитель.