從2015年百度站長的一則公告回頭看百度的騷操作


背景

         百度曾公告於2015年6月25日正式取消Referer中關於關鍵詞的顯示。

1.什么是Referer?有什么作用?

          Referer請求頭包含瀏覽器進入到當前頁時前一頁的地址(如果存在),用於在當前請求中體現前一頁的信息。Referer標頭允許服務器識別人們訪問它們的位置,並可以使用該數據進行分析,記錄或優化緩存。

  • Referer請求頭由瀏覽器自動添加
  • Referer無形中提供了很多功能: 防盜鏈、站點優化;同時也衍生了一些安全和隱私性問題

https://developer.mozilla.org/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns

 

2.為什么要取消Referer中關鍵詞的顯示?

          根據Referer的作用,按照常規做法,在我們從百度關鍵詞搜索結果頁面A 進入某站點目標頁B,進入B頁面的Referer請求頭包含頁面A地址。

         

該請求存在被運營商劫持、DNS劫持、廣告劫持的風險:網絡傳輸鏈路節點能從Referer中輕松拿到用戶的百度關鍵詞信息,是一個較大的隱私風險。

        不是說百度完成全站HTTPS化嗎?怎么還會有DNS劫持,請注意,是百度全站完成HTTPS化,並不是目標站點完成HTTPS, 該請求可能還是一個HTTP請求。

         百度在完成全站HTTPS化后決心 在隱私性上更進一步,因此宣布全面取消Referer關鍵詞顯示。

 

3. Referer的變化對生態鏈各方造成了什么影響?

            BAT形成中國互聯網界上三座大山,各自形成了獨立的護城河和生態鏈,老虎一聲吼,地球抖一抖。 很多公司依賴百度的搜索功能提供增值服務,形成了完整的產業鏈。

百度全面取消Referer關鍵詞顯示的技術實現給各方造成了影響(注意,百度是取消了Referer中關鍵詞的顯示,不是去掉了Referer)。

   ①  從終端用戶角度看,我們從詞條搜索結果A進入某站點目標頁B,中間會發生瀏覽器跳轉,這在網速慢的時候很明顯。

   ②  DNS劫持者和一些公共WIFI

       影響最大的應該是DNS劫持者和一些公共WIFI,百度這塊的隱私數據已經徹底被掐斷。

   ③ 一些實力差的網盟將退出歷史舞台

    許多號稱有大數據背景的網盟本質上來說,都是從百度的搜索行為拿數據。從百度啟用HTTPS,取消REFERER中的關鍵字以后,大量依靠這款數據的網盟公司在短期內廣告展現質量會迅速下降。還有有一些廣告聯盟的大塊廣告分銷商就是做DNS劫持的,這些網盟恐怕以后日子更不好過了。

      ④ 統計工具

         無法獲取Referer中的關鍵字以后,除了知道一個流量來自百度以外其他無從知曉。所以百度的搜索份額還是保留在統計中的,但是無法基於此做進一步分析了。 缺失搜索數據的統計工具,是挖掘不出多少價值的。百度關閉了一扇門,打開了一扇窗,百度提供了自有的百度系統計工具和API 開放給第三方工具進行后續挖掘。 

 

4. 技術角度分析是怎樣完成這樣的騷操作的?

        依照上面常規的請求圖: A->B; 當我們點擊A頁面中連接跳轉到B頁面,B頁面里面Referer值就是A頁面地址。

  Referer 是瀏覽器自動添加的,不能刪除,那可考慮在進入B網頁時替換Referer。

  百度引入了中間頁P來完成這個替換操作:  A->P->B, B的Referer已經變成了網頁P。

 

下圖演示了度搜索結果頁面A,選中任意一個結果鏈接進入目標站點網頁B的過程

      

 

 

  •  由於有了這個中間頁P,那么關鍵詞的顯示與否就由百度站點一手控制了
  •  中間頁P由百度生成,P頁面的Referer正是A,但是我們無法抓取P請求(域名也在百度)
  •  進入着陸頁B的Referer請求頭是中間頁P,而P的關鍵詞信息已經加密。

使用Fiddler驗證(搜索關鍵詞 WebDissector):

     ①  網頁A中的原始搜索結果鏈接

 

 

      ② 點擊任意結果鏈接時原始鏈接被附加了 &wd=&eqid=******* , 形成完整的中間頁P

 

 

 仔細探究中間頁P的響應體:
<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://www.webdissector.cn/")
}, timeout);
window.opener = null; 
</script>
<noscript><META http-equiv="refresh" content="0;URL='https://www.webdissector.cn/'"></noscript>
  以上代碼的功能大致是:如果瀏覽器支持Javascript,則通過js跳轉到目標頁面,如果瀏覽器不支持Javascript,那么也能通過最后的Meta標簽讓瀏覽器實現跳轉。
 
  中間頁P的url:www.baidu.com/link?url=g19mr6kuOtd-rH0lnHN1SRvGiCevp5qQam2vVd-X4WNPesjKS1uRiu98tV49REXl& wd=&eqid=b03f3d7e00007893000000025a911952
  可以看到原來的wd(代表原始搜索詞)已經隱藏,后面的eqid值是加密后的word,
     (單一搜索結果頁面被附加的是同一個eqid)。
 

最后

  That's All,百度真是用心良苦,回歸應用,流量關鍵詞作為站長關注的首選重點,是數字營銷和用戶行為分析領域中必須玩轉的技術功能點。
       百度雲為了滿足站長獲取網站流量關鍵詞的數據分析需求提供了精細化的百度搜索Referer關鍵詞數據服務,在百度雲網絡環境內提供實時和批量獲取API,站長通過提供其網站Referer關鍵詞的eqid可以獲取對應的Referer關鍵詞:  API文檔  
 
作者: JulianHuang

感謝您的認真閱讀,如有問題請大膽斧正,如果您覺得本文對你有用,不妨幫忙點個或加關注。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置注明本文的作者及原文鏈接,否則保留追究法律責任的權利。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM