来源:python中国网 时间:2020-05-20

  Referer是http协议中header头的一部分,不明白的话可以查看http协议讲解,referer主要方面在统计工具中查看搜索关键词,当然referer是可以被伪造的。也就是说统计工具的数据也是可以刷出来的。

  各位亲爱的网站管理员:

  百度已实现全站https化,在BAT中率先完成全站加密,以推动网络环境安全。为了进一步保护用户隐私,防止第三方窃听和篡改,百度已于6月25日正式取消referer中关于关键词的显示,更好的保护站点流量关键词数据信息,令站点数据更加私密化。站长需要获得网站流量关键词时,仍然可以使用百度站长平台提供的流量与关键词工具或者百度统计相关功能进行查询。(时间:2015年6月28日 作者:百度站长平台)

  百度取消referer中的关键词显示是如何实现的呢?通过fiddler抓包可以看出来。

  如下:在百度中搜索一个关键词,然后在搜索结果页点击进入对应网站,这个过程通过fiddler抓包可以看到百度是增加了一个中间页,从搜索结果页的链接点击会先进入这个中间页,这个中间页上的js代码被浏览器执行后再打开目标网页,这样目标网页的referer实际上是中间页的url,而中间页的url并没有包含关键词。



  js代码是通过window.location.replace函数来实现打开网页的,同时做了兼容处理,如果浏览器不支持js则通过meta标签的refresh属性来实现。

<meta content="always" name="referrer">
<script>
try {
    if (window.opener && window.opener.bds && window.opener.bds.pdc && window.opener.bds.pdc.sendLinkLog) {
        window.opener.bds.pdc.sendLinkLog();
    }
} catch(e) {};
var timeout = 0;
if (/bdlksmp/.test(window.location.href)) {
    var reg = /bdlksmp=([^=&]+)/,
    matches = window.location.href.match(reg);
    timeout = matches[1] ? matches[1] : 0
};
setTimeout(function() {
    window.location.replace("https://nj.5i5j.com/rent/xiaguan/")
},
timeout);
window.opener = null; 
</script>

<noscript><META http-equiv="refresh" content="0;URL='https://nj.5i5j.com/rent/xiaguan/'"></noscript>

每篇文章旨在解决一个问题,有帮助,赏瓶水。