关于HOSTS文件阻止网页内部URL及配置后仍加载目标资源的疑问
关于HOSTS文件阻止网页内部URL及配置后仍加载目标资源的疑问
嗨,我来帮你梳理下这个问题~首先你完全没误解hosts文件的作用,它确实是用来做本地域名解析优先拦截的——把example.com指向127.0.0.1后,理论上浏览器应该会尝试从本地加载该域名的资源,而本地没有对应服务的话,广告就会加载失败。那为啥没生效呢?大概率是这些常见原因在搞鬼:
- 浏览器DNS缓存没清:Firefox会缓存曾经解析过的域名结果,修改
hosts后旧缓存还在生效。你可以在地址栏输入about:networking#dns,打开页面后点击「清除DNS缓存」,之后重启浏览器再试试。 - 系统DNS缓存没刷新:修改
hosts后,系统层面的DNS缓存也需要更新。Windows用户可以打开命令提示符,输入ipconfig /flushdns;Mac用户用终端执行sudo dscacheutil -flushcache;Linux用户则可以试试sudo systemctl restart nscd(不同发行版可能有小差异),刷新完再重启浏览器。 - 广告用了未覆盖的子域名:你拦截的是主域名
example.com,但广告可能来自ads.example.com这类子域名,这类子域名没在hosts里配置的话,还是会正常解析。这种情况得把相关子域名也加到hosts里,比如加上127.0.0.1 ads.example.com。 - Firefox的DoH绕过了hosts:如果Firefox开启了「DNS over HTTPS(DoH)」,它会跳过系统的
hosts文件,直接用加密DNS查询域名。你可以在Firefox设置里搜索「DNS over HTTPS」,暂时关闭这个选项再测试效果。 - hosts条目格式有误:虽然你的示例看起来没问题,但偶尔会不小心用了全角空格、或者IP和域名之间分隔符不对(必须是半角空格/制表符),也会导致条目不生效。再检查下你的
hosts文件里的格式是否标准:127.0.0.1 example.com # just an example of course
备注:内容来源于stack exchange,提问作者ispiro
相关产品推荐
相关产品推荐

