背景
百度曾公告於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
<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>
最后
感謝您的認真閱讀,如有問題請大膽斧正,如果您覺得本文對你有用,不妨幫忙點個或加關注。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置注明本文的作者及原文鏈接,否則保留追究法律責任的權利。