AI摘要

本文介绍了一款Typecho高级IP访问控制插件——AdvancedBlockIP,它具有智能防护模式、精确的IP规则匹配和自动化管理功能。插件能够自动拦截恶意爬虫、暴力破解和垃圾评论等网络威胁,支持多种IP地址格式,并提供实时日志记录和可视化统计。用户可以根据网站类型选择合适的工作模式和黑名单处理方式,并设置访问间隔。插件还提供了详细的使用建议和监控要点,以确保网站安全。最新版本v2.2.0优化了IP规则匹配和智能检测机制,提高了拦截准确性,减少了误判,并新增了调试模式。

前言

前段时间给博客加了一个访客统计才发现有好多采集IP等,特点就是:一秒读一个页面,两分钟就把我网站所有页面、标签、文章都访问了个遍,还有广东的更过分,多个ip同时访问等,总之不像是真人访问的。

然后我就找了一个Typecho黑名单拦截的插件,十年前的BlockIP,作者就已经很久没更新了。我就想要是自动拦截并加入黑名单的应该很好用,于是就进行了改造。

改造期间我在知乎问了一下这个情况,知道了一个叫长亭雷池的,但是它里面的智能防护太严格,甚至把我自己的后台的编辑文章,外观设置等很多行为都进行检测拦截,然后设置了白名单效果也不太好。可能完美的设置需要升级或者我还没弄明白。所以就继续改造。

到现在自己也内测了几周,感觉没什麽问题了,就整理出这个AdvancedBlockIP。由于拦截依据和频率等检测出于我自己的看法经验,可能效果欠佳,希望各位能够在Github提Issues或者在评论区提出

介绍

在当今互联网环境下,网站安全变得越来越重要。恶意爬虫、暴力破解、垃圾评论等问题时刻威胁着我们的网站。今天给大家介绍一款强大的Typecho安全插件——高级IP访问控制插件,它能够智能识别并拦截各种网络威胁。

插件预览

后台控制面板



被拦截效果(可自定义html)

插件特色功能

智能防护模式

插件默认启用智能模式,不需要复杂配置就能自动识别以下威胁:

威胁类型检测机制自动处理
频率异常1秒内访问2个不同URL
5秒内访问3次及以上
10秒内访问6次及以上
自动加入黑名单并标记
UA异常检测可疑的用户代理
识别爬虫工具、脚本程序等
自动加入黑名单并标记
来源异常识别包含攻击关键词的来源页面自动加入黑名单并标记
行为模式异常分析访问行为,发现自动化攻击模式自动加入黑名单并标记

精确的IP规则匹配

支持多种IP地址格式,满足不同场景需求:

规则类型格式示例说明
单个IP192.168.1.100精确匹配单个IP地址
IP范围192.168.1.1-50匹配指定范围内的IP
单个通配符192.168.1.*匹配最后一段的所有IP
多个通配符192.168.*.*匹配多段的所有IP
CIDR格式192.168.1.0/24匹配指定网段的所有IP
行内注释192.168.1.100 # 备注支持在规则后添加注释

自动化管理

  • 自动黑名单:智能检测触发时自动将威胁IP加入黑名单
  • 分类标记:按检测类型自动标记【频率异常】【UA异常】【来源异常】【行为异常】
  • 访问间隔控制:防止过于频繁的访问请求
  • 实时日志记录:详细记录所有拦截事件
  • 可视化统计:24小时趋势图表,一目了然

安装及更新步骤

  1. 将插件文件解压到Typecho的插件目录:/usr/plugins/AdvancedBlockIP/
  2. 在Typecho后台的"控制台 → 插件"页面找到"AdvancedBlockIP",点击激活
  3. 激活后插件会自动创建数据表,默认已选择智能模式,基本上可以直接使用
  4. 直接用新版本覆盖掉旧版本即可

配置建议

工作模式选择

模式适用场景特点
智能模式大多数网站黑白名单同时生效
自动识别威胁
推荐使用
黑名单模式开放性网站默认允许访问
仅拦截指定IP
白名单模式内部系统默认拦截访问
仅允许指定IP

黑名单处理方式

处理方式适用场景效果
完全禁止访问恶意攻击IP彻底拦截黑名单IP
显示拦截页面
限制访问频率爬虫、采集器限制访问间隔
减轻服务器压力

访问间隔设置

  • 默认值:10秒
  • 高流量网站:5-7秒
  • 个人博客:15-20秒
  • 注意:此设置仅影响黑名单IP的访问频率限制

调试模式

  • 记录详细的运行日志到服务器error_log
  • 包含IP访问记录、规则匹配过程、智能检测触发原因等
  • 建议仅在排查问题时开启,避免日志文件过大

"访问过频"和"频率异常"详细介绍

插件提供了两种不同的频率控制机制,它们有着不同的使用场景和工作原理:

两种频率控制机制对比

特性访问过频(Rate Limiting)频率异常(Frequency Anomaly)
适用对象仅黑名单中的IP所有非白名单IP
工作模式黑名单处理模式为"限制访问频率"时生效智能模式下自动生效
实现原理检查访问间隔是否小于设定值基于行为模式分析,检测异常访问模式
检测方式简单时间间隔检测多维度分析(访问次数、URL数量等)
触发条件访问间隔小于设定值(默认10秒)1秒内访问2个不同URL
5秒内访问3次及以上
10秒内访问6次及以上
特殊处理黑名单IP限制更严格(间隔为普通设置的10%)自动将IP加入黑名单,记录检测类型和时间
处理方式临时拦截访问,不加入黑名单永久加入黑名单并拦截
实现函数isAccessTooFrequent()checkFrequencyAnomaly()
配置方式可在插件设置中调整固定规则,不可配置
日志标记"黑名单频率限制""智能检测:频率异常"
使用场景数据采集程序限速
监控但不完全封禁的IP
合法但高频访问的用户
暴力破解攻击
恶意爬虫和扫描器
自动化攻击工具
DDoS攻击尝试

两种机制的协同工作

这两种机制在插件中协同工作,形成了两层防护:

  1. 第一层防护(频率异常检测)

    • 主动识别恶意行为
    • 自动将威胁IP加入黑名单
    • 提供持久性的保护
  2. 第二层防护(访问过频控制)

    • 对已知威胁IP实施访问频率控制
    • 防止黑名单IP过度消耗服务器资源
    • 允许合法但频繁的访问以受限方式进行

这种双层防护设计使得插件能够既有效拦截真正的威胁,又不会过度影响正常但频繁的访问需求。

插件工作流程

访问检测优先级(从高到低)

  1. 白名单检查 - 最高优先级,直接放行
  2. 黑名单检查 - 第二优先级

    • 完全禁止模式:直接拦截
    • 频率限制模式:智能检测 → 频率控制
  3. 模式处理

    • 智能模式:仅智能检测,通过后直接放行
    • 白名单模式:非白名单直接拦截
    • 黑名单模式:记录访问并放行

详细工作流程图

┌───────────────────┐
│   访问请求开始     │
└────────┬──────────┘
         │
         ▼
┌───────────────────────┐     是     ┌───────────────┐
│   检查IP是否在白名单   ├────────────►│    直接放行   │
└────────┬──────────────┘            └───────────────┘
         │ 否
         ▼
┌───────────────────────┐     否     ┌───────────────────────┐
│  检查IP是否在黑名单    ├────────────►│    检查当前工作模式    │
└────────┬──────────────┘            └───────────┬───────────┘
         │ 是                                    │
         ▼                                       ▼
┌───────────────────────┐           ┌───────────────────────────────┐
│  检查黑名单处理模式    │            │ 智能模式  │白名单模式│黑名单模式│
└────────┬──────────────┘           └─────┬─────┴────┬────┴────┬────┘
         │                                │          │         │
         ▼                                ▼          ▼         ▼
┌───────────┐  完全禁止   ┌───────────┐   ┌─────────┐  ┌─────────┐  ┌─────────┐
│选择处理方式├───────────►│  拦截访问  │   │智能检测  │  │ 拦截访问│   │记录放行 │
└─────┬─────┘            └───────────┘   └────┬────┘  └─────────┘  └─────────┘
      │限制频率                                │
      ▼                                       ▼
┌─────────────────────┐        否      ┌─────────────────┐   是   ┌─────────────┐
│  检查访问是否过于频繁 ├───────────────►│ 检测到威胁行为?  ├───────►│ 加入黑名单   │
└────────┬────────────┘                └─────────────────┘        └──────┬──────┘
         │是                                                             │
         ▼                                                               ▼
┌─────────────────────┐                                    ┌─────────────────────┐
│拦截访问(访问过频)    │                                     │  拦截访问(智能检测)  │
└─────────────────────┘                                    └─────────────────────┘

控制台功能

控制台页面位于后台"控制台"菜单下的"IP防护控制台",提供以下功能:

功能区块内容作用
统计概览今日拦截数
总计拦截数
自动加黑名单数
快速了解安全状况
趋势图表24小时拦截趋势图直观展示安全态势
拦截原因各类拦截原因统计分析威胁类型分布
活跃IP拦截次数最多的IP识别持续攻击源
详细日志完整拦截记录
分页浏览
一键清空
删除本页日志
深入分析安全事件

更新日志

v2.3.2 (2025-07-11)

  • 修复:修复了因插件首次激活或配置不存在时,访问网站会导致程序崩溃的致命错误。

v2.3.1 (2025-07-10)

  • 修复:修复了在IP防护控制台中,手动添加的黑名单条目不显示添加时间戳的问题。
  • 修复:修复了禁用再启用插件后,已保存的配置(黑名单/白名单)无法在设置页面正确显示的问题。
  • 修复:修复了在IP防护控制台删除黑名单条目后,由于换行符处理不当导致列表格式错乱的问题。
  • 优化:通过在多个关键位置(header, footer, handle等)增加钩子,增强了IP拦截功能的触发几率,确保其在各种场景下都能可靠生效。

