亚洲中文字幕乱码亚洲-蜜桃成熟视频在线观看-免费中文字幕视频在线-中国五十路熟妇洗澡视频-亚洲av伊人啪啪c-国产精品成人一区二区-国产自拍视频一区在线观看-成人一区不卡二区三区四区-亚洲情精品中文字幕99在线

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

尼日利亞開(kāi)發(fā)者花3天造測(cè)速工具,踩了7個(gè)坑才摸清運(yùn)營(yíng)商套路

0
分享至


尼日利亞人換運(yùn)營(yíng)商比換襪子還勤。MTN信號(hào)差?切Airtel。Airtel流量貴?換Glo。Glo網(wǎng)速慢?試試9mobile。但沒(méi)人說(shuō)得清:拉各斯島、萊基、伊凱賈,到底哪家運(yùn)營(yíng)商真正快。

一個(gè)本地開(kāi)發(fā)者決定用代碼終結(jié)這場(chǎng)猜謎游戲。他發(fā)起15天DevOps挑戰(zhàn),公開(kāi)記錄從零搭建「NaijaSpeed」測(cè)速工具的全過(guò)程。前3天的日志,是一連串真實(shí)到讓人扶額的踩坑實(shí)錄。

Day 1:WSL是禮物,也是陷阱

項(xiàng)目啟動(dòng)很順利。Windows Subsystem for Linux(WSL,Windows的Linux子系統(tǒng))讓他不用裝雙系統(tǒng)就能跑Linux環(huán)境,開(kāi)發(fā)體驗(yàn)「幾乎和原生一樣」。但「幾乎」這個(gè)詞,在DevOps里往往是噩夢(mèng)的前奏。

文件系統(tǒng)性能成了第一個(gè)暗礁。WSL訪問(wèn)Windows目錄時(shí),I/O速度暴跌到原生Linux的1/10。他起初沒(méi)察覺(jué),直到Docker構(gòu)建時(shí)間從3分鐘拖到20分鐘。排查兩小時(shí)才發(fā)現(xiàn):代碼放在`/mnt/c/`(Windows掛載點(diǎn))和放在WSL自己的`/home/`目錄,完全是兩個(gè)世界。

「我把項(xiàng)目遷移到WSL根分區(qū),構(gòu)建時(shí)間立刻恢復(fù)正常?!顾谌罩纠飳?xiě)道。這個(gè)細(xì)節(jié)他沒(méi)在教程里見(jiàn)過(guò)——大多數(shù)WSL指南只教你怎么安裝,不告訴你文件放哪。

路由自動(dòng)識(shí)別是核心賣(mài)點(diǎn)。用戶不用手動(dòng)選運(yùn)營(yíng)商,工具得自己猜。

實(shí)現(xiàn)方案是IP地址庫(kù)查詢。但尼日利亞運(yùn)營(yíng)商的IP段分配像一團(tuán)亂麻:MTN和Airtel有重疊段,Glo的部分IP被標(biāo)記為「衛(wèi)星/未知」,9mobile的WHOIS信息更新滯后三個(gè)月。他花了整整一下午,把五個(gè)公開(kāi)IP庫(kù)交叉比對(duì),才整理出一份勉強(qiáng)可用的映射表。

「準(zhǔn)確率大概85%?!顾姓J(rèn),「剩下15%?用戶會(huì)告訴我?!?/p>

Day 2:CORS是前端開(kāi)發(fā)者的永恒敵人

測(cè)速需要下載測(cè)試文件。他選了Cloudflare的免費(fèi)CDN,文件分布在全球200多個(gè)節(jié)點(diǎn),理論上離用戶最近。

但瀏覽器安全機(jī)制(CORS,跨域資源共享)直接攔截了請(qǐng)求。前端代碼跑在`naijaspeed.ng`,測(cè)試文件來(lái)自`cdn.cloudflare.net`,域名不同,瀏覽器默認(rèn)拒絕??刂婆_(tái)一片血紅。

第一次修復(fù):在Cloudflare加CORS頭。失敗——免費(fèi)計(jì)劃不支持自定義響應(yīng)頭。第二次:換用自己的服務(wù)器托管測(cè)試文件。帶寬成本飆升,且喪失了CDN的地理分布優(yōu)勢(shì)。第三次:嘗試JSONP繞過(guò),發(fā)現(xiàn)現(xiàn)代瀏覽器對(duì)腳本注入的限制比想象中嚴(yán)格。

