如果你的百度統計被惡意刷廣告的話,你會在百度統計后臺里的搜索詞、來源等看到各種廣告,包括收流量、代開發票、SEO、云主機等等廣告,例如我下面的截圖,很多真實的流量被刷到看不到,而且流量也會造成統計不準,可能感覺最近幾天流浪猛增,但實際真實流量并沒有那么大。
想要斬草除根,就需要知己知彼,明白他們操作的原理以后,就可以有效的遏制他們無下限的刷廣告。
他們是這樣做的,先寫一個機器爬蟲,爬取頁面內容,尋找「#/hm.js」如果找到了就說明你使用了百度統計,然后再取后面的參數,就得到了你的百度統計ID,然后保存到數據庫,拿到你的的百度統計ID以后,就可以進行下一步,使用程序批量的給百度統計接口發送數據,也就是說這些內容他們根本不是真的去你的網站,而是直接給百度統計的接口提交了數據,對你的網站流量沒有任何貢獻,你只有看廣告的份。
我也是被刷廣告刷的很嚴重,是在忍無可忍,必須解決一下他們了。
我們明白了他們的原理,現在就開始見招拆招,破解他們的刷廣告的手段。
首先,你的舊的統計代碼ID已經被他們獲取到了,保存到了他們的數據庫,所以建議舊的代碼就放棄吧,去百度統計刪除掉,再新增網站,你會獲得一個新的統計代碼。
然后,為了讓他們的爬蟲程序識別不到百度統計代碼,我們需要將百度統計的URL地址做一個變換,我的方式是將原有的百度統計URL地址打散成一個一個的字符串數組,然后再拼裝起來,實例如下:
百度統計給我們的代碼:
var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?ee1f1987ccfc9bcd61a1d220f5ae41e1"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})();
將百度統計的特征,也就是地址打散成數組,再組裝使用:
var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); var analytics_bd = 'ee1f1987ccfc9bcd61a1d220f5ae41e1'; hm.src = ['ht', 't', 'ps', ':/', '/h', 'm', '.', 'ba', 'i', 'd', 'u.c', 'o', 'm/', 'h', 'm', '.j', 's?', analytics_bd].join(''); var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})();
需要改動的就只有一行,注意「hm.src = "https://#/hm.js?ee1f1987ccfc9bcd61a1d220f5ae41e1";」這行代碼,被拆散為數組,然后再拼裝起來使用。這樣他們的爬蟲程序就無法識別到你在使用百度統計了。