Что такое HTTP заголовки
HTTP протокол используется при открытии сайтов и скачивании файлов из Интернета. HTTP протокол работает по принципу запрос-ответ — от клиента приходит запрос и сервер отправляет ответ. Каждый запрос и каждый ответ состоит из элементов:
- Стартовая строка
- Заголовки
- Тело сообщения
Тело сообщения — это то, ради чего делается запрос — страница сайта или файл.
Заголовки — это метаинформация, которую мы обычно не видим.
В заголовках запроса могут быть такие данные как:
- предпочитаемые языки
- характеристика программы, которая делает запрос
- содержимое кукиз
- информация для сервера — для какого хоста предназначен запрос и прочее
В заголовках ответа могут быть такие данные как:
- кодировка присланного текста
- тип присланного контента (изображение, текст, архив и пр.)
- данные о ПО веб-сервера
- данные о кэшировании: ПО, используемое для кэширования, возраст присланных данных и прочее
Эта статья расскажет, как посмотреть HTTP заголовки.
Как в веб-браузере увидеть HTTP заголовки
Это самый простой способ, доступный в любой операционной системе.
Нажмите в веб-браузере F12 и откройте интересующую вас страницу. Перейдите на вкладку Network (сеть) и выберите интересующее вас подключение.
Google Chrome/Chromium:
Firefox:
Вначале идут Заголовки ответа (Response Headers), а затем Заголовки запроса (Request Headers), хотя, конечно же, вначале отправляется запрос и его заголовки, а затем приходит ответ.
Это удобный метод, причём вам не нужно беспокоиться о HTTPS протоколе — поскольку веб-браузер является конечным адресатом, то он может показывать уже расшифрованные данные.
Как в cURL посмотреть HTTP заголовки
Для cURL есть опции -I, -v и -i, которые делают так, что эта утилита показывает HTTP заголовки.
Разница в том, что опция -I означает использовать метод HEAD, то есть в реальности кроме HTTP заголовков ничего не будет прислано. А опция -v делает вывод более вербальным, в результате в него включаются и заголовки. Но если вы отправляете запрос по HTTPS протоколу, то с опцией -v также будут показаны данные, относящиеся к TLS рукопожатию — они не имеют отношения к HTTP заголовкам. Ещё нужно знать, что опция -I показывает только заголовки ответа, а опция -v показывает и Заголовки запроса и Заголовки ответа.
Опция -i также показывает только заголовки ответа, не показывает TLS рукопожатие, но зато показывает всё тело ответа.
Пример использования метода HEAD:
curl -I https://suip.biz/ru/ -A 'Chrome'
Здесь «HTTP/1.1 200 OK» это строка статуса, а всё остальное — поля HTTP заголовка.
Пример вербального вывода:
curl -v https://suip.biz/ru/ -A 'Chrome' > /dev/null
Отправленные на веб сервер заголовки имеют в начале символ >, а полученные с веб-сервера строки начинаются на <.
Синей рамкой выделены стартовые строки (строка запроса и строка статуса), а красным HTTP заголовки.
Пример вывода заголовков вместе с телом сообщения:
curl -i https://suip.biz/ru/ -A 'Chrome'
С опцией -i HTTP заголовки выводятся в стандартный вывод, а с опцией -v заголовки выводятся в вывод ошибок.
HTTP заголовки в Wireshark (только для протокола HTTP, без HTTPS)
До сих пор мы программа, которая показывает HTTP заголовки и которая отправляет запросы и принимает ответы совпадали, поэтому даже при использовании протокола HTTPS мы видели расшифрованные данные. Но программа Wireshark не может расшифровывать протокол HTTPS, поэтому в ней можно просмотреть только заголовки для незашифрованного трафика.
Для поиска HTTP сообщений используйте фильтр
http
Заголовки запросов и ответов смотрите в «Hypertext Transfer Protocol»:
Преимущества Wireshark в том, что кроме просмотра HTTP заголовков, вы можете использовать гибкую и мощную систему фильтров для поиска по полям заголовка. Подробности смотрите в справочной статье «Фильтры Wireshark».
HTTP заголовки в Burp Suite
Программа Burp Suite содержит прокси специально для просмотра заголовков. Более того, в программе имеются функции по модификации заголовков и другого содержимого на лету. Но Burp Suite это профессиональная программа, требующая изучения.
Burp Suite умеет работать с запросами по HTTPS, но для этого требуется настройка SSL сертификатов в веб-браузере.
Смотрите также большую статью «HTTP протокол», которая содержит подробное, но написанное простым языком описание протокола.
И ещё смотрите близкую по теме статью: Как отобразить данные POST с cURL.
Связанные статьи:
- Ошибка «curl: (1) Received HTTP/0.9 when not allowed» (РЕШЕНО) (80.2%)
- Как отправить HTTP запрос OPTIONS из командной строки (РЕШЕНО) (74.5%)
- Как выгрузить файлы методом POST с помощью cURL. Как отправить форму в cURL (63%)
- При использовании s_client всегда возникает ошибка «HTTP/1.1 400 Bad Request» (РЕШЕНО) (55.8%)
- PHP cURL как установить значение User Agent ИЛИ как сделать так, чтобы сервера не блокировали запросы cURL? (54.3%)
- Управление соединениями VPN в GNOME 3 (RANDOM - 50%)