张戈博客:百度如何取消referer关键词

自媒体 投稿&转载 1861浏览

还是在今年6月底,百度就放出全面取消referer关键词显示的通知,听说目的是为了保护用户隐私和站点流量关键词数据。(详情可查看站长之家前文百度站长平台:将逐步取消referer关键词显示)

然而并没有什么L用,本来就不知道谁在百度搜索了什么见不得人的事情,隐藏关键词那不是脱了裤子放屁么?

另外,保护站点流量关键词数据,这一点我倒是觉得很有用,省的某些人总是去瞄瞄谁谁谁的站点的哪篇文章有个很牛逼的关键词,然后吧唧就复制粘贴了。不过,这个做法还是无法完全杜绝,为啥?因为你百度还有一个百度指数的功能!别人拿到高指数的词一搜就知道那个谁谁谁的文章排第一了?不过只是增加了麻烦的程度而已!

说个不好意思的事情,这公告刚出来的时候,我其实是没看懂是什么意思的。。。去认为从一个页面的链接点击后跳到另一个页面难道不会产生referer?这不科学啊!然后我就没在意了。。。

直到前不久,偶然发现张戈博客原创作品【搜索来路欢迎框】不提示关键词了:

不显示关键词

本以为是我代码BUG了,于是亲自输出了一下referer看了下,发现我写的代码还是可以拿到referer,可惜referer里面的关键词wd的值是空的,比如:

https://www.baidu.com/link?url=dEvj7DE-rHNYgoNrzCSrgBLAVrWns06Ub1h8DjGa5mv-gSonnZp9VCYaDBKRmvDV&wd=&eqid=c1a3fa880009ab000000000555fce97f

这时候又勾起了我的兴趣,了解 referer 的朋友都知道,当我们点击A页面中的链接跳转到B页面时,B页面里面 referer 值就是A页面地址。

也就是说,我在百度搜索张戈博客,那么页面地址应该是:

https://www.baidu.com/s?wd=张戈博客

即A页面地址,如果我们从这个搜索结果中点开第一个链接来到张戈博客,那么产生的 referer 应该就是上面这个搜索地址才对!百度是如何做到隐藏这个关键词的呢??

前几天,在写一个爬虫脚本的时候,破天荒的试了下百度搜索结果中的链接,终于搞懂了这其中的奥妙之处,感觉挺有意思,所以就把其他原创干货继续压在草稿箱等发霉,先把这个发现分享下。

就以张戈博客这个关键词搜索出来的地址为例吧!百度搜索张戈博客后的结果如下图所示:

百度搜索

接着,我试着在 Linux 下使用 curl 请求,发现如下图所示:

curl请求

把结果格式化了下:

  1. <meta content="always" name="referrer">
  2. <script>try {
  3.     if (window.opener && window.opener.bds && window.opener.bds.pdc && window.opener.bds.pdc.sendLinkLog) {
  4.         window.opener.bds.pdc.sendLinkLog();
  5.     }
  6. } catch(e) {};
  7. var timeout = 0;
  8. if (/bdlksmp/.test(window.location.href)) {
  9.     var reg = /bdlksmp=([^=&]+)/,
  10.     matches = window.location.href.match(reg);
  11.     timeout = matches[1] ? matches[1] : 0
  12. };
  13. setTimeout(function() {
  14.     window.location.replace("http://zhangge.net/")
  15. },
  16. timeout);</script>
  17. <noscript><META http-equiv="refresh" content="0;URL='//zhangge.net/'"></noscript>

然后我就明白了百度是如何做到隐藏关键词的了。

比较简单,但很巧妙的做法:百度现在的搜索结果链接不再直接跳转到目标页面,而是通过了一个隐藏的中转页面。以上代码的大概功能就是,如果浏览器支持Javascript,那么将通过其中的js函数跳转到目标页面,如果浏览器不支持Javascript,那么也能通过最后的META标签让浏览器实现跳转。

由于有了这个中间页面,那么关键词也就断章了,因为真正有关键词的 referer 只能在中间页面这取得,目标页面取得的 referer 则是中间页面的地址,是没有关键词的!

百度还真是用心良苦啊!...

还好我写的【搜索来路欢迎框】是兼容空关键词的,否则显示的就是 null 了。

既然知道有这么个巧妙的做法,那我们在某些场景是否可以借鉴一下呢?我想肯定是用得到的,只是你没遇到而已。。。比如,你的某页面偷偷链接了某站的地址,又不想让站长知道?不过这也是够无聊的了,哈哈哈!

原文:《闲来无事,分析下百度是如何实现取消referer关键词显示的

推荐阅读

怎么把一个文件夹下的多个TXT合并成一个

在我们处理文本的时候,有时候需要将多个TXT文本合并成一个,如果是10个文件我们可以手动解决,如果是成本上千个呢,例如处理小说。 方法 合并前,是单个章节的文档 在该目录下新建文本文档,文档中 输入以下内容: copy *.txt 合并文件.txt ......

怎么禁止搜索引擎保存我的网页快照

很多站点出于隐私的考虑不希望百度保留快照,网上也在讨论如何禁止百度保留快照的方法。其实百度早已对此有过说明,但藏在一篇不起眼的文章中不引人注目,导致依然非常多的人不清楚该如何操作。上周恰好又有人问到这个问题,特意进行说明。 要防止所有搜索引擎显示您网......

百度快速排名、刷百度下拉、指数找谁接单比较好

经常看我博客的应该知道,我的博客主要是以学习内容为主。偶尔也会有老板来询问优化报价。为了让大家更好的了解本站承接的业务,给大家介绍一下,如果有老板需要,欢迎砸单 几年前发布的内容,已失效不再接单 快速排名 快速排名即向搜索引擎反馈优质的用户体验数据,......