修改hosts文件后域名仍可访问,根本原因是windows的smhnr缓存未清除,它绕过hosts直查dns且优先级更高;需取消hosts只读属性、以管理员权限编辑确认写入,并依次执行clear-dnsclientcache和ipconfig /flushdns清空双缓存。

修改Hosts文件后本该拦截的域名仍能正常访问,说明系统仍在调用旧解析结果,根本原因是Windows的“智能多宿主名称解析”(SMHNR)缓存未被清除,它会绕过hosts直接查DNS,且优先级高于普通DNS缓存。
确认hosts文件已真正写入
右键点击 C:\Windows\System32\drivers\etc\hosts → 选择「属性」→ 取消勾选“只读”→ 点击“应用”。【不取消只读,所有编辑都只是临时显示,根本不会保存】
用管理员权限启动记事本 → 文件 → 打开 → 路径栏粘贴 C:\Windows\System32\drivers\etc\ → 文件类型选“所有文件” → 点击 hosts 文件 → 手动滚动到底部,核对你添加的那行是否真实存在。
彻底清除SMHNR缓存(关键步骤)
按 Win + X → 选择「Windows PowerShell(管理员)」或「终端(管理员)」→ 依次执行以下两条命令:
Clear-DnsClientCache
ipconfig /flushdns
一款AI工具,主要用于一款基于 Rust 的快速无头浏览器自动化命令行工具(CLI),支持 Node.js 回退机制,可使 AI agent 通过结构化命令实现页面导航、点击、输入及截图,适合需要提升相关任务效率的用户。
这两条命令缺一不可:第一条专清SMHNR缓存,第二条清传统DNS缓存。只执行后者,拦截依然无效。
验证拦截是否生效
方法一:命令行验证
在普通CMD或PowerShell窗口中输入:ping -n 1 your-blocked-domain.com → 观察返回的IP是否为你在hosts中指定的地址(如127.0.0.1)。若返回的是公网IP,说明缓存未清干净或hosts未生效。
方法二:浏览器隐身窗口直连
关闭所有浏览器窗口 → 打开Chrome/Firefox的无痕/隐私窗口 → 直接访问被拦截域名 → 如果页面加载成功,说明hosts未起作用;如果出现连接被拒绝或空白页,说明拦截已生效。
注意:不要用原标签页测试,浏览器自身DNS缓存可能长达数小时,必须用全新进程。










