WordPress屏蔽禁止某个城市ip防止爬虫导致内存占满

使用场景:

最近网站被河南郑州大批量爬虫,导致cpu和内存100%网站负载100%,分析了网站访问日志,发现大量的爬虫采集程序访问网站,手段是通过采集插件或者爬虫软件对网站文章和路径大批量访问get请求。

适用场景:

单一城市代理ip地址重复get网站,可以针对某个城市的请求进行禁止,可以封锁一段时间后观察网站日志,选择合适的时间放开即可

(爬虫使用代理爬取网站文章和热词内容)

百度相关:(查询的大部分结果类似)

通过百度找到了大量的相关于该类的禁止方式和方法此方式已不再适用,相关代码展示如下:

<?php
/**
 *
 * test.php(屏蔽国家IP)
 *
 */
$verification = '美国';//需要屏蔽国家的IP
function get_client_ip() { 
               $ip = $_SERVER['REMOTE_ADDR'];     
         if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {            
         $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {             
         $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {           
         $ip = $_SERVER['HTTP_CLIENT_IP'];       
         }          
         return $ip;    
         }
$ip = get_client_ip();//获取访客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'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
        sleep(10);//设置一个10秒等待。
        header('HTTP/1.1 503 Service Temporarily Unavailable');
        header('Status: 503 Service Temporarily Unavailable');
        header('Retry-After: 3600000');
        exit;
}
?>

原因是因为淘宝提供的api已经停止了。

(源接口请求访问已无法正常打开)

(淘宝官方通知下线通告)

百度地图:

思路:因为百度提供了相关的地址查询服务,不过需要自己注册和认证下。认证过后需要自己创建和申请创建应用:点我前往>>>

TIPS: 1、只有IP白名单内的服务器才能成功发起调用格式: 202.198.16.3,202.198.0.0/16 填写IP地址或IP前缀网段,英文半角逗号分隔如果不想对IP做任何限制,请设置为0.0.0.0/0 (谨慎使用,AK如果泄露配额会被其用户消费,上线前可以用作Debug,线上正式ak请设置合理的IP白名单) 2、因新系统升级,自公告之日起,“服务端AK”不再支持浏览器端使用;在浏览器端使用,请选择“浏览器端AK”,例如JavaScript API只支持浏览器类型AK。 对于以前申请的服务端AK,不变更即不受影响,仍支持浏览器端使用;如更新老的服务端AK,再次保存,则按新创建AK处理,不再支持浏览器端使用。

使用方法:

可以将上面的代码请求地址改为:
https://api.map.baidu.com/location/ip?ak=应用ak&ip={$ip} 需要将申请创建下来的应用ak填写在上面。

本站方式:

将下述代码放在主题的function.php下即可使用:(百度地图api方式)

玩技e族

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值