最終解法是把測(cè)速邏輯搬到服務(wù)端。前端只負(fù)責(zé)啟動(dòng),實(shí)際下載由后端代理完成,再把結(jié)果傳回。架構(gòu)變重了,但CORS問(wèn)題徹底解決。

「這個(gè)妥協(xié)讓我多寫(xiě)了400行代碼?!顾涗浀溃傅脩舨粫?huì)知道,他們只會(huì)覺(jué)得『這網(wǎng)站能用了』?!?/p>

Day 3:加密算法的隱藏天花板

測(cè)速工具需要防作弊。有人可能用腳本偽造結(jié)果,或者重復(fù)測(cè)試刷數(shù)據(jù)。他打算給每次測(cè)速生成唯一簽名,驗(yàn)證數(shù)據(jù)完整性。

選的是HMAC-SHA256(一種消息認(rèn)證算法),在Node.js里三行代碼就能跑通。本地測(cè)試完美,部署到生產(chǎn)環(huán)境后,簽名驗(yàn)證隨機(jī)失敗。

排查指向了Web Crypto API的微妙差異。Node.js的`crypto`模塊和瀏覽器原生的`crypto.subtle`,對(duì)密鑰編碼的默認(rèn)行為不一致。他在本地用Node生成簽名,前端用瀏覽器驗(yàn)證,兩邊算出來(lái)的哈希值偶爾對(duì)不上——不是每次都錯(cuò),是「偶爾」,最難纏的那種bug。

六小時(shí)調(diào)試后,發(fā)現(xiàn)是字符串編碼問(wèn)題:Node默認(rèn)UTF-8,瀏覽器在某些邊緣情況下用UTF-16。強(qiáng)制統(tǒng)一編碼后,故障消失。

「這六小時(shí)里,我有三次想放棄,兩次想換技術(shù)棧,一次認(rèn)真考慮了要不要做純后端渲染。」他寫(xiě)道。

運(yùn)營(yíng)商自動(dòng)識(shí)別的準(zhǔn)確率,在真實(shí)用戶測(cè)試后跌到了72%。

問(wèn)題出在移動(dòng)網(wǎng)絡(luò)。尼日利亞大量用戶通過(guò)代理服務(wù)器上網(wǎng),IP顯示為運(yùn)營(yíng)商總部所在地,而非實(shí)際物理位置。一個(gè)身在卡諾的用戶,IP可能被標(biāo)記為拉各斯。測(cè)速結(jié)果對(duì)了,地理位置錯(cuò)了,數(shù)據(jù)分析就亂了。

他暫時(shí)無(wú)解,只能在界面加了一行小字:「位置估算僅供參考,以實(shí)際體驗(yàn)為準(zhǔn)?!?/p>

3天后的真實(shí)狀態(tài)

工具能跑了。核心功能——自動(dòng)識(shí)別運(yùn)營(yíng)商、下載測(cè)速、延遲測(cè)試、結(jié)果記錄——全部可用。但他列出的待辦事項(xiàng)還有17條:IPv6支持、WiFi/蜂窩網(wǎng)絡(luò)區(qū)分、歷史數(shù)據(jù)可視化、運(yùn)營(yíng)商覆蓋地圖……

最意外的收獲是用戶反饋。第一天內(nèi)測(cè),23個(gè)朋友參與,其中4人發(fā)現(xiàn)了自己的運(yùn)營(yíng)商「貨不對(duì)板」——套餐寫(xiě)的是4G,實(shí)際連接的是3G基站。這不是測(cè)速工具能解決的問(wèn)題,但NaijaSpeed至少讓問(wèn)題可見(jiàn)了。

「我最初只是想做個(gè)速度計(jì),」他在Day 3結(jié)尾寫(xiě)道,「現(xiàn)在發(fā)現(xiàn)它更像一個(gè)診斷儀。尼日利亞的網(wǎng)絡(luò)問(wèn)題,比『誰(shuí)更快』復(fù)雜得多?!?/p>

挑戰(zhàn)還剩12天。他下一步打算接入真實(shí)的運(yùn)營(yíng)商API,獲取基站級(jí)數(shù)據(jù)——如果運(yùn)營(yíng)商愿意開(kāi)放的話。目前所有識(shí)別邏輯,都是基于公開(kāi)IP庫(kù)的逆向工程。

