回答

收藏

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

SEO交流 SEO交流 103 人阅读 | 0 人回复 | 2024-10-25

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

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

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

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

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

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

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

  25. /**
  26. * 判断是否需要屏蔽访客
  27. *
  28. * @param string $userAgent User-Agent头部信息
  29. * @return bool 是否需要屏蔽访客
  30. */
  31. function shouldBlockVisitor($userAgent)
  32. {
  33. if ($detectSpiders) {
  34. $spiders = [
  35. 'Baiduspider',
  36. '360Spider',
  37. 'Sogou',
  38. 'bingbot',
  39. 'Bytespider',
  40. 'YisouSpider'
  41. ];

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

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

  53. return true; // 需要屏蔽访客
  54. }

  55. /**
  56. * 判断IP地址是否在白名单中
  57. *
  58. * @param string $userIP 用户IP地址
  59. * @return bool 是否在白名单中
  60. */
  61. function isWhiteListed($userIP)
  62. {
  63. $whiteList = ['220.181.108']; // 示例IP地址段

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

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

  72. /**
  73. * 屏蔽访客并返回错误页面
  74. */
  75. function blockVisitor()
  76. {
  77. include 'fk.php'; // 加载错误页面
  78. }
复制代码
以上代码转载至:https://www.niuniubbs.com/thread-5089-1-1.html

分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则