当前位置:首页 >>wordpress使用教程 > 正文

WordPress如何禁止同一个ip访问次数,同时排除蜘蛛访问

百度: 已收录 | 发布日期:2023-09-12 16:13:54 | 浏览:99 次

很多时候我们需要对网站做一些措施, 比如同一个ip不能一次性访问太多次, 我们可以限制一个ip同一个时间段访问的次数. 这里是访问60秒也是一分钟

1、把下面的代码添加到模板函数文件functions.php,这里我们禁止了国内比较常见的一些蜘蛛比如,baidu,sogou,bing等蜘蛛.

//同一个ip只允许访问5次
function limit_requests_per_minute() {
// 获取用户代理标头
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';

// 常见国内搜索引擎蜘蛛的用户代理字符串
$china_spiders = array(
'Baiduspider',
'360Spider',
'Sogou web spider',
'YoudaoBot',
'Sosospider',
'bingbot',
'SMJB',
// 添加其他蜘蛛的用户代理字符串
);

// 检查用户代理标头是否包含蜘蛛标识
foreach ($china_spiders as $spider) {
if (stripos($user_agent, $spider) !== false) {
// 如果是蜘蛛访问, 则不进行IP限制
return;
}
}

// 如果不是蜘蛛访问, 继续进行IP限制检查
if (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
$requests = get_transient('ip_request_count_' . $ip);
if (false === $requests) {
$requests = 0;
}
$requests++;
set_transient('ip_request_count_' . $ip, $requests, 60); // 60秒内
if ($requests > 5) {
header('HTTP/1.1 403 Forbidden');
die('Forbidden');
}
}
}
add_action('init', 'limit_requests_per_minute');

2、保存后我们在网站随机访问5个链接试试

3、如果你需要自己修改, 我们可以修改这里的数字

3.1、set_transient(‘ip_request_count_’ . $ip, $requests, 60); // 60秒内if ($requests > 5)

3.2、60代表60秒也是一分钟, 比如5分钟那么就是300秒

3.3、if ($requests > 5是页面你可以修改10或者更多

99%的人还阅读了:

版权声明:本文由作者:卡卡哥服务器教程网 原创创作,本站内容不允许转载,如发现转载必追究法律责任!! 本文链接:https://yunfuwuqi.chinahzx.cn/wordpress/434.html
本文标签: