wsknnh 发表于 2024-10-25 19:14:35

实现IP地址屏蔽和白名单功能的php代码

这段代码主要实现了一个屏蔽访客的功能,用于在网站管理后台中限制一些不需要访问的访客。具体来说,这段代码通过检查用户的IP地址和User-Agent头部信息,判断是否需要屏蔽访客。如果需要屏蔽访客,则会加载错误页面,并退出脚本执行。同时,该代码还支持白名单功能,可以将一些特定的IP地址段添加到白名单中,从而允许这些IP地址访问网站。此外,该代码还支持检测爬虫和搜索引擎等特殊访客,并根据情况决定是否屏蔽这些访客总的来说,这段代码的作用是保护网站安全,控制访客数量和质量,从而防止不必要的恶意攻击和非法访问。<?php

// 配置文件路径
$configPath = 'admin/config.php';

// 获取用户IP地址和User-Agent头部信息
$userIP = getuserIP(); // 获取用户IP地址
$userAgent = $_SERVER['HTTP_USER_AGENT']; // 获取User-Agent头部信息

// 加载配置文件
if (file_exists($configPath)) {
include_once $configPath; // 如果配置文件存在,则加载配置文件
} else {
exit('配置文件不存在'); // 配置文件不存在,退出脚本执行,并输出错误消息
}

// 判断是否需要屏蔽访客
if ($blockVisitors && !isWhiteListed($userIP) && shouldBlockVisitor($userAgent)) {
blockVisitor(); // 屏蔽访客,并返回错误页面
exit(); // 退出脚本执行
}

// 判断是否需要屏蔽特定IP段
if ($blockIPRange && !isWhiteListed($userIP) && shouldBlockVisitor($userAgent)) {
blockVisitor(); // 屏蔽访客,并返回错误页面
exit(); // 退出脚本执行
}

// 未开启屏蔽访客功能
// echo "未开启屏蔽访客功能";

/**
* 判断是否需要屏蔽访客
*
* @param string $userAgent User-Agent头部信息
* @return bool 是否需要屏蔽访客
*/
function shouldBlockVisitor($userAgent)
{
if ($detectSpiders) {
$spiders = [
'Baiduspider',
'360Spider',
'Sogou',
'bingbot',
'Bytespider',
'YisouSpider'
];

// 检查User-Agent是否包含爬虫关键词
foreach ($spiders as $spider) {
if (stripos($userAgent, $spider) !== false) {
return false; // 如果是爬虫,则不需要屏蔽访客
}
}
}

// 检查是否是搜索引擎来路的访客
if (isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'baidu.com') !== false) {
return false; // 如果是搜索引擎来路的访客,则不需要屏蔽访客
}

return true; // 需要屏蔽访客
}

/**
* 判断IP地址是否在白名单中
*
* @param string $userIP 用户IP地址
* @return bool 是否在白名单中
*/
function isWhiteListed($userIP)
{
$whiteList = ['220.181.108']; // 示例IP地址段

// 检查用户IP地址是否在白名单中
foreach ($whiteList as $ipSegment) {
if (strpos($userIP, $ipSegment) === 0) {
return true; // 在白名单中,不需要屏蔽访客
}
}

return false; // 不在白名单中,需要屏蔽访客
}

/**
* 屏蔽访客并返回错误页面
*/
function blockVisitor()
{
include 'fk.php'; // 加载错误页面
}以上代码转载至:https://www.niuniubbs.com/thread-5089-1-1.html
页: [1]
查看完整版本: 实现IP地址屏蔽和白名单功能的php代码