项目介绍:sensitive-word
项目背景
敏感词过滤在网络安全中扮演着重要角色。为了满足高效、准确的敏感词检测需求,sensitive-word 项目应运而生。它基于 DFA(确定有限自动机)算法,提供了一种高性能的解决方案,用于识别和处理文本中的敏感词汇。
项目特性
- 庞大的词库:目前包含6万多个敏感词,并会持续更新优化。
- 高性能:基于 DFA 算法,每秒可以处理超过7万个请求(7W+ QPS),应用起来无明显延迟。
- 丰富的操作支持:
- 判断文本是否包含敏感词。
- 提供敏感词查找,包括首个及全部敏感词识别。
- 支持脱敏处理,可以替换为星号或自定义字符。
- 支持多种格式的转换:切换全角半角、大小写、简繁体等。
- 支持检测邮箱、网址、IPV4 和连续数字等。
- 灵活的配置:可以自定义替换策略和敏感词库,并支持动态更改而实时生效。
使用方法
准备和引入
要使用 sensitive-word 工具,需要 Java JDK 1.8+ 和 Maven 3.x+ 环境。通过在项目的 Maven 配置中添加依赖即可开始使用:
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sensitive-word</artifactId>
<version>0.22.0</version>
</dependency>
核心方法
sensitive-word
提供了一个名为 SensitiveWordHelper
的工具类,开发者可以利用该类进行各种敏感词操作,如验证字符串是否包含敏感词、替换敏感词等。例如,以下示例展示了如何判断字符串中是否包含敏感词:
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
assert SensitiveWordHelper.contains(text);
自定义敏感词和配置
用户能够自定义敏感词并添加到词库中,同时也可以定义白名单来确保某些词不被标记为敏感词。通过配置 IWordDeny
和 IWordAllow
接口,用户可以根据实际需求灵活地调整系统行为。
细节功能
- 格式处理:通过忽略大小写、忽略全半角等方式提高识别效率。
- 标签功能:对敏感词进行分类,并支持按标签进行条件处理。
- 动态加载:允许用户在不重启应用的情况下动态更新敏感词列表,实现实时灵活的敏感词管理。
实例及代码示例
项目中包含一系列丰富的实例和测试用例,用户可以在项目测试目录下找到相关示例,帮助开发者更好地理解和使用该工具。
总结
sensitive-word 是一款功能完整且灵活的敏感词管理工具,适用于大多数需要实时、高效敏感词检测和处理的应用场景。开发者可以根据项目需求调整配置,借助该工具实现复杂环境中的敏感词过滤。随着项目的持续发展和优化,它将更加全面地满足用户需求。