Мы вскрыли трафик ChatGPT, Gemini и DeepSeek, чтобы понять, откуда берутся «источники» в ответах. chatgpt.. chatgpt. deepseek.. chatgpt. deepseek. gemini.. chatgpt. deepseek. gemini. geo.. chatgpt. deepseek. gemini. geo. llm.. chatgpt. deepseek. gemini. geo. llm. SSE.. chatgpt. deepseek. gemini. geo. llm. SSE. искусственный интеллект.. chatgpt. deepseek. gemini. geo. llm. SSE. искусственный интеллект. Поисковая оптимизация.. chatgpt. deepseek. gemini. geo. llm. SSE. искусственный интеллект. Поисковая оптимизация. Поисковые технологии.. chatgpt. deepseek. gemini. geo. llm. SSE. искусственный интеллект. Поисковая оптимизация. Поисковые технологии. Реверс-инжиниринг.. chatgpt. deepseek. gemini. geo. llm. SSE. искусственный интеллект. Поисковая оптимизация. Поисковые технологии. Реверс-инжиниринг. цитирование.

Когда нейросеть отвечает на вопрос и показывает блок «источников», кажется, что у всех систем это одно и то же — список ссылок, на которые модель опиралась. На деле за этим блоком в каждой системе стоит своя реализация: свой способ обмена с сервером, свой формат ответа, свои поля, из которых интерфейс достаёт цитаты. Мы разобрали сетевой обмен веб-клиентов трёх систем — ChatGPT, Gemini и DeepSeek — и параллельно прогнали через них один и тот же набор запросов по 10 раз, чтобы понять не только техническое устройство цитирования, но и что эти системы реально цитируют.

Сразу оговорка: я основатель RankCaster AI — платформы, которая управляет видимостью брендов в ответах нейросетей. То есть мы изучаем категорию, в которой сами работаем. Чтобы не подыгрывать себе, мы исключили собственный домен из всех таблиц ещё до подсчётов, а ограничения методики описали в полном тексте исследования. Здесь — техническая часть: разбор механики цитирования.

Зачем вообще лезть в сетевой обмен

Исходный вопрос был маркетинговый: если сайт стоит в топ-10 Google или Bing, попадёт ли он в источники, которые цитирует ChatGPT по тому же запросу?

Короткий ответ — почти никогда. На 4 запросах × 2 поисковика × 3 нейросети (120 позиций SEO-топа) мы нашли всего 4 совпадения по URL — 3,3%. Картина бимодальная: 8 из 12 пар «поисковик × нейросеть» дали ноль совпадений, оставшиеся 4 — ровно по одному URL. Все четыре совпадения пришлись на Bing; на стороне Google — ноль. У ChatGPT — ноль совпадений с обоими поисковиками.

Но чтобы корректно считать совпадения, сначала нужно понять, что такое «источник» в каждой системе на уровне сетевого обмена. Иначе сравниваешь сущности, которые могут оказаться несравнимыми. Так маркетинговый вопрос превратился в сессию с инструментами разработчика по трём платформам.

Коротко о методике: 4 англоязычных B2B-запроса про инструменты мониторинга упоминаний в нейросетях, каждый запущен по 10 раз в каждой системе (веб-поиск включён, сессии без входа в аккаунт, все замеры в один день). Стабильность цитирования измеряли показателем APR (Answer Presence Rate) — в скольких прогонах из десяти источник попал в ответ. В таблицы шли источники с APR не ниже 20%. При N=10 доверительный интервал любой точки — порядка ±15–20 процентных пунктов, поэтому опираемся на качественную форму картины, а не на точечные значения.

Важная оговорка: ни одна из трёх систем не публикует внутренние схемы ответов. Всё, что ниже, — наблюдения за публичным сетевым обменом веб-клиентов и структурой JSON. Расшифровки полей со скрытыми именами — это гипотезы, построенные на поведении клиента, а не официальная документация. Имена адресов и заголовков зафиксированы в наших сессиях и могут отличаться между сборками, регионами и аккаунтами.

ChatGPT: цитата привязана к фрагменту текста

