還是在今年6月底,百度就放出全面取消referer關鍵詞顯示的通知,聽說目的是為了保護用戶隱私和站點流量關鍵詞數據。(詳情可查看站長之家前文百度站長平臺:將逐步取消referer關鍵詞顯示)
然而并沒有什么L用,本來就不知道誰在百度搜索了什么見不得人的事情,隱藏關鍵詞那不是脫了褲子放屁么?
另外,保護站點流量關鍵詞數據,這一點我倒是覺得很有用,省的某些人總是去瞄瞄誰誰誰的站點的哪篇文章有個很牛逼的關鍵詞,然后吧唧就復制粘貼了。不過,這個做法還是無法完全杜絕,為啥?因為你百度還有一個百度指數的功能!別人拿到高指數的詞一搜就知道那個誰誰誰的文章排第一了?不過只是增加了麻煩的程度而已!
說個不好意思的事情,這公告剛出來的時候,我其實是沒看懂是什么意思的。。。去認為從一個頁面的鏈接點擊后跳到另一個頁面難道不會產生referer?這不科學??!然后我就沒在意了。。。
直到前不久,偶然發(fā)現張戈博客原創(chuàng)作品【搜索來路歡迎框】不提示關鍵詞了:
本以為是我代碼BUG了,于是親自輸出了一下referer看了下,發(fā)現我寫的代碼還是可以拿到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 應該就是上面這個搜索地址才對!百度是如何做到隱藏這個關鍵詞的呢??
前幾天,在寫一個爬蟲腳本的時候,破天荒的試了下百度搜索結果中的鏈接,終于搞懂了這其中的奧妙之處,感覺挺有意思,所以就把其他原創(chuàng)干貨繼續(xù)壓在草稿箱等發(fā)霉,先把這個發(fā)現分享下。
就以張戈博客這個關鍵詞搜索出來的地址為例吧!百度搜索張戈博客后的結果如下圖所示:
接著,我試著在Linux下使用curl請求,發(fā)現如下圖所示:
把結果格式化了下:
然后我就明白了百度是如何做到隱藏關鍵詞的了。
比較簡單,但很巧妙的做法:百度現在的搜索結果鏈接不再直接跳轉到目標頁面,而是通過了一個隱藏的中轉頁面。以上代碼的大概功能就是,如果瀏覽器支持Javascript,那么將通過其中的js函數跳轉到目標頁面,如果瀏覽器不支持Javascript,那么也能通過最后的META標簽讓瀏覽器實現跳轉。
由于有了這個中間頁面,那么關鍵詞也就斷章了,因為真正有關鍵詞的referer 只能在中間頁面這取得,目標頁面取得的referer 則是中間頁面的地址,是沒有關鍵詞的!
百度還真是用心良苦??!...
還好我寫的【搜索來路歡迎框】是兼容空關鍵詞的,否則顯示的就是 null 了。
既然知道有這么個巧妙的做法,那我們在某些場景是否可以借鑒一下呢?我想肯定是用得到的,只是你沒遇到而已。。。比如,你的某頁面偷偷鏈接了某站的地址,又不想讓站長知道?不過這也是夠無聊的了,哈哈哈!