В каких случаях HTTP REFERER будет пустым

Я знаю, что можно получить пустой HTTP_REFERER. При каких обстоятельствах это происходит? Если я получаю пустой, всегда ли это означает, что пользователь изменил его? Является ли получение пустого так же, как получение нулевого? и при каких обстоятельствах я тоже это получаю?

4 ответов


Он будет/может быть пустым, когда пользователь

  • введите URL-адрес сайта в самой адресной строке браузера.
  • посетил сайт с помощью закладки, поддерживаемой браузером.
  • посетил сайт в качестве первой страницы в окне / вкладке.
  • щелкните ссылку во внешнем приложении.
  • переключено с URL https на URL http.
  • переключено с URL https на другой URL https.
  • установлено программное обеспечение безопасности (antivirus / firewall / etc), который удаляет реферера из всех запросов.
  • находится за прокси, который удаляет реферера из всех запросов.
  • посетил сайт программно (например, curl) без установки заголовка реферера (searchbots!).

HTTP_REFERER-отправлено браузером, с указанием последней страницы, которую браузер просматривал!

Если Вы доверяете [HTTP_REFERER] по какой-либо важной причине, вы не должны, так как его можно легко подделать:

  1. некоторые браузеры ограничивают доступ, чтобы не позволить HTTP_REFERER быть переданным
  2. введите адрес в адресной строке не будет передавать HTTP_REFERER
  3. открыть новое окно браузера не будет передавать HTTP_REFERER, потому что HTTP_REFERER = Значение null
  4. имеет некоторый браузер аддон, который блокирует его по соображениям конфиденциальности. Некоторые брандмауэры и AVs делают это.

попробуйте это расширение Firefox, вы сможете установить любые заголовки, которые вы хотите:

@Master of Celebration:

Firefox:

расширения: refspoof, refontrol, изменить заголовки, нет реферера

полностью отключить: опция доступна в about:config в сети".http.sendRefererHeader", и вы хотите установить это в 0, чтобы отключить передачу реферера.

Google chrome / Chromium:

расширения: noref, spoofy, внешний noreferrer

полностью отключить: Chnage ~/.config / google-chrome / по умолчанию / настройки или ~/.config / chromium / Default / настройки и установить это:

{
   ...
   "enable_referrers": false,
   ...
}

или просто добавьте -- no-referrers в ярлык или в cli:

google-chrome --no-referrers

Опера:

полностью отключить: Настройки > Настройки > Дополнительно > сеть и снимите флажок "отправить информацию реферера"

веб-сервис подмены:

http://referer.us/

автономный фильтрация прокси (подделка любого заголовка):

с Privoxy

спуфинг http_referer при использовании wget

'--referer=url'

подмена http_referer при использовании curl

- e, --referer

спуфинг http_referer с telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)

список BalusC является твердым. Еще один способ это поле часто кажется пустым, когда пользователь находится за прокси-сервером. Это похоже на то, чтобы быть за брандмауэром, но немного отличается, поэтому я хотел упомянуть об этом для полноты.


Он также будет пуст, если новый стандартный проект политики реферера используется для предотвращения отправки заголовка referer в источник запроса. Пример:

<meta name="referrer" content="none">

хотя Chrome и Firefox уже реализовали черновую версию политики реферера, вы должны быть осторожны с ней, потому что, например, Chrome ожидает no-referrer вместо none (и я видел также never где-то).