大网站会查询host的ip和域名是不是和自己的网站一样,不一样可能会阻止你访问或者做别的处理。也有可能是这些大网站防止其他网站盗链接自己网站的图片。 比如我登陆的是一个盗版某宝网站,点了某个页面域名后,重定向到host写的某个真某宝的ip地址去了
当我们需要屏蔽某些恶意网站或访问特定网址以及在内网做测试的时候,常常需要修改hosts 文件,但是会发现有时修改完却总是不生效,而且Windows7系统和Vista系统、XP系统都会碰到此类情况,所以研究一下解决此类问题的办法。
一般在LINUX下修改完/etc/hosts文件都会立即生效的,即便偶尔不生效,只要重启一下network服务就可以了。但是windows却是会遇到这样的问题,而且在不同版本的系统中还略有区别。
在解决问题之前,让我们了解一下dns和hosts的知识。我们知道在访问网站时,首先要通过DNS服务器把要访问的域名解析成IP地址后,我们才能在浏览器中看到所访问网站的页面内容。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有网络域名的映射关系。如果有,则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析,也就是说Hosts的请求级别比DNS高。
首先要知道hosts文件的位置,在xp,2000,win7等系统中找到如下位置C:\windows\system32\drivers\etc,我们可以看到hosts文件,注意hosts文件是ascii编码方式,而且是没有后缀名的。
其二正确修改hosts文件,一般hosts文件里面都会有个示例,比如 127.0.0.1 51cto.com 即代表打开51cto.com这个网址将解析到127.0.0.1,ip地址与网址间至少要有一空格,另外在最后一行书写映射时一定要加上回车再保存以避免最后一行不生效,如果某条记录暂时不用,只需要在它前面加一个#号即可。
hosts文件默认具有隐藏属性,系统默认设置情况下是看不到的,解决办法是打开我的电脑-点击工具-文件夹选项-查看-取消勾选隐藏受保护的系统文件,确定即可。如果修改后无法保存,请在Hosts文件上面点右键-属性-把只读属性去掉即可保存。
在修改HOSTS文件时候,还常常遇到修改保存后无效的情况,我们可以使用ipconfig /flushdns命令来刷新dns缓存, 或者也可以在管理工具中打开服务,找到DNS Client将其停用并改为手动模式在修改完hosts启动。
注意:当你在打开浏览器的情况下修改hosts文件时,关闭浏览器时系统才会释放掉hosts文件占用的那部分内存,我们再次打开浏览器访问就发现已经生效了。
如果遇到windows 7 操作系统无法打开和编辑的情况,一般是因为安全机制UAC造成的,你可以按着Shift键,然后Hosts文件上面右键,以管理员方式运行即可。或者修改Hosts文件权限,将当前登录的账号加入到安全选项卡中,赋予写入权。还有一种方法就是打开本地连接的Internet(TCP/IP)协议的属性页,点击常规选项卡中的高级按钮,选择WINS选项卡,勾选启用 LMHOSTS 查询,接着按下导入 LMHOSTS按钮,导入hosts文件,这样再次启动浏览器时,就会发现hosts文件生效了。
修改Hosts不生效的根本原因
因为服务器设置了 keep-alive !次要原因是存在浏览器 DNS 缓存和系统 DNS 缓存。
Keep-alive 相关文档
服务器在响应头设置了 Connection: keep-alive (一般的网页都会设置 keep-alive,保持长连接,避免多次连接产生网络消耗)之后,客户端会跟服务器保持长连接,只要长连接不断开,页面在请求的时候就不会重新解析域名!
我们可以这样来测试:
打开一个你至少两分钟没有打开的浏览器(你也可以关闭掉你的浏览器,然后重新打开,记得把所有的 tab 都关了,除了当前 tab _)
在 hosts 添加 127.0.0.1 www.taobao.com
新开 tab,打开 www.taobao.com,是不是进不去了 <这里说明 hosts 修改生效了>
注释掉刚才hosts修改,# 127.0.0.1 www.taobao.com ,再打开 www.taobao.com,很好,正常打开了 <这里说明 hosts 修改也生效了>
去掉注释符,127.0.0.1 www.taobao.com ,再打开 www.taobao.com,依然可以访问!!!
Chrome 中进入 chrome://net-internals/#sockets,