Как устроен обмен. Веб-клиент шлёт POST-запросы с JSON на адреса вроде /conversation, а ответ получает потоком через Server-Sent Events. Все запросы идут на chatgpt.com, серверная часть доступна по трём префиксам путей: /backend-api (основной), /backend-alt и /backend-anon. Последний обслуживает работу без входа в аккаунт, но «без входа» не значит «без идентификации»: каждый запрос всё равно сопровождается идентификатором устройства и токенами Cloudflare/Sentinel, по которым сервер привязывает обмен к конкретному устройству и сессии. Режим скрывает, кто вы как пользователь, — но не делает ваш клиент неотличимым для платформы.

Ход запроса. Перед основным обменом клиент делает подготовительный запрос и получает токен (мы зовём его рабочим именем conduit_token). Затем сообщение уходит на /conversation с двумя нестандартными заголовками — по поведению это похоже на семейство механизмов Sentinel, которые ранее описывали другие исследователи: подготовительный запрос выдаёт привязанное к сессии доказательство работы клиента, без которого основной вызов не пройдёт.

В части сессий тот же подготовительный запрос дополнительно требовал токен Cloudflare Turnstile — то есть проверка антибота приходила не отдельной страницей-загадкой, как обычно, а условием того же подготовительного запроса, который выдаёт conduit_token. Иначе говоря, две защиты совмещены в одном шаге, а не разнесены по разным.

Ответ приходит потоком Server-Sent Events: служебные сообщения, фрагменты текста, закрывающее сообщение.

Цитаты. Источники живут в массиве annotations[], внутри объектов url_citation с полями url, title, start_ix, end_ix. Последние два — это смещения в сгенерированном тексте, границы фрагмента ответа, к которому привязан источник. По аналогии с публичным Responses API, где start_index/end_index задокументированы как кодовые единицы UTF-16, и поскольку строки в JavaScript тоже индексируются в UTF-16, эти смещения почти наверняка тоже UTF-16: вызов text.slice(start_ix, end_ix) в браузере возвращает именно процитированный фрагмент. Практическое следствие для тех, кто будет это разбирать: эмодзи и часть китайских/японских/корейских символов занимают две единицы (суррогатная пара), и если считать смещения байтами или кодовыми точками, цитаты «съедут».

Главный вывод по ChatGPT: источник привязан к конкретному фрагменту ответа, а не ко всему ответу целиком. Чтобы бренд попал в url_citation, модель должна использовать связанный с ним контент при генерации именно этого фрагмента.

Что цитирует. На концептуальном запросе «What is GEO?» ChatGPT во всех 10 прогонах цитировал научную статью arXiv 2311.09735 (Принстон / Колумбия — та самая, где введён термин GEO). APR 100%, стабильнее любого маркетингового блога в нашей выборке. Плюс Wikipedia и узкоспециализированные блоги. С SEO-топом — ноль пересечений по URL.

Gemini: каталог источников в массиве со скрытыми именами полей

Как устроен обмен. Потоковый ответ внутри Wiz — внутреннего JavaScript-каркаса Google, на котором собраны Docs, Maps, Photos. Адрес batchexecute — это стандартный для Wiz-фронтендов механизм пакетной отправки удалённых вызовов. База: https://gemini.google.com/_/BardChatUi/data/. На вызов отправки сообщения мы наблюдали rpcid hNvQHb (значения rpcid между сборками меняются), на серверной стороне — обработчики семейства BardFrontendService.

Формат тела. Снаружи — application/x-www-form-urlencoded с двумя значимыми полями: f.req (полезная нагрузка) и at=<SNlM0e> (токен защиты от CSRF). Кстати, в имени токена третий символ — строчная латинская L, пятый — ноль; в одноширинных шрифтах это ловушка. Поле f.req — JSON-конверт вида [null,"<строка-конверт>"], где внутри — нагрузка в формате JSPB / PBLite: сообщение Protobuf, записанное как массив JSON, в котором поле определяется не именем, а позицией. Имён полей в сетевом обмене нет вообще — маскировка именно в раскладке по индексам. Открытых .proto-описаний для этого адреса не существует, поэтому соответствия полей мы вывели только эмпирически.

Цитаты. Источники описываются набором полей с короткими маскированными именами. Здесь важно разделить два слоя: присутствие полей в потоке — наблюдаемый факт (имена реально встречаются в обмене), а смысл каждого имени — гипотеза. Наши рабочие догадки:

  • sourceUrl — URL источника (саму строку URL видно напрямую, имя поля — наша рабочая метка: в сетевом обмене оно приходит позицией в массиве);

  • Mf — предположительно заголовок источника;

  • SR — предположительно краткое содержание;

  • rs — предположительно reliability_score, внутренняя оценка доверия к домену;

  • ls — предположительно last_seen_date, дата последнего обращения;

  • y6 — предположительно сам процитированный фрагмент;

  • K1b — предположительно флаг валидности URL;

  • GK — диапазон символов в ответе (функциональный аналог start_ix / end_ix из ChatGPT);

  • tM — тип слияния (в обмене встречаются значения вроде MERGED).

