在什么情况下HTTP_REFERER是空的
我知道有可能得到一个空的HTTP_REFERER。 在什么情况下会发生? 如果我得到一个空的,这是否意味着用户改变了? 得到一个空的一样得到一个空的一个? 在什么情况下我也能得到
当最终用户时,它将会是空的
- 在浏览器地址栏中输入网站网址。
- 通过浏览器维护的书签访问该网站。
- 访问该网站作为窗口/选项卡中的第一页。
- 从https URL切换到http URL。
- 从一个https URL切换到另一个https URL。
- 安装了安全软件(防病毒/防火墙/等),从所有请求中剥离引用者。
- 在代理从所有请求中剥离引用者。
- 以编程方式访问网站(如卷曲 ),而不设置引用标头(searchbots!)。
HTTP_REFERER – 由浏览器发送,说明浏览器查看的最后一页。
如果您信任[HTTP_REFERER]是因为任何重要的原因,您不应该,因为它可以很容易地伪造:
- 一些浏览器限制访问不允许传递HTTP_REFERER
- 在地址栏中输入地址将不会通过HTTP_REFERER
- 打开一个新的浏览器窗口将不会传递HTTP_REFERER,因为HTTP_REFERER = NULL
- 有一些浏览器插件,出于隐私的原因阻止它。 一些防火墙和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服务:
独立过滤代理(欺骗任何标题):
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
见过)。