直接修改Windows hosts文件可实现域名强制解析:以管理员身份用记事本打开C:\Windows\System32\drivers\etc\hosts,末尾添加“IP 域名”格式映射,保存后执行ipconfig /flushdns刷新缓存,并用ping或nslookup验证生效。
直接修改 windows 系统的 hosts 文件就能实现域名强制劫持——这不是黑客攻击,而是操作系统自带的本地解析机制:只要在该文件里写入 ip 和域名的对应关系,系统访问这个域名时就永远绕过 dns,直连你指定的地址。
找到并安全打开 hosts 文件
文件真实路径是:C:\Windows\System32\drivers\etc\hosts,它没有扩展名,且默认受系统保护。不能双击打开,也不能用普通记事本编辑。
- 推荐做法:按下 Win + R,输入
notepad %windir%\system32\drivers\etc\hosts,回车;若弹出 UAC 提示,点“是”允许提权 - 如果提示“无法保存”,说明没获得管理员权限——务必用“以管理员身份运行记事本”再打开,或改用 PowerShell 强制写入
- 编辑前建议先备份原文件(复制一份到桌面),防止误操作导致全网域名解析异常
添加劫持规则(格式必须正确)
每行一条映射,格式统一为:IP地址 + 至少一个空格或制表符 + 域名,不支持注释符号(#)开头的行参与解析,但可用 # 写说明(需单独成行)。
- 想把
www.testsite.local指向本地开发服务?写:127.0.0.1 www.testsite.local - 想让
api.example.com走测试服务器?写:192.168.5.200 api.example.com - 屏蔽广告域名?可指向无效地址:
0.0.0.0 adserver.net或127.0.0.1 tracker.xyz - 注意:多个子域名要单独写,
example.com和www.example.com是两条不同规则
保存后立即生效,但需刷新 DNS 缓存
修改保存后,系统不会自动清空旧的 DNS 缓存记录,旧解析结果可能还在内存中,导致劫持看似“没起作用”。
- 以管理员身份打开命令提示符或 PowerShell,执行:
ipconfig /flushdns - 验证是否生效:运行
ping www.testsite.local,看返回的 IP 是否是你写的那个;再用nslookup www.testsite.local,确认结果来自“DNS 服务器: 未指定”,说明已走 hosts 而非网络 DNS - 浏览器访问前建议用无痕窗口(Ctrl+Shift+N),避免被缓存的 HTTPS 重定向或 HSTS 策略干扰
注意事项和常见问题
hosts 劫持简单有效,但也容易踩坑:
- 文件编码必须是 ANSI 或 UTF-8 无 BOM,用记事本保存时别选“UTF-8 带签名”,否则可能导致解析失败
- HTTPS 网站若证书不匹配该域名,浏览器会报“您的连接不是私密连接”,这是正常现象,和劫持本身无关
- 恶意软件常篡改 hosts 来劫持银行、搜索等关键域名,如发现异常跳转,可检查该文件是否被注入大量 127.0.0.1 规则
- 该配置只对当前电脑生效,不影响局域网其他设备,也不经过路由器或上级 DNS


















