HTTP. Какую информацию браузер передает в HTTP заголовках
Что такое HTTP заголовки ?
HTTP — это HyperText Transfer Protocol (протокол передачи гипертекста), который используется для коммуникации с сайтом. Все, что вы сейчас видите в окне браузера, получено с помощью этого протокола.
Когда вы открываете сайт, браузер обменивается с ним данными в HTTP заголовках (HTTP Headers) и отправляет различную информацию о себе.
Запрос браузера может выглядеть так:
В чем опасность HTTP заголовков?
-
Становится доступна информация о вашем браузере, системе и IP.
-
При использовании прозрачных прокси настоящий IP может передаваться в специальных заголовках, тем самым раскрывая вас.
-
Через Referer становится доступен адрес источника, с которого вы перешли на сайт или сделали запрос.
-
На основе этих данных сайты могут составить уникальный цифровой отпечаток (fingerprint), с помощью которого вас можно идентифицировать даже после смены IP.
Что такое User Agent?
User Agent - это часть HTTP заголовков, которая содержит информацию о браузере и операционной системе.
Методы сохранения анонимности:
-
User Agent можно изменить в настройках некоторых браузеров или с помощью специальных плагинов (например, RMOSChange для Firefox / Internet Explorer, User-Agent Switcher для Chrome, User Agent Changer для Opera).
-
Для маскировки Referer можно использовать такие плагины, как Referer Control (для Chrome).
-
Существуют утилиты и плагины для прямого редактирования HTTP-запросов. (например, Modify Headers для Google Chrome)
Как вручную изменить User Agent в Firefox:
-
Введите в адресной строке: about:config и нажмите “I’ll be careful, i promise!”.
-
Найдите в появившемся окне, используя поиск: useragent
-
Убедитесь, что параметра general.useragent.override не существует.
-
Кликните правой кнопкой на пустом месте и выберите “New” —> “String”.
-
Введите в окне: general.useragent.override и нажмите “Ок”.
-
Введите новый User Agent (например, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A ) и нажмите “Ок”.
Список примерных конфигураций user agent’ов вы можете найти в Интернете (например, здесь, здесь или здесь).
Вы можете проверить на нашем сайте HTTP-заголовки, которые отправляет ваш браузер:
-
QUERY_STRING — параметры, переданные скрипту, если строка запроса представляет собой адрес.
-
REQUEST_METHOD — метод запроса, который применялся для вызова скрипта GET или POST.
-
REQUEST_URI — содержит имя и параметры скрипта, начиная от корневой директории виртуального хоста, если строка запроса представляет собой адрес.
-
SERVER_PROTOCOL — имя и версия информационного протокола, через который была запрошена страница, к примеру 'HTTP/1.1'.
-
REMOTE_ADDR — IP-адрес удаленного клиента, с которого был сделан запрос.
-
REMOTE_PORT — порт клиента, через который было установлено соединение с сервером.
-
HTTP_ACCEPT — предпочтения клиента относительно типа запрашиваемого документа.
-
HTTP_ACCEPT_LANGUAGE — предпочтения клиента относительно языка запрашиваемой страницы.
-
HTTP_USER_AGENT — информация о версии и типе операционной системы и браузера посетителя.
-
HTTP_ACCEPT_ENCODING — список кодировок сжатия, которые поддерживает браузер.
-
HTTP_HOST — имя сервера (в большинстве случаев совпадает с доменным именем сайта, расположенного на сервере).
-
HTTP_CONNECTION — тип соединения браузера с сервером. Значение keep-alive означает, что браузер поддерживает постоянное соединение и в течение одного сеанса может делать несколько запросов.
-
HTTP_COOKIE — данные о cookies сессии, сохраненные в браузере.
-
HTTP_UPGRADE_INSECURE_REQUESTS — передает значение “1” для автоматического перехода небезопасных (например, HTTP: ) запросов на безопасную альтернативу (например, HTTPS: ), прежде чем браузер загрузит их.
-
HTTP_CACHE_CONTROL — max-age определяет “срок годности” файла (в секундах), по истечении которого файл необходимо загружать заново.
-
HTTP_REFERER — адрес источника, с которого посетитель сделал запрос или зашел на сайт.
-
HTTP_DNT — значение статуса “Do Not Track”, если “1” — включен.
Ваш настоящий IP может передаваться в следующих HTTP-заголовках:
-
HTTP_VIA
-
HTTP_X_FORWARDED_FOR
-
HTTP_PROXY_CONNECTION
-
X_FORWARDED_FOR
-
FORWARDED_FOR
-
FORWARDED
-
HTTP_FORWARDED_FOR_IP
-
HTTP_FORWARDED_FOR
-
FORWARDED_FOR_IP
-
HTTP_X_FORWARDED
-
HTTP_FORWARDED
-
HTTP_CLIENT_IP, VIA, X_FORWARDED
-
CLIENT_IP