网站有时候遇到蜘蛛或者个别国家ip的恶意骚扰、攻击,怎么办呢?对于前者,也就对于守规矩的蜘蛛,那么我们可以通过向 robots.txt 文件中添加规则来限制、禁止其爬取,但对于那些恶意蜘蛛或 IP,robots.txt 显然不适用了。有些人使用插件来屏蔽一些地区的 IP,但是很多插件中对地区/国家的屏蔽是收费的。我这里说一种不用插件、不收费的方法。用此方法可以不让一些国家或一些地区的人/蜘蛛浏览或爬取你的网站。
WordPress平台中,将以下代码保存在php文件中,文件名自定,比如 blocked.php,上传到网站根目录:
<?php
$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 国际许可协议 进行许可,转载或引用本站文章应遵循相同协议。
-
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
-
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
-
本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
-
如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。
站长邮箱:xm520vip@gmail.com
本文链接:https://123.775n.com/post-520.html
发表评论