v2.3.0 (2025.06.23)

  • 新增:全新的“IP防护控制台”,提供可视化界面,方便用户实时查看和管理黑名单、白名单、拦截日志和访问日志。
  • 新增:日志分页功能,优化大量日志查看体验。
  • 修复:修复了插件在Typecho 1.2.1及PHP 8.0+环境下后台菜单不显示的问题。
  • 新增:引入兼容适配器,解决了新版Typecho的类命名空间问题。

版本更新对比

版本更新时间主要新增功能主要优化内容
v2.3.22025.07.11-BUG修复
修复因插件首次激活、配置尚未存在时,访问网站前台会导致程序崩溃的问题
v2.3.12025.07.10-BUG修复
修复删除IP后格式错乱问题
v2.3.02025.06.23兼容性增强后台菜单项修复
适配器改进
旧版Typecho支持
v2.2.02025.06.06调试模式IP规则匹配机制优化
智能检测改进
频率异常检测精度增强
UA和Referer检测增强
安全隐患修复
代码重构
v2.1.02025.05.13访问间隔控制功能
黑名单处理模式选择
独立安全控制台
24小时拦截趋势图
日志记录机制改进
统计信息显示优化
性能和稳定性提升
v2.0.02025.04.05智能检测模式
多种IP规则格式支持
自动黑名单功能
实时日志记录
24小时统计图表
控制台管理界面
-

v2.3.1 最新版详细更新内容 (2025.07.10)

类别更新内容说明
修复黑名单删除BUG修复了在控制台删除黑名单条目后,列表文本格式错乱的问题
优化列表处理逻辑增强了对列表空行和空格行的处理,提高了程序健壮性

v2.3.0 最新版详细更新内容 (2025.06.23)

类别更新内容说明
修复PHP 8.0兼容性优化修复了在PHP 8.0环境中使用插件的兼容性问题
修复Typecho 1.2.1支持确保插件与Typecho 1.2.1版本完全兼容
优化后台控制台菜单修复改进了控制台菜单项的添加方式,解决404错误
优化类加载适配器增强增强了与各种环境的兼容性,降低报错概率
修复插件激活/停用修复修复了多个与插件生命周期相关的问题
优化错误处理机制改进改进了错误处理,提供更详细的错误信息

v2.2.0 更新内容 (2025.06.06)

类别更新内容说明
优化IP规则匹配机制优化改进规则解析机制,正确处理行内注释,提高匹配准确性
优化智能检测改进调整频率异常检测阈值,降低误判率
优化频率异常检测精度增强优化检测算法,提高识别准确率
优化UA和Referer检测增强更新特征库,改进异常检测逻辑
新增调试模式新增可选的调试日志记录,便于排查问题
修复安全隐患修复修复多处潜在的安全漏洞
优化代码重构优化核心检测流程,提升执行效率和稳定性

使用建议

阶段建议操作说明
初次使用添加白名单
选择智能模式
避免自己被拦截
获得全面保护
日常维护定期查看日志
清理过期记录
了解安全状况
优化数据库性能
遇到问题开启调试模式
检查规则配置
获取详细日志
排查配置错误
性能优化合理设置间隔
定期清理日志
根据流量调整
减少数据库负担

推荐配置

  • 工作模式:智能模式(自动识别威胁)
  • 黑名单处理:根据需要选择完全禁止或频率限制
  • 访问间隔:10秒(仅影响黑名单IP)

监控要点

  1. 智能检测:重点关注自动拉黑的IP
  2. 黑名单管理:定期检查黑名单中的IP
  3. 日志维护:定期清理过期日志
  4. 白名单维护:及时将重要IP加入白名单

常见问题

Q: 如果误拦截了正常用户怎么办?
A: 将该IP添加到白名单或者手动从黑名单中删除即可,白名单优先级最高。

Q: 插件会影响搜索引擎收录吗?
A: 不会,插件内置了对主流搜索引擎爬虫的识别和保护。

Q: 可以同时使用多种工作模式吗?
A: 智能模式已经整合了黑白名单功能,推荐直接使用智能模式。

Q: 日志会不会越来越多占用空间?
A: 可以在控制台页面一键清空历史日志,或者定期清理。

总结

最新版本v2.2.0优化了IP规则匹配和智能检测机制,显著提高了拦截的准确性,减少了误判,同时新增的调试模式也让问题排查变得更加简单。无论你是个人博客还是商业网站,这款插件都能为你提供可靠的安全保护。
有使用问题或者改进建议请在评论区提出

Github地址:

此内容需要评论后才能查看哦 (*^▽^*)
https://github.com/BXCQ/Advanc...

快速下载:

此内容需要评论后才能查看哦 (*^▽^*)
https://pan.xunlei.com/s/VOUt4...


如果觉得我的文章对你有用,请随意赞赏
END
本文作者:
文章标题:Typecho高级IP访问控制插件:自动拉黑和频率限制
本文地址:https://blog.ybyq.wang/archives/639.html
版权说明:若无注明,本文皆Xuan's blog原创,转载请保留文章出处。