這個(gè)項(xiàng)目的GitHub倉(cāng)庫(kù)星標(biāo)數(shù)從0漲到了47。有人留言說(shuō)想在肯尼亞復(fù)刻,有人問(wèn)能不能加ISP評(píng)分功能。他回復(fù):「先讓我把尼日利亞搞明白?!?/p>

15天結(jié)束后,這個(gè)工具會(huì)存活多久?開(kāi)發(fā)者自己也不知道。但前3天的日志已經(jīng)說(shuō)明了一件事:在基礎(chǔ)設(shè)施混亂的市場(chǎng)里,哪怕一個(gè)「簡(jiǎn)單」的測(cè)速功能,也需要穿越層層迷霧才能落地。而那些迷霧,往往不會(huì)出現(xiàn)在任何教程里。

特別聲明:以上內(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.

相關(guān)推薦
熱點(diǎn)推薦
越南人來(lái)北京旅游,回國(guó)后搖頭感慨:中國(guó)已經(jīng)是超一等國(guó)家了

越南人來(lái)北京旅游,回國(guó)后搖頭感慨:中國(guó)已經(jīng)是超一等國(guó)家了

幾人盡棄
2026-04-15 18:51:55
大摩:房東信心再度惡化

大摩:房東信心再度惡化

譚談投研
2026-04-14 19:12:11
女生長(zhǎng)的太漂亮是什么體驗(yàn)?網(wǎng)友:母以子貴,父以女榮

女生長(zhǎng)的太漂亮是什么體驗(yàn)?網(wǎng)友:母以子貴,父以女榮

另子維愛(ài)讀史
2026-03-10 22:56:08
1931年她在咖啡館多坐了十分鐘,救下整個(gè)黨中央,活到110歲

1931年她在咖啡館多坐了十分鐘,救下整個(gè)黨中央,活到110歲

鶴羽說(shuō)個(gè)事
2026-04-07 22:55:09
內(nèi)娛最好命闊太: 住億萬(wàn)豪宅, 一頓飯賺7000萬(wàn), 被老公寵愛(ài)30年!

內(nèi)娛最好命闊太: 住億萬(wàn)豪宅, 一頓飯賺7000萬(wàn), 被老公寵愛(ài)30年!

趣文說(shuō)娛
2026-04-15 21:42:55
金星大氣層薄霧:難解的“霧中謎團(tuán)”

金星大氣層薄霧:難解的“霧中謎團(tuán)”

小眼睛小世界
2026-04-16 06:19:03
老了才明白:父母一旦超過(guò)81,立刻停止兩種行為,否則晚景或凄涼

老了才明白:父母一旦超過(guò)81,立刻停止兩種行為,否則晚景或凄涼

三農(nóng)老歷
2026-03-19 13:59:41
新加坡已經(jīng)成功預(yù)測(cè)中美沖突,一旦爆發(fā),美稱(chēng)中國(guó)不能攻打美本土

新加坡已經(jīng)成功預(yù)測(cè)中美沖突,一旦爆發(fā),美稱(chēng)中國(guó)不能攻打美本土

起喜電影
2026-04-16 01:05:59
隨著阿森納0-0葡萄牙體育,拜仁4-3皇馬,歐冠半決賽對(duì)陣出爐

隨著阿森納0-0葡萄牙體育,拜仁4-3皇馬,歐冠半決賽對(duì)陣出爐

側(cè)身凌空斬
2026-04-16 05:19:56
蘇聯(lián)在任最短的總統(tǒng),僅當(dāng)了8天,可他卻是斯大林最合格的接班人

蘇聯(lián)在任最短的總統(tǒng),僅當(dāng)了8天,可他卻是斯大林最合格的接班人

曉張說(shuō)
2026-04-15 07:08:36
兩岸統(tǒng)一后:臺(tái)灣為何不宜“建省”?背后是一段深刻歷史教訓(xùn)

兩岸統(tǒng)一后:臺(tái)灣為何不宜“建省”?背后是一段深刻歷史教訓(xùn)

近史談
2026-04-13 23:16:17
家長(zhǎng)擔(dān)心女兒太美,發(fā)明“防早戀”發(fā)型,網(wǎng)友:顏值已經(jīng)很安全了

家長(zhǎng)擔(dān)心女兒太美,發(fā)明“防早戀”發(fā)型,網(wǎng)友:顏值已經(jīng)很安全了

蝴蝶花雨話教育
2026-04-10 13:25:02
遭公開(kāi)控訴雙面人后,王陽(yáng)被曝大瓜,才發(fā)現(xiàn)蔣欣當(dāng)年決策有多高明

遭公開(kāi)控訴雙面人后,王陽(yáng)被曝大瓜,才發(fā)現(xiàn)蔣欣當(dāng)年決策有多高明

老黯談娛
2026-04-16 07:14:08
老公干40年每次升職都沒(méi)他,剛退休大領(lǐng)導(dǎo)來(lái)電:你們家到底想怎樣

老公干40年每次升職都沒(méi)他,剛退休大領(lǐng)導(dǎo)來(lái)電:你們家到底想怎樣

周哥一影視
2026-04-15 13:58:59
賽力斯汽車(chē)“車(chē)載便器”專(zhuān)利正式獲批:可解決長(zhǎng)途出行內(nèi)急需求

賽力斯汽車(chē)“車(chē)載便器”專(zhuān)利正式獲批:可解決長(zhǎng)途出行內(nèi)急需求

IT之家
2026-04-14 15:10:22
這跟不穿有啥區(qū)別??jī)?nèi)褲外露、開(kāi)叉開(kāi)到腰,有錢(qián)人的時(shí)尚真看不懂

