在什么情况下HTTP_REFERER是空的

我知道有可能得到一个空的HTTP_REFERER。 在什么情况下会发生? 如果我得到一个空的,这是否意味着用户改变了? 得到一个空的一样得到一个空的一个? 在什么情况下我也能得到

当最终用户时,它将会是空的

  • 在浏览器地址栏中输入网站网址。
  • 通过浏览器维护的书签访问该网站。
  • 访问该网站作为窗口/选项卡中的第一页。
  • 从https URL切换到http URL。
  • 从一个https URL切换到另一个https URL。
  • 安装了安全软件(防病毒/防火墙/等),从所有请求中剥离引用者。
  • 在代理从所有请求中剥离引用者。
  • 以编程方式访问网站(如卷曲 ),而不设置引用标头(searchbots!)。

HTTP_REFERER – 由浏览器发送,说明浏览器查看的最后一页。

如果您信任[HTTP_REFERER]是因为任何重要的原因,您不应该,因为它可以很容易地伪造:

  1. 一些浏览器限制访问不允许传递HTTP_REFERER
  2. 在地址栏中输入地址将不会通过HTTP_REFERER
  3. 打开一个新的浏览器窗口将不会传递HTTP_REFERER,因为HTTP_REFERER = NULL
  4. 有一些浏览器插件,出于隐私的原因阻止它。 一些防火墙和AV做到了。

试试这个Firefox扩展,你可以设置任何标题你想要的:

@庆祝大师:

火狐:

扩展名: refspoof , refontrol , 修改标题 , no-referer

完全禁用:该选项在“network.http.sendRefererHeader”下的about:config中可用,并且您希望将其设置为0以禁用引用者传递。

Google chrome / Chromium:

扩展名: noref , spoofy , 外部noreferrer

完全禁用: Chnage〜/ .config / google-chrome / Default / Preferences或〜/ .config / chromium / Default / Preferences并设置:

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

或者简单地将–no-referrers添加到快捷方式或cli中:

 google-chrome --no-referrers 

歌剧:

完全禁用:设置>首选项>高级>网络,并取消选中“发送引用者信息”

欺骗Web服务:

http://referer.us/

独立过滤代理(欺骗任何标题):

Privoxy的

在使用wget时欺骗http_referer

'–referer = URL'

使用curl时欺骗http_referer

-e,–referer

用telnet欺骗http_referer

 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的名单是坚实的。 这个字段常常显示为空的另一种方式是用户在代理服务器后面。 这与防火墙相似,但略有不同,所以为了完整起见,我想提一提。

如果使用新的引用策略标准草案来防止引用头被发送到请求源,它也将是空的。 例:

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

虽然Chrome和Firefox已经实施了Referrer Policy的草稿版本,但您应该小心,因为例如,Chrome预计no-referrer none (而且我也never见过)。