最近一段時間,我在Google Analytics(以下簡稱GA)中查看網(wǎng)站數(shù)據(jù)時,發(fā)現(xiàn)一個非常可疑的信息:

這什么鬼?

“l(fā)anguage”這一項(xiàng)一般是 “zh-tw”, “zh-cn”, “en-us”, “es”, “fr”等,它是由用戶瀏覽器設(shè)定的。但用戶瀏覽器不可能把語言項(xiàng)設(shè)置為這些:

Secret.?oogle.com You are invited! Enter only with this ticket URL. Copy it. Vote for Trump!

o-o-8-o-o.com search shell is much better than google!

Vitaly rules google ☆:?゜??ヽ(^?^)??゜??:☆ ˉ_(ツ)/ˉ(?益?)(???)(???)?(???)( ?° ?? ?°)ヽ(?Д?)???????? ????(=^ ^=)oO

Congratulations to Trump and all americans

分析請求

很明顯,這是一種新的 spam(垃圾信息),希望吸引目標(biāo)人群(可能就是我們這樣的網(wǎng)絡(luò)管理員)的注意力。

仔細(xì)地觀察這些請求,會發(fā)現(xiàn)幾個特點(diǎn):

  1. 請求數(shù)有明顯的波峰,在幾天內(nèi)會達(dá)到高峰,然后又降下去

  2. New Sessions 的比例非常高,達(dá)到了86%以上

分析其它受攻擊的欄目

仔細(xì)查看 GA 統(tǒng)計項(xiàng)目的這些請求,發(fā)現(xiàn) referrer 一欄也比較可疑地出現(xiàn)了這些:

motherboard.vice.com addons.mozilla.org webmasters.stackexchange.com blackhatworld.com thenextweb.com abc.xyz lifehac?er.com ...

這其中有一些非常正規(guī)的域名。比如abc.xyz是Google的母公司alphabet的官網(wǎng),thenextweb.com也是一個開發(fā)者媒體。

這些網(wǎng)站本身沒有問題,但其實(shí)該網(wǎng)站上并沒有任何一個鏈接指向我的博客,更談不上我的訪客“來自”(referral)該網(wǎng)站了。當(dāng)我訪問回去,發(fā)現(xiàn)并沒有實(shí)際上的鏈接,只是廣告,倒也罷了,更可怕的是可能會有釣魚、病毒等。

綜上,這是一波二維攻擊(假的語言項(xiàng)和假的 referral 項(xiàng)),目的是吸引你的注意力。

分析攻擊怎么產(chǎn)生的

總的來說,這種垃圾信息有兩種攻擊方式。一種是真正會訪問你的網(wǎng)站的網(wǎng)絡(luò)爬蟲;另一種是不訪問你的網(wǎng)站,而是將假冒的“點(diǎn)擊”事件直接發(fā)送到GA服務(wù)器。事實(shí)上,第二種攻擊方式由于成本低,因而更加常見。

GA 的統(tǒng)計邏輯是,當(dāng)用戶訪問你的網(wǎng)站,會在前端運(yùn)行一段 JavaScript 代碼,然后把用戶的一些訪問情況通過 HTTP 請求發(fā)送給 GA 服務(wù)器,告訴 GA 發(fā)生了一次“訪問”。而這個 HTTP 請求可以很容易地被偽造,所以垃圾信息發(fā)送者無需真的訪問你的站點(diǎn),它直接發(fā)送大量 HTTP 請求即可達(dá)到目的。

除了 HTTP 請求,GA 還支持更方便的Measurement Protocol ,開發(fā)者可以發(fā)送一個原始數(shù)據(jù)(raw data)給GA,來一次性傳輸大量用戶行為。這個協(xié)議的初衷是讓開發(fā)者可以統(tǒng)計所有環(huán)境下的用戶行為,比如開發(fā)者可以將離線狀態(tài)下的用戶行為記錄下來,當(dāng)在線時一次性發(fā)送?;蛘弋?dāng)內(nèi)網(wǎng)不支持外部訪問時,先記錄下用戶行為,隨后再定時一次性發(fā)送到 GA。

初衷是好的,不幸的是,這個過程仍然是無需認(rèn)證身份,所以更方便了垃圾信息發(fā)送者。垃圾信息發(fā)送者可以通過一次請求即發(fā)送大量假數(shù)據(jù),他只需要得到你的 UA-ID(UA-XXXXXXX-XX)即可。

在這個原始數(shù)據(jù)包中,一切皆可偽造。Hostname?沒問題!Referral?全改了!URL path?當(dāng)然也可以改……

如何避免

對網(wǎng)站主來說,這種垃圾信息有幾點(diǎn)危害:1、浪費(fèi)時間,就像傳統(tǒng)垃圾郵件一樣。2、干擾 GA 狀態(tài)欄,特別是如果網(wǎng)站流量不是很大(比如我)。3、傳播病毒。

所以,有沒有完美的解決方法呢?實(shí)際上,沒有。

要知道,數(shù)據(jù)一旦錄入到 GA,就沒有辦法刪掉了。能做的只有兩件事,一是阻止垃圾信息進(jìn)一步加入到 GA,二是在視圖中過濾掉已經(jīng)添加進(jìn)來的垃圾信息,眼不見為凈。

第一步:使用過濾器阻止未來的垃圾信息

在語言項(xiàng)中,一般字符數(shù)是5-6個,很少有超過10個的,所以我們可以認(rèn)為語言項(xiàng)超過15個字符的就一定是垃圾信息。

此外,有一些字符是不可能出現(xiàn)在合法的語言項(xiàng)中,但垃圾信息會利用這些字符來組成URL,比如: “secret google com”, “secret,google,com”, “secret!google!com”,所以我們也一并排除空格、點(diǎn)號、逗號、驚嘆號。

.{15,}|\s[^\s]*\s|\.|,|\!|\/

在admin中選擇Filter,然后新增一個如圖所示的過濾器即可。

設(shè)置好了之后,可以驗(yàn)證一下是否會攔截掉我們想攔截的內(nèi)容:

沒有問題,未來的語言項(xiàng)垃圾信息會直接被攔截掉。

第二步:通過Segment凈化已有數(shù)據(jù)

過濾器從你開始設(shè)置時生效,而歷史信息無法修改。不過 GA 提供了 custom segment 功能,在生成報告時,選擇性過濾掉一些數(shù)據(jù)。

Segment 就是數(shù)據(jù)片段,指的是在完整的數(shù)據(jù)中取出我們需要的片段進(jìn)行分析。比如我們可以單獨(dú)取出24歲以下的用戶的行為,對比24歲以上的用戶行為有何不同。而這個功能正好可以讓我們把“語言”不規(guī)范的數(shù)據(jù)過濾掉。

如下圖,在All Users的旁邊有一個 + Add Segment 的按鈕,點(diǎn)擊之后就可以配置我們的 segment。

一定要注意是選擇“does not match regex”,里面填上之前的正則。

創(chuàng)建好了新的 segment 之后,就會看到過濾之后的全新報告。

下次再進(jìn)入時,又會默認(rèn)進(jìn)入到 All Users 視圖,這時可以在 All Users 里的 custom 里找到我們的自定義 segment,勾選即可。

如果經(jīng)常需要查看這個 segment,推薦點(diǎn)擊 shortcut 來新增快捷方式。

它會保存當(dāng)前的 segment 和排序等,下一次可以直接從 Short 項(xiàng)目進(jìn)入到這個快捷目錄。

以上就是完整的過濾方法了,這樣應(yīng)該可以過濾掉大部分語言spam的攻擊。GA提供的 filter 和 segment 的功能很強(qiáng)大,如果后續(xù)發(fā)現(xiàn)有新的垃圾信息,可以繼續(xù)通過今天學(xué)習(xí)的方法來更新完善我們的過濾器。

參考資料: Language Spam – The Latest Google Analytics Spam Guide to Removing Referrer Spam in Google Analytics

 


 

相關(guān)推薦

面向未來的跨界開發(fā)技術(shù)(上)

面向未來的跨界開發(fā)技術(shù)(下)

 


 

此文已由作者授權(quán)騰訊云技術(shù)社區(qū)發(fā)布,轉(zhuǎn)載請注明文章出處,獲取更多云計算技術(shù)干貨,可請前往騰訊云技術(shù)社區(qū)

歡迎大家關(guān)注騰訊云技術(shù)社區(qū)-博客園官方主頁,我們將持續(xù)在博客園為大家推薦技術(shù)精品文章哦~

http://www.cnblogs.com/qcloud1001/p/6598857.html