Как ИИ-ассистенты получают веб-страницы: анализ логов Nginx для ChatGPT, Claude, Gemini и других

Разработчик провёл практический эксперимент, чтобы определить, получают ли ИИ-ассистенты веб-страницы в реальном времени или отвечают из кэшированных индексов, когда пользователи спрашивают о конкретных сайтах. Настроив кастомное логирование Nginx и предоставив основным чат-ботам уникальные строки запроса, они получили чёткие доказательства поведения при получении данных.
Настройка проверки
В тесте использовался пользовательский формат логов Nginx для захвата заголовков, которые стандартный комбинированный лог сжимает:
log_format ai_probe escape=json '{' '"time":"$time_iso8601",' '"ip":"$remote_addr",' '"uri":"$request_uri",' '"status":$status,' '"ua":"$http_user_agent",' '"referer":"$http_referer",' '"accept":"$http_accept"' '}';
Каждый ассистент получил запрос, указывающий на уникальную строку запроса (/?ai=chatgpt, /?ai=claude и т.д.), что упростило атрибуцию. Запросы повторялись в разных сессиях, чтобы избежать маскировки моделей получения данных временными попаданиями в кэш.
Кто заявил о себе с помощью специальных user-agent
Пять ассистентов появились с сигналами, специфичными для получения данных:
- ChatGPT: ChatGPT-User/1.0 (Accept в стиле Chrome, без проверки robots.txt)
- Claude: Claude-User/1.0 (Accept */*, всегда сначала проверяет robots.txt)
- Perplexity: Perplexity-User/1.0 (пустой заголовок Accept)
- Meta AI: meta-webindexer/1.1 (Accept */*, без проверки robots.txt)
- Manus: Суффикс Manus-User/1.0 на UA Chrome (Accept в стиле Chrome)
Все пять получали страницу напрямую из источника.
Кто не заявлял о себе
- Gemini: Ноль запросов от каких-либо user-agent Google в течение окна запроса. Отвечал полностью из своего собственного индекса без выполнения живого получения данных со стороны провайдера.
- Copilot: Обычный Chrome 135 на Linux x86_64, полный Accept в стиле браузера. Получал данные, но неотличим от человеческих посетителей.
- Grok: Обычный Mac Safari 26 и обычный Mac Chrome 143. Получал данные, но неотличим от человеческих посетителей.
Ключевые поведенческие модели, наблюдаемые
ChatGPT: Обращения с нескольких исходных IP-адресов в рамках одного всплеска, обычно получая несколько страниц-кандидатов одновременно, решая, какую цитировать. В 24-часовом рабочем окне запросы ChatGPT-User поступали из пяти различных диапазонов Azure: 23.98.x.x, 20.215.x.x, 40.67.x.x, 51.8.x.x и 51.107.x.x.
Claude: Всегда получает /robots.txt перед каждым получением страницы, из IP-пространства, принадлежащего Anthropic, в диапазоне 216.73.216.0/24. Чисто следует редиректам, включая нормализацию завершающего слеша. Anthropic запускает три различных бота: Claude-User (получение данных, инициированное пользователем), Claude-SearchBot (поисковый индекс) и ClaudeBot (обучающий краулер).
Perplexity: Прямое получение данных без заголовка Accept или реферера. PerplexityBot (их краулер для индексации поиска) отдельно проверял /robots.txt. Автор отмечает, что Perplexity может получать данные в реальном времени, но не обязан, так как может отвечать из своего собственного индекса.
Gemini: Живое получение данных со стороны провайдера не наблюдалось. Google не публикует user-agent, специфичный для получения данных для Gemini, и согласно документации Google по краулерам, AI Overviews и AI Mode основываются на том же поисковом индексе, который заполняет Googlebot.
Эксперимент различает два сигнала: получение данных со стороны провайдера (ассистент обращается к источнику со специальным user-agent) и реальные переходы по кликам (человек читает ответ ИИ и нажимает на цитату, прибывая как обычный браузер с ассистентом в качестве реферера). Объединение обоих в одно число «ИИ-трафика» скрывает это полезное различие.
📖 Прочитать полный источник: HN AI Agents
👀 Смотрите также

Результаты тестирования APEX Benchmark: производительность Qwen 3.5 в реальных задачах программирования
Результаты тестирования APEX показывают производительность моделей Qwen 3.5 на 70 реальных задачах по программированию с GitHub. Версия 397B опускается до 1194 ELO на задачах уровня «мастер», в то время как GLM-4.7 в квантованном виде лидирует среди локальных моделей с 1572 ELO.

Использование вложений Harrier для локального семантического поиска в памяти агентов OpenClaw
Запустите локальный сервер эмбеддингов с моделью Harrier от Microsoft, откройте API, совместимое с Ollama, и настройте memorySearch в OpenClaw для локального поиска семантической памяти без внешних сервисов.

Щит: Открытый плагин безопасности для Claude Code с унифицированным сканированием
Shield — это плагин безопасности с открытым исходным кодом для Claude Code, который координирует работу нескольких инструментов безопасности через единую команду /shield:shield, автоматически определяет ваш стек технологий, запускает установленные инструменты и генерирует объединённые отчёты с оценками риска и предложениями по исправлению кода.

Щитбот: Открытый плагин-сканер безопасности для Claude Code
Shieldbot — это сканер безопасности с открытым исходным кодом, который работает как плагин внутри Claude Code, объединяя шесть сканеров, включая Semgrep с более чем 5000 правил, Bandit, Ruff, detect-secrets, pip-audit и npm audit. Он устраняет дублирование результатов и генерирует приоритизированные отчёты с оценками риска и исправлениями кода.