如何屏蔽国人访问网站

有些外贸网站, 很多时候会禁止国人访问。因为国人访问,一方面带来了服务器压力,另一方面可能觉得自己的外贸网站产品不想被国人抄袭。总之,多种原因吧。

屏蔽国人访问有两种常用的方法:1.屏蔽国人ip(一般翻墙就可以解决)2,屏蔽国人浏览器(此方法可以通过浏览器设置来解决)

刚好,我也做了一个小站,不想让国人访问。我觉得屏蔽国人浏览器比较简单,而且很多国人都不知道所以然,任他换各国的vpn也访问不了。下面说一下这个方法(针对nginx 服务器的方法):

原理很简单:浏览器请求网站的时候,会给服务器发送一个请求头(Request Headers)信息。其中头信息里包含一个:Accept-Language:”zh-CN,zh;(中文浏览器就是zh-CN,zh.英文浏览器是:en-US,en)。只需要nginx服务器根据头信息里是否出现zh就可以屏蔽掉。

所以如果要在Nginx中阻止屏蔽浏览器访问,可以在Server中加入(记得重启nginx):

if ($http_accept_language ~* ^zh) { return 404;}

关于ip屏蔽, 感觉比较麻烦。自己也没尝试过。就复制一下网上的方法做以后备用参考:

Nginx中阻止屏蔽中国IP访问
#下载中国IP库
wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone

#运行以下脚本
#!/bin/bash

COUNTRY = "cn"
IPTABLES = /sbin/iptables
EGREP = /bin/egrep

if [ "$(id -u)" != "0" ]; then
   echo "you must be root" 1>&2
   exit 1
fi

resetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}

resetrules

for c in $COUNTRY
do
        country_file = $c.zone

        IPS = $($EGREP -v "^#|^$" $country_file)
        for ip in $IPS
        do
           echo "blocking $ip"
           $IPTABLES -A INPUT -s $ip -j DROP
        done
done

exit 0

看上面的代码,应该是通过linux服务器防火墙iptables规则屏蔽的ip

You may also like...