首页 > 代码库 > 防止dns的重定向

防止dns的重定向

最近在访问一些网站时,经常页面闪现一下,然后就被重定向到一个丑陋异常的页面,显示:

    “尊敬的用户:您访问的域名有误或网页不存在,您可以使用我们提供的以下服务”


具体如下图:


打开Chrome的开发者工具,查看Nerwork Log(勾上Preserver Log复选框),找到当前页面的启动器(initiator),发现是来自

http://www.facebook.com/plugins/like.php?href=http://www.mamicode.com/http%3A%2F%2Fbootsnipp.com&width=130&height=20&colorscheme=light&layout=button_count&action=like&show_faces=false&send=true&appId=112989545392380

的一段脚本,将该页面另存为html文件,查看其源代码:

<html>
<script src=http://www.mamicode.com/"http://s23.cnzz.com/stat.php?id=5816172&web_id=5816172" language="JavaScript"></script>>


由此我们就明白了我们访问的目标页面一闪而过的原因了:

我们访问的页面引用了www.facebook.com域下的一个资源,而这个地球上貌似根本就不存在什么www.facebook.com,

所以dns很聪明的把www.facebook.com解析到了另一台主机,而这台主机就给我们返回了上面那段代码,于是也就产生了上面那张丑图。


遇到这种问题,我们有如下解决办法:

1.把http://www.facebook.com/plugins/like.php?。。。这个页面加入黑名单,比如使用Adblock Plus
2.修改hosts文件,把www.facebook.com这个不存在的域名解析到我们自己的主机

3.把返回上面那段烂代码的主机ip加入防火墙的黑名单里。


前两个方法之对特定访问不到的域好用,如果我们访问的页面引用了别的不存在的域(如google等),还要再麻烦一遍,毕竟不存在的东西还是很多的。

所以使用第三个方法最彻底,以我的CentOS 7 为例,需要如下操作:

1.找到要屏蔽的ip,如图:




2.把它加到防火墙黑名单中,如图:



防止dns的重定向