防采集一直以来都是大家都在研究的问题,至于采集的性质我们就不去做过多的评论了,接下来我们就解决一下问题才是真理。
我们的思路是当同一ip在一秒钟时间内访问站内页面超过3个的时候,ip将会被记录到指定文件,并且只能看到提前设置好的指定的内容。(同时放过220.、116开头的蜘蛛ip)
代码如下:
网站根目录建立/logs文件夹,用于记录被拉黑ip
function track_ips() {
// 设定记录文件路径
$log_file = '/www/wwwroot/根目录/logs/wordpress_ips.log';
// 获取访问者IP地址
$ip_address = $_SERVER['REMOTE_ADDR'];
// 获取当前时间戳
$timestamp = time();
// 从记录文件中读取已记录的IP列表
$ips = file($log_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// 记录当前IP地址和时间戳到记录文件
$line = "$ip_address,$timestamp\n";
file_put_contents($log_file, $line, FILE_APPEND | LOCK_EX);
// 如果同一IP在1秒内访问超过3个页面,则将其加入黑名单
$count = 0;
foreach ($ips as $row) {
list($ip, $time) = explode(',', $row);
if ($ip == $ip_address && $timestamp - $time < 1) {