Как ИИ-ассистенты получают веб-страницы: анализ логов 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
👀 Смотрите также

Создание и тестирование MCP-сервера в Claude Desktop: архитектура и извлечённые уроки
Разработчик делится своим опытом создания и тестирования MCP-сервера в Claude Desktop, подробно описывая архитектурную настройку и практические уроки, извлеченные из работы со схемами инструментов, отладкой и ограничениями.

Потеря данных сессии Claude Code: скрипт резервного копирования для Windows и Mac
Пользователи сообщают о молчаливой потере сессий Claude Code. Это бесплатный автоматический скрипт резервного копирования для Windows и Mac с использованием PowerShell и launchd.

Madar: Локальный компилятор контекста для Claude Code / Cursor — на 78% меньше токенов в репозитории NestJS
Madar — это локальный компилятор контекста с открытым исходным кодом для агентов кодирования. В репозитории NestJS + BullMQ (~800 файлов) он сократил количество входных токенов Claude Code на 78%, а стоимость — на 63% для задачи объяснения. Только ограниченные графы.

Разработчик создал доску вакансий в сфере ИИ/МО, используя Claude Code для дизайна и SEO.
Разработчик создал MOAIJobs.com — бесплатный сайт, который курирует вакансии в области ИИ/машинного обучения от ведущих лабораторий и компаний с возможностью фильтрации по категориям, местоположению и зарплате. Дизайн сайта и техническая SEO-оптимизация были выполнены Claude Code на основе предоставленных разработчиком референсов и пояснений.