修改 /etc/hosts 可在本地建立域名解析對應,實現廣告攔截、開發測試、繞過 DNS 污染訪問特定服務。Android 將 hosts 放在 /system/etc/hosts,需 Root 權限修改。
/system/etc/,找到 hosts 檔案(無副檔名)。
hosts → 選擇 「以文字編輯器開啟」。
IP地址 域名。常見用法:# 格式:IP 域名 [別名...]
# 廣告/追蹤攔截(指向本機回環)
127.0.0.1 ads.google.com
127.0.0.1 analytics.google.com
0.0.0.0 pagead2.googlesyndication.com
# 開發測試:指向內網/測試伺服器
192.168.1.100 api.dev.myapp.com
10.0.0.5 test.backend.local
# 繞過 DNS 污染(需確認目標 IP 穩定)
142.250.190.46 www.google.com
ping 域名 或瀏覽器訪問。dns.adguard.com、dns.nextdns.io 等支援攔截清單的 DoH 提供商。echo "127.0.0.1 bad.com" >> /system/etc/hosts。| 問題 | 原因 | 解決 |
|---|---|---|
| 修改後不生效 | DNS 快取/瀏覽器快取/應用自有 DNS (DoH) | 清除瀏覽器快取、關閉應用 DoH、重啟手機、使用 VPN 模式工具 |
| OTA 升級後失效 | /system 分區被覆蓋 | 重新套用、使用 Magisk 模組「Hosts」實現開機自動注入 |
| 系統無法開機 | hosts 格式錯誤/關鍵系統域名被攔截 | 進 Recovery 掛載 /system 刪除/恢復 hosts、或刷回 stock boot.img |
| 部份 App 仍顯示廣告 | App 使用硬編碼 IP/DoH/憑證釘選 | 需配合抓包分析、或使用模組化攔截(如 AdGuard 核心) |
logcat 或抓包驗證攔截生效。修改 hosts 是 Android 進階用戶的基礎技能,善用工具自動化維護,享受淨化後的網路環境。