Инспектор HTTP-заголовков
Эта страница показывает точные HTTP-заголовки запроса, которые ваш браузер отправил прямо сейчас, чтобы загрузить её — с разбором и объяснением; заголовки с учётными данными (Cookie, Authorization и подобные) всегда исключены из ответа, регистрация или API-ключ не требуются.
Заголовки вашего запроса
Читаем заголовки вашего запроса…
Обнаружено заголовков:
| Заголовок | Значение |
|---|---|
User-Agent
Исходное значение:
Do Not Track (DNT)
Ваш браузер отправил сигнал Do Not Track.
Ваш браузер не отправил сигнал Do Not Track.
Accept-Language
| Языковой тег | Вес (q) |
|---|---|
Заголовок Accept-Language не был отправлен.
Client hints (Sec-CH-UA)
Sec-CH-UA:
Платформа:
Ваш браузер определяет это устройство как мобильное.
Ваш браузер определяет это устройство как немобильное.
Ваш браузер не отправил ни одного client hint Sec-CH-UA.
Accept-Encoding
Заголовок Accept-Encoding не был отправлен.
Заголовки, связанные с прокси
Эти заголовки, если присутствуют, часто добавляются инфраструктурой между вами и сервером (например, нашим nginx-фронтом) — не обязательно самим браузером. Их наличие само по себе не доказывает утечку данных с вашего устройства.
- X-Forwarded-For:
- Via:
- X-Real-IP:
Ни X-Forwarded-For, ни Via, ни X-Real-IP не были отправлены с этим запросом.
Инспектор HTTP-заголовков
Каждый HTTP-запрос вашего браузера несёт набор заголовков — небольших полей «ключ/значение», которые клиент отправляет вместе с URL, описывая себя и то, что он способен принять. Часть заголовков браузер выставляет автоматически (User-Agent, Accept, Accept-Encoding), часть отражает ваш явный выбор приватности (Do Not Track), а часть добавляется или переписывается тем, что находится между вами и целевым сервером — корпоративным прокси, VPN-клиентом, CDN или (в нашем случае) nginx-фронтом перед этим самым API. Прочитать именно то, что пришло, без фильтрации — единственный способ точно узнать, что видит сервер: инструменты разработчика в браузере показывают то, что браузер ОТПРАВИЛ, но не обязательно то, что уцелело на каждом промежуточном узле.
Этот инструмент читает заголовки входящего запроса именно для ЭТОГО запроса — ничего не запрашивается заранее, не кэшируется и не сохраняется; каждая перезагрузка страницы даёт свежий, живой ответ, который может отличаться от предыдущего, если вы измените настройку браузера, смените сеть или прокси на пути перепишет что-то. Поверх сырого списка несколько самых информативных заголовков разбираются в более удобный вид: Accept-Language разбивается на отдельные языковые теги с весами, отсортированные по предпочтению; семейство client hints Sec-CH-UA (более новая и приватная замена разбору строки User-Agent) раскладывается на бренд/версию браузера, платформу и признак мобильного устройства; Accept-Encoding разбивается на список схем сжатия, которые готов принять клиент.
Отдельного объяснения заслуживает одна категория: X-Forwarded-For, Via и X-Real-IP. Если они присутствуют, не стоит читать это как «мой браузер раскрывает мой настоящий IP» — это заголовки цепочки прокси, и в продакшене самый первый узел на пути вашего запроса — это наш собственный nginx-фронт перед API-сервером, который добавляет именно такой заголовок как обычную, ожидаемую часть работы обратного прокси. Их наличие говорит о том, что запрос прошёл хотя бы через один промежуточный узел; само по себе оно не говорит, был ли этот узел вашим браузером, вашим провайдером, корпоративной сетью или просто нашей собственной инфраструктурой, ретранслирующей запрос внутри себя.
Ради безопасности фиксированный набор заголовков никогда не появляется в ответе, независимо от того, что пришло в запросе: Cookie, Authorization, Proxy-Authorization, X-Api-Key, а также — как дополнительная страховка — любой заголовок, чьё имя содержит «token», «secret» или «key» без учёта регистра. Они полностью исключаются, а не заменяются плейсхолдером вроде «[скрыто]», потому что даже подтверждение самого ФАКТА наличия заголовка с учётными данными может быть полезной информацией для атакующего; цель — инструмент, скриншот которого безопасно вставить в тикет поддержки не задумываясь. Каждое значение также всегда отображается как инертный текст, а не исполняется как разметка — заголовок с HTML- или скрипт-подобными байтами показывается ровно так, как получен, безопасно, как данные.
Как читать эту страницу
-
Загрузите страницу
Как только страница загружается, она сама вызывает наш эндпоинт /api/v1/tools/headers обычным браузерным запросом — нажимать кнопку или что-то вводить не нужно.
-
Просмотрите сырой список заголовков
Таблица показывает каждый пришедший заголовок ровно в том виде, в котором его получил сервер, за вычетом нескольких заголовков с учётными данными, скрытых намеренно.
-
Проверьте разобранные ключевые поля
Accept-Language, Do Not Track, client hints Sec-CH-UA, Accept-Encoding и любые прокси-заголовки вынесены отдельно и объяснены под сырой таблицей.
-
Перезагрузите, чтобы увидеть изменения
Смените настройку браузера, сеть или VPN и перезагрузите страницу — результат отразит именно новый запрос, ничего не останется закэшированным с прошлого раза.
Глоссарий
- HTTP-заголовок запроса
- Поле «ключ/значение», отправляемое клиентом как часть HTTP-запроса и описывающее сам запрос или отправившего его клиента — в отличие от заголовка ответа, который отправляет сервер.
- User-Agent
- Заголовок, идентифицирующий браузер/клиент запроса, его движок рендеринга и часто ОС — исторически основной способ серверов определять возможности браузера, сейчас всё чаще дополняемый (или заменяемый) client hints.
- Accept-Language
- Заголовок со списком предпочитаемых клиентом языков, каждый опционально с весом качества (q) от 0 до 1 — сервер использует его, чтобы выбрать язык ответа, если он не запрошен явно.
- Client hints (Sec-CH-UA)
- Более новое семейство структурированных заголовков запроса (Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile), раскрывающих конкретные, опциональные факты о браузере/устройстве без разбора свободнотекстовой строки User-Agent — задумано как менее фингерпринтуемая замена этой строке.
- Do Not Track (DNT)
- Заголовок, которым браузер может сигнализировать, что пользователь не хочет отслеживания на сайтах — это просьба, а не механизм принуждения; серверы и третьи стороны технически не обязаны её соблюдать.
- Прокси-заголовок (X-Forwarded-For / Via / X-Real-IP)
- Заголовки, добавляемые промежуточными узлами (обратными прокси, балансировщиками, CDN) для фиксации исходного адреса клиента или цепочки узлов, через которые прошёл запрос — браузер сам их не отправляет.
Аналог в API
Эта страница под капотом вызывает наш собственный публичный tools-эндпоинт — вы можете вызвать тот же эндпоинт напрямую, без аутентификации, с учётом лимита запросов на клиента. Ответ полностью зависит от того, какие заголовки отправляет именно ВАШ клиент, поэтому обычный вызов curl (который отправляет заметно меньше заголовков, чем браузер) будет выглядеть иначе, чем на этой странице:
curl "https://ip.xakki.pro/api/v1/tools/headers"
Пример ответа (для обычного вызова curl):
{
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip",
"User-Agent": "curl/8.5.0"
},
"parsed": {
"userAgent": {"raw": "curl/8.5.0"},
"acceptLanguage": [],
"doNotTrack": false,
"clientHints": {"mobile": false},
"acceptEncoding": ["gzip"],
"proxyHeaders": {"present": false}
}
}
Часто задаваемые вопросы
- Почему я не вижу значение Cookie или Authorization, хотя я авторизован?
- Так и задумано — эти заголовки (Cookie, Authorization, Proxy-Authorization, X-Api-Key, а также любые с «token»/«secret»/«key» в имени) безусловно исключаются ещё до формирования ответа, независимо от того, были ли они реально отправлены. Смысл инструмента именно в том, чтобы его можно было безопасно вставить в скриншот.
- Почему я вижу X-Forwarded-For или Via, хотя сам их не выставлял?
- Почти наверняка это не вы — обычно такие заголовки добавляет сам сетевой путь, а не браузер. В продакшене самый первый узел — наш собственный nginx-фронт, добавляющий именно такой заголовок как стандартное поведение обратного прокси; корпоративная сеть, VPN или CDN на пути могут делать то же самое.
- Перезагрузка страницы всегда покажет одни и те же заголовки?
- В основном да, но не обязательно — инструмент читает живые заголовки ТЕКУЩЕЙ перезагрузки, без кэширования. Изменение настройки браузера, смена сети или изменение прокси-пути между перезагрузками могут изменить то, что придёт, и вы увидите разницу сразу.
- В чём разница между Accept-Language здесь и реальными языковыми настройками моего браузера?
- Здесь показано ровно то значение заголовка, которое отправил ваш браузер — обычно, но не всегда, это прямое отражение списка языковых предпочтений ОС/браузера. Некоторые браузеры и расширения приватности намеренно упрощают или переопределяют его, чтобы снизить уникальность.
- Может ли этот инструмент показать заголовки ОТВЕТА произвольного URL, а не только заголовки моего запроса?
- Нет — этот эндпоинт читает только тот запрос, который на него пришёл, и никогда не запрашивает другой URL от вашего имени. Просмотр заголовков ответа произвольного URL — это другая возможность (исходящий запрос), которую этот бесплатный инструмент намеренно не реализует.
Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →