![]()
你的后臺(tái)顯示日活1萬(wàn),實(shí)際可能是1.6萬(wàn)。那消失的6000人不是沒(méi)訪問(wèn),是被廣告攔截插件一鍵抹掉了。
開(kāi)發(fā)者Raj Nandan在博客中算過(guò)一筆賬:30%-40%的用戶運(yùn)行廣告攔截器,它們不分青紅皂白,把Google Analytics、Amplitude、PostHog的請(qǐng)求統(tǒng)統(tǒng)掐斷。你的SDK加載正常,事件觸發(fā)正常,但數(shù)據(jù)包根本出不了瀏覽器。用60%的數(shù)據(jù)做決策,本質(zhì)上和拋硬幣差不多。
他試過(guò)市面上的方案。一類(lèi)是付費(fèi)代理服務(wù)——"本質(zhì)上就是幫你跑個(gè)Nginx,這錢(qián)花得別扭"。另一類(lèi)是自研服務(wù)端,處理請(qǐng)求頭、跨域、路徑重寫(xiě),"我不想為了轉(zhuǎn)發(fā)請(qǐng)求專(zhuān)門(mén)維護(hù)一個(gè)Node.js服務(wù)器"。
于是他造了個(gè)更"蠢"的東西:Saki。
一行命令部署,攔截插件瞬間失明
Saki是個(gè)自托管的Nginx反向代理,以Docker容器跑在你自己的域名下。核心邏輯簡(jiǎn)單到近乎粗暴:讓分析請(qǐng)求走你的基礎(chǔ)設(shè)施,而非直連第三方域名。
具體怎么騙過(guò)攔截插件?
原本你的網(wǎng)站加載`www.googletagmanager.com`的腳本,攔截插件一眼認(rèn)出這是谷歌統(tǒng)計(jì),直接封殺。但如果腳本從`your-domain.com/tg/script.js`加載,攔截插件會(huì)把它當(dāng)成你站點(diǎn)的正常資源——第一方請(qǐng)求,放行。
部署只需要一行:
`docker run -d -p 8765:80 rajnandan1/saki`
沒(méi)有配置文件,沒(méi)有環(huán)境變量,開(kāi)箱即用。Saki預(yù)置了主流分析服務(wù)的路由,每個(gè)路徑都經(jīng)過(guò)刻意模糊:`/tg/`不會(huì)暴露這是Google Tag Manager,`/gt/`也不是明晃晃的Google Analytics。
網(wǎng)站端的改動(dòng)同樣只有一行:把分析域名換成你的代理地址。SDK不用換,配置不用改,同樣的腳本,換個(gè)主機(jī)名而已。
![]()
數(shù)據(jù)完整性 vs 用戶隱私,這道選擇題有標(biāo)準(zhǔn)答案嗎
Saki轉(zhuǎn)發(fā)所有原始請(qǐng)求頭——User-Agent、Cookie、IP、語(yǔ)言、來(lái)源頁(yè)。分析服務(wù)商收到的請(qǐng)求和直連時(shí)一模一樣,完全感知不到中間多了一層代理。
這引出一個(gè)微妙的問(wèn)題:用戶裝攔截插件,究竟是討厭廣告,還是明確拒絕被追蹤?
技術(shù)社區(qū)對(duì)此分歧明顯。Hacker News上有開(kāi)發(fā)者直言:"如果用戶主動(dòng)選擇攔截,我們繞過(guò)這個(gè)選擇是否道德?"另一派則認(rèn)為:"我只想統(tǒng)計(jì)頁(yè)面訪問(wèn)量,又不是賣(mài)數(shù)據(jù)給第三方,這也要被攔?"
Raj Nandan的立場(chǎng)偏向?qū)嵱弥髁x。他在博客中寫(xiě)道,Saki的默認(rèn)配置會(huì)保留用戶隱私控制——如果瀏覽器發(fā)送Do Not Track信號(hào),代理會(huì)原樣轉(zhuǎn)發(fā),由分析服務(wù)商決定是否響應(yīng)。技術(shù)中立,把選擇權(quán)留給下游。
但"中立"本身也是立場(chǎng)。當(dāng)歐盟GDPR要求明確 consent 才能追蹤時(shí),Saki這類(lèi)工具是否讓合規(guī)變得更復(fù)雜?文章沒(méi)有給出答案,只是留下了配置接口:你可以加自定義Header,可以改日志級(jí)別,可以決定哪些數(shù)據(jù)透?jìng)鳌⒛男┻^(guò)濾。
從"能用"到"敢用",生產(chǎn)環(huán)境還差幾步
單容器部署適合驗(yàn)證,上生產(chǎn)需要更多工作。Raj Nandan建議走子域名+HTTPS,比如`s.yourdomain.com`,Railway、Render、Fly.io都能跑。
性能方面,Nginx的代理開(kāi)銷(xiāo)可以忽略。真正的瓶頸在認(rèn)知:團(tuán)隊(duì)需要理解,現(xiàn)在所有分析流量都經(jīng)過(guò)你的基礎(chǔ)設(shè)施,意味著你成了數(shù)據(jù)的第一責(zé)任人。日志存多久?誰(shuí)有權(quán)限訪問(wèn)?出問(wèn)題怎么排查?這些原本由Google、Amplitude承擔(dān)的部分,現(xiàn)在落在了你自己頭上。
Saki的GitHub倉(cāng)庫(kù)提供了Docker Compose示例和Kubernetes配置,但文檔坦率承認(rèn):"我們不提供托管服務(wù),也不對(duì)生產(chǎn)環(huán)境的穩(wěn)定性背書(shū)。"這是開(kāi)源項(xiàng)目的典型姿態(tài)——代碼給你,風(fēng)險(xiǎn)自擔(dān)。
有趣的是項(xiàng)目命名的由來(lái)。Raj Nandan沒(méi)有解釋?zhuān)煜と毡揪频淖x者會(huì)知道:Saki(酒)需要發(fā)酵,需要等待,需要合適的溫度。太急會(huì)酸,太慢會(huì)淡。用代理繞過(guò)攔截插件,大概也是同一種手藝——既要拿到數(shù)據(jù),又不能讓用戶察覺(jué)被"發(fā)酵"過(guò)。
目前Saki支持Google Analytics、Tag Manager、Amplitude、Mixpanel、PostHog、Plausible等主流工具,新增服務(wù)只需在Nginx配置里加location塊。社區(qū)貢獻(xiàn)的PR包括Segment代理和Matomo支持,但審核速度取決于維護(hù)者的業(yè)余時(shí)間。
最后留個(gè)開(kāi)放式問(wèn)題:如果你的產(chǎn)品明天發(fā)現(xiàn)40%用戶"隱形"了,你會(huì)選擇部署Saki這類(lèi)工具恢復(fù)數(shù)據(jù)完整性,還是接受攔截率作為用戶偏好的真實(shí)信號(hào)?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.