У двухбуквенных имён есть и другие правдоподобные расшифровки (rsranking_signal? retrieval_score?), и без внутренней документации Google однозначно выбрать нельзя. Но качественный вывод от точности расшифровок не зависит: рядом с каждым источником у Gemini едет семейство внутренних сигналов, коррелирующих с авторитетностью — сам факт существования этих полей важнее точного значения каждой аббревиатуры.

Что цитирует. Gemini систематически поднимает крупные маркетинговые и SaaS-домены (Semrush, HubSpot, Zapier) и продукты своей же категории — на одном из запросов в топ попали четыре разных URL одного домена-конкурента. Любопытная деталь: в топ источников Gemini за все прогоны не попал ни один ресурс самого Google. И именно на паре Bing × Gemini пришлась заметная часть всех совпадений с SEO-топом.

DeepSeek: источники как приложение к под-запросам

DeepSeek из трёх систем устроен прозрачнее всего: веб-клиент возвращает массив search_results[], привязанный к под-запросам, на которые система разбивает исходный вопрос. Никакой арифметики смещений с суррогатными парами, никаких маскированных аббревиатур — но свой характер выбора источников выражен ярче всех.

Что цитирует. DeepSeek живёт на новостных ресурсах и пресс-релизах: TMCnet, MarketScreener, GlobeNewswire, отраслевые B2B-новостники — то есть на слое, который формируется сервисами дистрибуции пресс-релизов. Из трёх систем он единственный стабильно цитировал китайские источники (BusinessNext, Alibaba Cloud). И именно у него — три точки максимальной стабильности из всей выборки: один поддомен документации (10/10) и два инструментальных сайта (по 10/10), которых нет ни в SEO-топах, ни у других систем.

Три системы — три разные модели «источника»

Сведём:

ChatGPT

Gemini

DeepSeek

Способ обмена

JSON + Server-Sent Events

Wiz / batchexecute, JSPB

JSON, search_results[]

Привязка цитаты

к фрагменту текста (start_ix / end_ix)

к диапазону (GK) + каталог полей

к под-запросу

Внутренние сигналы

не видны

семейство полей (rs, ls, K1b…)

не видны

Любимый тип источников

наука, Wikipedia, нишевые блоги

крупные SaaS- и маркетинг-домены

пресс-релизы, новостные сетки, документация

Пересечение URL с SEO-топом

0

точечное (только Bing)

точечное (только Bing)

Практические следствия:

«Оптимизируй под Google — и нейросеть подтянется» в изученной категории не работает. 3,3% пересечения, ноль на стороне Google. Каждая система отбирает источники по своим правилам, не совпадающим ни с SEO-ранжированием, ни друг с другом.

Для ChatGPT работает контент, который модель захочет использовать в конкретном фрагменте ответа — привязка цитаты к фрагменту делает «общую известность бренда» бесполезной.

Для Gemini, судя по полям, существует внутренняя оценка доменов. Если гипотеза reliability_score верна, домен с историей доверия важнее отдельной удачной статьи.

Для DeepSeek канал распространения — пресс-релизы и новостные сетки, которые SEO-специалисты привыкли считать мусорным каналом.

Ограничения

Честно и списком: все 4 запроса — из одной продуктовой категории (нашей же — смещение выборки задекларировано); формулировки запросов составляли мы сами, а не брали из внешнего реестра; N=10 прогонов даёт ±15–20 п.п. на точку; замер сделан в один день, а веб-клиенты всех трёх систем обновляются постоянно, так что конкретные имена полей и адресов — снимок, а не канон. Выводы не стоит автоматически переносить на другие категории.

Полное исследование — все таблицы по 4 запросам, методика, типология источников — Source Overlap Between Search Engines and AI Recommendations.

Если вы видите в своих сессиях с инструментами разработчика другие имена полей или у вас есть данные по другим категориям запросов — расскажите в комментариях, нам интересно сравнить.

Автор: Emelian1917

Источник