優(yōu)雅地解決 InternetOpen Failed 錯(cuò)誤(12029)


洛英的十年老問題之一,現(xiàn)如今 IE 都無了它還在。
問題描述
錯(cuò)誤定位
解決方案
?1.?問題描述:
平時(shí)某一天,特別是周二更新之后,會(huì)有少部分人突然發(fā)現(xiàn)客戶端上不去了,具體表現(xiàn)為:雙擊打開客戶端 HeroesLauncher.exe 彈窗報(bào)錯(cuò),或者打開 TCGame 無響應(yīng)。

彈窗大概長(zhǎng)這樣:


(幾年前彈窗長(zhǎng)這樣:)

這個(gè)問題的神奇之處在于,大多數(shù)人可以正常上游戲,只有一小部分人會(huì)這樣報(bào)錯(cuò),而且可能換一個(gè)網(wǎng)絡(luò)/開一個(gè)加速器/重啟運(yùn)營(yíng)商光貓就解決了(當(dāng)然也有人所有方法都試過也沒解決)。
?
2. 錯(cuò)誤定位:
首先觀察客戶端所給的錯(cuò)誤描述,易見,打開客戶端或者登錄游戲必須首先讀取到截圖中網(wǎng)址http://mhupdate.tiancity.cn/zh-CN/PatchVersion.txt的內(nèi)容(幾年前則是網(wǎng)址http://heroespatch.mabinogiheroes.com.cn/zh-CN/EndPoint.txt),于是問題歸結(jié)于為什么部分網(wǎng)絡(luò)環(huán)境無法訪問到這個(gè)網(wǎng)址。
具體的定位過程省略,經(jīng)過億些對(duì)比實(shí)驗(yàn),觀察發(fā)現(xiàn):
在打開HeroesLauncher.exe彈窗報(bào)錯(cuò)的網(wǎng)絡(luò)A環(huán)境下,使用nslookup解析域名mhupdate.tiancity.cn得到的IP地址為:

而在正常登錄且正常打開TCGame的網(wǎng)絡(luò)B環(huán)境下,這時(shí)候使用nslookup解析域名mhupdate.tiancity.cn得到的IP地址為:

也就是說,報(bào)錯(cuò)的網(wǎng)絡(luò)A環(huán)境中,由于某種原因,出現(xiàn)了類似于DNS劫持的現(xiàn)象。然后在優(yōu)先級(jí)最高的本地hosts文件末尾加入死映射

果然可以正常打開客戶端

結(jié)合之前其他有效過的開加速器/重啟光貓之類的解決方案,不難得出結(jié)論,每次更新后之所以出現(xiàn)InternetOpen Failed問題,是因?yàn)樘斐筛潞笥蛎鹠hupdate.tiancity.com的IP地址發(fā)生更新,而你本地的DNS解析器緩存中的域名對(duì)應(yīng)IP不會(huì)自己更新,而我們熟知的是,域名解析流程是本地hosts文件、本地DNS解析器緩存、首選DNS服務(wù)器的一個(gè)順序,這就導(dǎo)致更新后你的客戶端在連接域名mhupdate.tiancity.com時(shí)還是調(diào)用DNS解析器緩存中的IP,未能連接DNS服務(wù)器獲得最新的IP地址。開加速器能更改網(wǎng)絡(luò)配置得到正確的IP、重啟光貓能清除DNS解析器緩存從而訪問DNS服務(wù)器獲得正確的IP,因而都可以解決本問題。而還是解決不了這個(gè)問題的玩家,可以嘗試終極方案:手動(dòng)更改hosts配置文件。
?
3. 解決方案:
首先,當(dāng)然確保你的網(wǎng)絡(luò)能正常訪問其它網(wǎng)站。如果你打開客戶端的時(shí)候還沒聯(lián)網(wǎng),那它肯定給你報(bào)InternetOpen Failed。
然后,開加速器和重啟光貓什么的當(dāng)然可以試一下。
最后,終極方案:
打開C:\Windows\System32\drivers\etc
打開hosts(修改hosts文件可以百度教程)
文件末尾添加139.215.251.80 mhupdate.tiancity.cn并保存

重新打開HeroesLauncher.exe,搞定
注意,你的電腦里很可能有某些軟件會(huì)保護(hù)hosts文件,讓他恢復(fù)備份狀態(tài);或者有可能你沒有提供管理員權(quán)限,無法保存修改狀態(tài)。請(qǐng)正確操作。
此外,域名mhupdate.tiancity.cn的IP地址可能還會(huì)不斷更新,當(dāng)你下一次發(fā)現(xiàn)又出現(xiàn)InternetOpen Failed的時(shí)候,可以自己手動(dòng)nslookup一下更新后的IP地址是多少,再去hosts文件里再改一下。
?
在你正確操作的情況下,如果終級(jí)方案仍然沒有解決你的問題,那就說明你的InternetOpen Failed錯(cuò)誤發(fā)生在別的地方。
?
至此,HeroesLauncher.exe打開報(bào)錯(cuò)的問題就徹底解決了。
?
至于TCGame,在未正確配置的網(wǎng)絡(luò)環(huán)境下,打開連報(bào)錯(cuò)都不給,直接無響應(yīng),那他驗(yàn)證版本所需要訪問的網(wǎng)址是什么就不得而知了。