Самая частая ошибка при работе с ботами ByteDance — воспринимать их как единый монолитный «TikTok-трафик» и резать всё одним правилом. TikTokSpider и Bytespider решают принципиально разные задачи, у них разная агрессивность и, что важнее всего, разная цена ошибки при блокировке: заблокировать TikTokSpider — значит сломать карточки превью при каждом шеринге ссылки на сайт внутри TikTok, а для медиа и партнёрских проектов, живущих на переходах по шер-ссылкам, это прямая и измеримая потеря кликов, а не абстрактная предосторожность.
Что именно делает TikTokSpider
Когда пользователь TikTok вставляет внешнюю ссылку в чат, описание профиля, комментарий или биографию, платформе нужно быстро получить заголовок, описание и превью-картинку для этой ссылки — точно так же, как это делают facebookexternalhit у Facebook или redditbot у Reddit, уже разобранные в этой серии. TikTokSpider выполняет именно эту функцию: точечный запрос по факту конкретного действия пользователя, а не системный обход каталога. По независимым описаниям, боты такого типа (фетчеры превью) обращаются только к самой расшаренной ссылке, не идут вглубь сайта по внутренним ссылкам и не имеют доступа к закрытому контенту, если сама ссылка не даёт такого доступа.
Параметры бота
| Параметр | Значение |
| User-Agent (токен) | TikTokSpider |
| Типовая полная строка | Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com) |
| Оператор | ByteDance / TikTok |
| Назначение | On-demand fetch страницы для построения превью ссылки (Open Graph, метаданные, thumbnail) внутри TikTok |
| Характер обхода | Точечный, привязанный к конкретному факту шеринга URL — не системный ночной проход каталога |
| Требование к рендерингу | Как правило, без выполнения клиентского JavaScript — og-теги должны присутствовать в исходном HTML (SSR/пререндер), иначе превью не соберётся |
| Список IP / opt-out | ❌ ByteDance не публикует официальный статический список IP именно для TikTokSpider и не даёт публичной формы отказа |
| Соблюдение robots.txt | Неоднозначно по независимым источникам — часть отчётов подтверждает соблюдение, часть фиксирует случаи игнорирования; полагаться на одно только правило в файле не стоит |
| Родственные боты той же экосистемы | Bytespider (AI-обучение/индексация), Doubaobot (данные под Doubao), краулеры Toutiao — другие задачи, другая политика допуска |
TikTokSpider vs Bytespider — ключевой практический вопрос
| Критерий | TikTokSpider | Bytespider |
| Функция | Превью ссылок в TikTok | Общий краулинг: AI/LLM (в т.ч. Doubao), индексация/контент-пайплайны |
| Агрессивность | Низкая/умеренная, по запросу | Высокая: волны обхода, похожие на нагрузку без конверсий |
| Влияние блокировки | Ломаются карточки ссылок в TikTok | Снижается съём контента под AI/индекс ByteDance |
| Рекомендация | Allow, если важны шеры | Disallow для большинства сайтов вне экосистемы Doubao |
Независимое профильное сравнение прямо подтверждает: TikTokSpider не приносит реферального трафика и не даёт атрибуции источника (сами потребительские продукты ByteDance не отправляют клики обратно к издателям), — но при этом это отдельный, самостоятельный по назначению бот, а не альтернативное имя Bytespider, как иногда ошибочно указывают отдельные каталоги.
Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.
Реальный кейс из практики: как выглядит подмена
Показательное наблюдение из форума вебмастеров: администратор сайта зафиксировал, что непосредственно перед визитом TikTokSpider с того же IP-адреса и в то же время шёл запрос к robots.txt уже под другим UA — Go-http-client/2.0. Такое расхождение идентификации между запросом политики и самим обходом — типичный тревожный сигнал: легитимный бот обычно запрашивает robots.txt под тем же именем, под которым потом обходит сайт, а смена UA специально для чтения политики выглядит как попытка обойти целевое правило блокировки.
Сколько трафика он создаёт
По сводке TrafficVeil (данные март–июнь 2026, июнь обрезан 14-м числом), паттерн tiktokspider набрал порядка 2,6 млн запросов суммарно по выборке доменов — заметный объём, но с иным профилем нагрузки, чем у Bytespider: всплески коррелируют с фактическим шерингом конкретных URL, а не с плановым ночным проходом всего каталога, который в той же выборке дал Bytespider свыше 10 млн запросов. Если в логах видна плотная, равномерная нагрузка на пагинацию и карточки товаров под общим UA семейства ByteDance — стоит сначала разделить хиты на TikTokSpider и Bytespider и только потом принимать решение, а не резать оба одним правилом.
Как найти и проверить в логах
# Точный токен
grep -i "TikTokSpider" /var/log/nginx/access.log
# Контакт из UA — удобно для верификации
grep -i "ttspider-feedback@tiktok.com" /var/log/nginx/access.log
# Разделить семейство ByteDance по вкладу
grep -iE "TikTokSpider|Bytespider|Doubaobot" /var/log/nginx/access.log | \
sed -n 's/.*"\([^"]*\)".*/\1/p' | sort | uniq -c | sort -rn
Практический тест для проверки, что превью вообще собираются корректно, — прямой запрос под этим UA с проверкой наличия og-тегов в ответе:
curl -A "TikTokSpider" https://example.com/page | grep -i "og:title"
Официального удобного JSON-списка IP именно для TikTokSpider ByteDance не публикует. Ориентиры по сети: AS396986 (Bytedance Inc.), также встречается AS138699, а часть трафика идёт из облачных ASN (в том числе AWS) — поэтому фильтрация по одному лишь ASN неполна и рискует зацепить легитимные превью.
Как настроить robots.txt
Рабочая связка для большинства сайтов — явно разрешить превью, отдельно запретив агрессивный краулинг:
User-agent: TikTokSpider
Allow: /
User-agent: Bytespider
Disallow: /
User-agent: Doubaobot
Disallow: /
Важно: allow для TikTokSpider должен идти отдельной секцией User-agent и не перекрываться намерением запретить Bytespider — это разные блоки правил, смешивать их в один нельзя.
Управление на уровне сервера
Резать агрессивный краулер, не трогая превью — с мягким rate-limit вместо жёсткой блокировки на случай всплесков TikTokSpider:
if ($http_user_agent ~* "Bytespider") {
return 403;
}
if ($http_user_agent ~* "Doubaobot") {
return 403;
}
limit_req_zone $binary_remote_addr zone=ttspider:10m rate=30r/m;
location / {
if ($http_user_agent ~* "TikTokSpider") {
limit_req zone=ttspider burst=60 nodelay;
}
}
Итоговая стратегия
- нужны превью в TikTok — Allow для TikTokSpider, содержимое og-тегов должно быть в исходном серверном HTML, без обязательного клиентского JS;
- не нужны AI-съём и «ночные волны» — Disallow/403 для Bytespider (и при необходимости Doubaobot), не трогая TikTokSpider;
- не банить по ASN ByteDance целиком, если важен трафик из шер-ссылок TikTok — так теряются карточки превью вместе с нежелательным краулингом;
- robots.txt недостаточен как единственный контроль — соблюдение неоднозначно, стоит дублировать критичные правила на уровне сервера или WAF.
Частые вопросы
TikTokSpider — это то же самое, что Bytespider?
Что будет, если заблокировать весь трафик ByteDance по ASN?
Как выглядит признак подмены (спуфинга) под этим ботом?
Нужен ли JavaScript-рендеринг для корректной работы превью?
Как проверить, что превью для TikTok собираются правильно?
Достаточно ли одного robots.txt для контроля этих ботов?
Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.