saber 酱的抱枕

Fly me to the moon

12/2
2015
学习

网站屏蔽国内访问的办法

之前有篇文章:《屏蔽北京地区对网站的访问》,用的是判断ip归属地的方法。现在又有个网站要屏蔽国内访问。新浪的这个api返回了国家或地区的名称,不妨一试。

<script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" type="text/ecmascript"></script>
<script type="text/javascript">
	var country=remote_ip_info["country"];
	if(country=="中国"){
		// do someting
	 }
 </script>

另外有个“邪门”的办法:判断浏览器语言。

if ((navigator.language || navigator.browserLanguage).toLowerCase()=="zh-cn") {
  newwin = window.open("","_parent","");  
  newwin.close(); 
  location.href="http://404";
};

如果浏览器语言设置是zh-cn,百分之九十九是中国的,然后就看你怎么做了。

这段代码里有四个兼容性处理的地方。一是获取浏览器语言设置(IE6、7、8不支持navigator.language);二是将语言设置转换为小写(大多数浏览器都是zh-CN,但ie8是全小写的);三是大括号内的代码,关闭当前页面(如果直接用window.close()的话ie7和8会弹出个对话框询问你是否同意关闭页面)(IE爆炸吧!)。最后一句姑且算是兼容性处理,因为在手机浏览器上无法用js关闭页面,只好跳转到一个错误网址去。


做的这么费劲,效果未必能很好。这两种屏蔽方法都是加在网页里的,也就是说客户端(浏览器)可以禁用js来查看网页,或者直接审查对应网址的源代码。理想的办法是在后台屏蔽,这样客户端什么都获取不到。而且光是网站后台还不一定行,在web服务器层面屏蔽可能才最有效。

网站屏蔽国内访问的办法