這跟不穿有啥區(qū)別??jī)?nèi)褲外露、開(kāi)叉開(kāi)到腰,有錢(qián)人的時(shí)尚真看不懂

潮鹿逐夢(mèng)
2026-03-02 17:19:02
“我女兒敢這樣,腿給砸斷”,寶媽曬2個(gè)女兒出門(mén),裝束讓人怒了

“我女兒敢這樣,腿給砸斷”,寶媽曬2個(gè)女兒出門(mén),裝束讓人怒了

蝴蝶花雨話教育
2026-04-10 13:01:09
寶馬內(nèi)涵新勢(shì)力測(cè)試造假!其銷(xiāo)售曾諷刺某車(chē)是“速成雞”

寶馬內(nèi)涵新勢(shì)力測(cè)試造假!其銷(xiāo)售曾諷刺某車(chē)是“速成雞”

明鏡pro
2026-04-16 09:54:43
國(guó)運(yùn)又來(lái)了,儲(chǔ)量相當(dāng)于煤炭4億倍,中國(guó)地底深處藏著超級(jí)能源庫(kù)

國(guó)運(yùn)又來(lái)了,儲(chǔ)量相當(dāng)于煤炭4億倍,中國(guó)地底深處藏著超級(jí)能源庫(kù)

混沌錄
2026-04-13 20:11:12
“美國(guó)將只有大棒,沒(méi)有胡蘿卜”

“美國(guó)將只有大棒,沒(méi)有胡蘿卜”

參考消息
2026-04-15 09:35:04
2026-04-16 10:56:49
我是一個(gè)粉刷匠2
我是一個(gè)粉刷匠2
有態(tài)度網(wǎng)友ytd
1437文章數(shù) 18關(guān)注度
往期回顧 全部

科技要聞

39.98萬(wàn)!小鵬GX預(yù)售“純電增程同價(jià)”

頭條要聞

24歲抗癌博主去世媽媽和姐姐也病世 一家五口只剩兩人

頭條要聞

24歲抗癌博主去世媽媽和姐姐也病世 一家五口只剩兩人

體育要聞

WNBA史上最大合同!阿賈3年500萬(wàn)超級(jí)頂薪留隊(duì)

娛樂(lè)要聞

謝娜現(xiàn)身環(huán)球影城,牽手女兒溫馨有愛(ài)

財(cái)經(jīng)要聞

一季度GDP增5%!國(guó)新辦介紹國(guó)民經(jīng)濟(jì)情況

汽車(chē)要聞

空間大五個(gè)乘客都滿意?體驗(yàn)嵐圖泰山X8

態(tài)度原創(chuàng)

本地
健康
數(shù)碼
教育
公開(kāi)課

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

數(shù)碼要聞

昂達(dá)推出GeForce RTX 5060 / 5060 Ti 8GB神盾顯卡

教育要聞

為什么這所學(xué)校要保留一片亂糟糟的樹(shù)根?

公開(kāi)課

李玫瑾:為什么性格比能力更重要?

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版