利用淘宝IP地址数据库屏蔽来自一些国家或地区的访问

kmwl520 建站经验 0

网站有时候遇到蜘蛛或者个别国家ip的恶意骚扰、攻击,怎么办呢?对于前者,也就对于守规矩的蜘蛛,那么我们可以通过向 robots.txt 文件中添加规则来限制、禁止其爬取,但对于那些恶意蜘蛛或 IP,robots.txt 显然不适用了。有些人使用插件来屏蔽一些地区的 IP,但是很多插件中对地区/国家的屏蔽是收费的。我这里说一种不用插件、不收费的方法。用此方法可以不让一些国家或一些地区的人/蜘蛛浏览或爬取你的网站。  

WordPress平台中,将以下代码保存在php文件中,文件名自定,比如 blocked.php,上传到网站根目录:

  1. <?php

  2. header("Content-type: text/html; charset=utf-8");

  3. $verification1 = '乌克兰'; //需要屏蔽的国家

  4. $verification2 = '北京市'; //需要屏蔽的地区

  5. $ip = $_SERVER['REMOTE_ADDR'];// 获取访客IP

  6. $antecedents = $_SERVER['HTTP_REFERER']; // 访客来路地址

  7. $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip); // IP数据库来自淘宝。

  8. $address = json_decode($result,true);

  9. //判断访客是否属所设置地区或国家

  10. if($address['data']['country'] == $verification1 || $address['data']['region'] == $verification2){

  11.         echo "网站维护中。。。";

  12.         exit();

  13. }

  14. ?>

然后在 wp-config.php中添加一句: require_once(ABSPATH . 'blocked.php');     当然,这样的输出结果 http 返回状态码是200,如果我们想自定义状态码,怎么弄呢? 可将

  1. echo "网站维护中。。。";

  2. exit();

替换成:

  1. sleep(999999999); // 设置一个时间为999999秒。空白页,经历漫长的等待时间后才能打开。

  2. Header("HTTP/1.1 204 No Content");

    或者将

  1. echo "网站维护中。。。";

  2. exit();

替换成:

 
  1. header('HTTP/1.1 403 Forbidden');

  2. header('Status: 403 Forbidden: Access is denied');

  3. echo "You do not have permission to view this directory or page using the credentials you supplied.";

  4. exit();

  其他返回代码可以自行搜索一下相关文章。 需要提醒的是,淘宝有一点限制:每个用户的访问频率需小于10qps 。 对于经过 CDN 的网站,该方法可能并不适用,请在 CDN 服务商那里设置有关 Referrer 或 ip 的参数。你也可以通过js代码来实现,这里不多说了。


 高清美女大图片  上海第一美女  性感meinv  人体模特图片  psp美女壁纸 
 信阳毛尖的功效  南瓜子的副作用  佛手的功效  lol曙光女神  于大小姐 
标签关键词:

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件xm520vip@gmail.com与我们联系处理。敬请谅解!

欢迎 发表评论:

请填写验证码