• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

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

WP其他 奇跡の海 2年前 (2017-08-27) 787次浏览 已收录 0个评论 扫描二维码

问题简介

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

修改方案

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

<?php header("Content-type: text/html; charset=utf-8"); $verification1 = '乌克兰'; //需要屏蔽的国家 $verification2 = '北京市'; //需要屏蔽的地区 $ip = $_SERVER['REMOTE_ADDR'];// 获取访客IP $antecedents = $_SERVER['HTTP_REFERER']; // 访客来路地址 $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip); // IP数据库来自淘宝。 $address = json_decode($result,true); //判断访客是否属所设置地区或国家 if($address['data']['country'] == $verification1 || $address['data']['region'] == $verification2){ echo "网站维护中。。。"; exit(); } ?>

然后在 wp-config.php中添加一句:

require_once(ABSPATH . 'blocked.php');

当然,这样的输出结果 http 返回状态码是200,如果我们想自定义状态码,怎么弄呢?
可将

echo "网站维护中。。。";
exit();

替换成:

sleep(999999999); // 设置一个时间为999999秒。空白页,经历漫长的等待时间后才能打开。
Header("HTTP/1.1 204 No Content");

或者将

echo "网站维护中。。。";
exit();

替换成:

header('HTTP/1.1 403 Forbidden');
header('Status: 403 Forbidden: Access is denied');
echo "You do not have permission to view this directory or page using the credentials you supplied.";
exit();

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

转自:时光在路上


版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->利用淘宝IP地址数据库屏蔽来自一些国家或地区的访问!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址