什么是 hosts 文件?
hosts 文件是一个没有扩展名的纯文本文件,它的作用是将域名(www.google.com)映射到特定的 IP 地址(250.74.100),当你访问一个网站时,你的设备会先查询 hosts 文件,看是否有对应的 IP 地址,如果有,设备会直接访问该 IP;如果没有,才会去 DNS 服务器查询。

hosts 文件可以让你:
- 屏蔽广告和追踪器: 将广告域名指向一个无效的 IP 地址(如
0.0.1或0.0.0)。 - 访问测试/本地网站: 将域名指向你本地开发服务器(如
0.0.1)。 - 解锁或修改网络服务: 将某个服务的域名指向其备用服务器(有一定风险)。
在安卓设备上修改 hosts 文件的挑战
与 Windows 或 macOS 不同,安卓系统出于安全考虑,普通应用没有权限直接修改系统级的 hosts 文件,这个文件位于系统的只读分区中。
安卓的 hosts 文件路径通常是:
/etc/hosts
直接用 Root 权限修改这个文件是最直接的方法,但对于大多数用户来说风险较高,主流的解决方案是利用安卓系统的一个“备用” hosts 文件机制。

使用专用 App(推荐,无需 Root)
这是最简单、最安全、最适合普通用户的方法,这类 App 通过 Android 的 VPN 或本地代理服务,在系统访问网络时,将你自定义的 hosts 规则注入其中,从而实现与修改系统 hosts 文件相同的效果。
推荐应用:AdGuard for Android
AdGuard 是一款功能强大的广告拦截器,其核心原理就是利用一个可自定义的 hosts 文件,你不仅可以使用它内置的庞大规则库,还可以手动添加自己的规则。
操作步骤:
-
下载并安装 AdGuard for Android: 你可以在 Google Play 商店或 F-Droid 上下载。
-
授予必要权限: 首次打开时,App 会请求“VPN 权限”,这是它正常工作的关键,它并不是真的要连接一个 VPN 服务器,而是为了获取网络流量以便进行过滤,请务必授予。
-
找到自定义规则设置:
- 打开 AdGuard,点击右下角的 “菜单” 图标(三条横线)。
- 选择 “过滤”。
- 在过滤规则列表中,找到并点击 “自定义过滤规则”。
-
添加你的
hosts规则:- 点击屏幕右上角的 号(添加规则)。
- 在弹出的窗口中,输入你的规则,格式与标准的
hosts文件完全一样:IP地址 域名 - 屏蔽广告/域名示例:
将域名指向
0.0.0是一个好习惯,因为它比0.0.1更明确地表示“无此地址”。0.0.0 ads.example.com 0.0.0.0 tracker.network.com - 指向本地服务器示例:
0.0.1 my-dev-site.local - 输入完成后,点击右上角的 或 “保存”。
-
启用规则: 添加的规则默认是启用的,你可以在“自定义过滤规则”列表中看到它,并且左侧的开关应该是打开状态。
-
刷新 DNS 缓存(可选但推荐): 有时修改后可能不会立即生效,这是因为系统或 App 的 DNS 缓存,你可以:
- 在 AdGuard 的设置中寻找“刷新 DNS”的选项。
- 或者简单地重启手机的 Wi-Fi。
- 重启手机也能确保所有设置生效。
优点:
- 无需 Root,非常安全。
- 操作简单,图形化界面。
- 除了
hosts功能,还能提供强大的广告和隐私保护。
缺点:
- 由于使用了 VPN 模式,可能会略微增加一些电量消耗(现代设备上影响很小)。
- 少数依赖 VPN 的应用可能会与它产生冲突。
使用终端模拟器 App(需要 Root)
如果你已经为你的安卓设备获取了 Root 权限,那么直接修改 /etc/hosts 文件是最根本的方法。
推荐应用:Termux
操作步骤:
-
安装 Termux: 从 Google Play 商店或 F-Droid 安装 Termux。
-
获取 Root 权限: 你需要一个 Root 管理器 App(如 Magisk、SuperSU)来授予 Termux Root 权限,在 Termux 中输入
su命令后,Root 管理器 App 会弹窗请求授权。 -
编辑
hosts文件:- 打开 Termux。
- 输入以下命令进入
hosts文件所在的目录:cd /etc
- 使用
vi或nano编辑器打开文件(nano对新手更友好):nano hosts
- 在打开的编辑器中,你可以像在任何文本编辑器中一样,添加、修改或删除规则,在文件末尾添加:
0.0.0 baddomain.com - 编辑完成后,按
Ctrl + X,然后按Y保存,最后按Enter确认文件名。
-
设置正确的文件权限: 修改后,最好确保文件权限正确,输入以下命令:
chmod 644 hosts
-
重启或刷新 DNS: 修改系统
hosts文件后,重启手机是最稳妥的确保所有应用都加载新规则的方法,或者你也可以尝试重启网络服务(命令较复杂,因设备而异)。
优点:
- 最直接、最根本的修改方式。
- 不需要依赖任何第三方服务(如 VPN)。
- 功能强大,可以配合 Shell 脚本自动化管理。
缺点:
- 需要 Root 权限,有使设备变砖或安全风险。
- 操作相对复杂,不适合新手。
hosts 文件格式和常用规则示例
基本格式
[IP地址] [空格或Tab] [域名]
- 开头的是注释,会被忽略。
常用 IP 地址
0.0.1:本地环回地址,指向设备自己,如果设备上没有运行对应的服务,访问该域名通常会失败。0.0.0:一个“无地址”地址,将其作为目标 IP 是屏蔽域名的最佳实践,因为它不会尝试连接任何地方,直接返回失败。
规则示例
# 屏蔽 Google Analytics 0.0.0.0 www.google-analytics.com 0.0.0.0 google-analytics.com # 屏蔽 Facebook 追踪器 0.0.0.0 connect.facebook.net 0.0.0.0 facebook.com # 将开发环境域名指向本地服务器 127.0.0.1 my-app.dev
总结与建议
| 方法 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|
| 专用 App (如 AdGuard) | 无需 Root,安全简单,功能强大 | 轻微电量/流量消耗,可能与少数 App 冲突 | 绝大多数安卓用户,强烈推荐 |
| 终端模拟器 (需 Root) | 根本性修改,无额外开销 | 需要 Root,有风险,操作复杂 | 已 Root 用户,高级用户,开发者 |
给你的建议:
- 如果你只是想屏蔽广告或修改几个域名:直接使用 AdGuard 或类似的广告拦截 App,这是最省心、最安全的选择。
- 如果你是开发者,需要在本地测试网站:AdGuard 同样可以完美胜任,只需将你的本地域名指向
0.0.1即可。 - 如果你已经 Root 了你的手机,并且追求最纯净的解决方案:可以使用 Termux 来直接修改
/etc/hosts文件,但请务必小心操作。
