UNPKG

@zhin.js/sensitive-filter

Version:

敏感词过滤插件,过滤不符合中国国情的敏感内容

1,083 lines (1,062 loc) 15.8 kB
/** * 敏感词库 * 包含政治、暴力、色情、违禁品等敏感词汇 */ // 政治敏感词 export const politicalWords = [ '法轮功', '法轮大法', '真善忍', '李洪志', '达赖', '达赖喇嘛', '班禅', '台独', '藏独', '疆独', '港独', '东突', '民运', '民主化', '平反', '习近平', '江泽民', '胡锦涛', '温家宝', '李鹏', '朱镕基', '反共', '反党', '专制', '独裁', '暴政', '集权', '一党专政', '多党制', '共产党', '共党', '中共', 'CCP', '89事件', '64事件', '六四', '六.四', '6.4', '天安门事件', '天安门母亲', '学潮', '学运', '动乱', '暴乱', '骚乱', '游行', '示威', '抗议', '静坐', '绝食', '罢工', '罢课', '罢市', '维权', '上访', '请愿', '集会', '结社', '言论自由', '新闻自由', '出版自由', '人权', '民权', '宪政', '三权分立', '普选', '直选', '公投', '全民公决', '颠覆国家', '推翻政府', '煽动颠覆', '境外势力', '反华', '辱华', '分裂国家', '国家分裂', '民族分裂', '民族独立', '台湾独立', '西藏独立', '新疆独立', '香港独立', '疆独分子', '藏独分子', '台独分子', '港独分子', '藏青会', '世维会', '民进党', '国民党', ]; // 暴力恐怖词汇 export const violenceWords = [ '恐怖主义', '恐怖分子', '恐怖组织', '恐怖袭击', '恐怖活动', '基地组织', '伊斯兰国', 'ISIS', 'IS', '塔利班', '博科圣地', '爆炸', '炸弹', '爆炸物', '炸药', '雷管', '引爆', '遥控炸弹', '定时炸弹', '自杀式袭击', '人肉炸弹', '人体炸弹', '生化武器', '核武器', '原子弹', '氢弹', '中子弹', '核弹', '核爆', '化学武器', '毒气', '沙林', '芥子气', '生物武器', '细菌武器', '病毒武器', '大规模杀伤', '屠杀', '大屠杀', '种族灭绝', '杀人', '杀害', '谋杀', '杀戮', '暗杀', '刺杀', '行刺', '砍人', '砍杀', '持刀', '持刀伤人', '持械', '行凶', '凶杀', '伤害', '故意伤害', '袭击', '攻击', '武装袭击', '恐怖袭击', '劫持', '劫机', '劫船', '劫车', '绑架', '绑票', '勒索', '敲诈', '敲诈勒索', '威胁', '恐吓', '寻仇', '报复', '血洗', '血案', '惨案', '灭门', '虐待', '虐杀', '肢解', '分尸', '碎尸', ]; // 色情低俗词汇 export const pornWords = [ '色情', '淫秽', '淫荡', '淫乱', '淫秽物品', '裸体', '裸照', '裸聊', '裸奔', '艳照', '偷拍', '偷窥', '走光', '露点', '露出', '激情', '激情视频', '成人', '成人网站', '成人电影', '成人视频', '黄色', '黄色网站', '黄网', '三级', '三级片', 'AV', 'A片', '毛片', '黄片', '小黄片', '小电影', 'porn', 'porno', 'sex', 'sexy', '性感', '色诱', '挑逗', '勾引', '做爱', '性交', '性行为', '性爱', '性交易', '性服务', '性骚扰', '性侵', '性虐', '强奸', '轮奸', '迷奸', '性侵犯', '猥亵', '非礼', '嫖娼', '嫖妓', '卖淫', '卖身', '招嫖', '招妓', '援交', '援助交际', '包养', '包二奶', '小三', '情人', '一夜情', '约炮', '约会', '开房', '打炮', '上床', '同床', '乱伦', '兽交', '性虐待', 'SM', '虐待', '调教', '捆绑', '人体艺术', '脱衣舞', '钢管舞', '陪侍', '陪酒', '陪睡', '陪床', '夜总会', '红灯区', '风俗店', '色情服务', '性工作者', '妓女', '鸡', '失足妇女', '站街女', ]; // 违禁品词汇 export const prohibitedWords = [ '毒品', '贩毒', '吸毒', '贩卖毒品', '制毒', '毒贩', '大麻', '大麻叶', '大麻烟', '海洛因', '白粉', '冰毒', '甲基苯丙胺', '摇头丸', 'MDMA', '可卡因', '古柯碱', '鸦片', '吗啡', 'K粉', '氯胺酮', '麻古', '麻果', '迷幻药', '致幻剂', 'LSD', '兴奋剂', '安非他明', '杜冷丁', '美沙酮', '芬太尼', '曲马多', '三唑仑', '氟硝西泮', '咖啡因', '麻黄碱', '麻黄素', '盐酸麻黄碱', '伪麻黄碱', '罂粟', '罂粟壳', '罂粟种子', '大烟', '白面', '冰', '溜冰', '吸毒工具', '针管', '注射器', '吸毒针', '赌博', '赌场', '赌钱', '赌博网站', '网络赌博', '线上赌博', '博彩', '博彩网站', '六合彩', '时时彩', '赛马', '赛车', '赌球', '赌马', '赌狗', '斗鸡', '斗狗', '百家乐', '21点', '轮盘', '老虎机', '角子机', '吃角子老虎', '赌注', '下注', '开设赌场', '赌局', '枪支', '枪械', '手枪', '左轮手枪', '自动手枪', '步枪', '突击步枪', 'AK47', 'AK-47', 'M16', '冲锋枪', '机关枪', '机枪', '轻机枪', '重机枪', '狙击枪', '猎枪', '散弹枪', '气枪', '仿真枪', '火药', '黑火药', '无烟火药', '子弹', '弹药', '弹夹', '枪弹', '军火', '军火贩', '军火商', '军火走私', '私藏枪支', '非法持枪', '持枪', '配枪', '武器', '管制刀具', '匕首', '弹簧刀', '三棱刀', '三棱刮刀', '跳刀', '飞刀', '弩', '弓弩', '钢珠枪', ]; // 诈骗相关词汇 export const fraudWords = [ '网络诈骗', '电信诈骗', '诈骗', '骗钱', '骗局', '行骗', '金融诈骗', '保险诈骗', '合同诈骗', '贷款诈骗', '信用卡诈骗', '招聘诈骗', '求职诈骗', '婚恋诈骗', '投资诈骗', '理财诈骗', '杀猪盘', '刷单', '兼职刷单', '刷信誉', '刷好评', '刷钻', '刷流量', '套现', '信用卡套现', '花呗套现', '白条套现', '京东白条套现', '蚂蚁花呗套现', '高利贷', '裸贷', '裸条', '校园贷', '套路贷', '714高炮', '暴力催收', '非法集资', '集资诈骗', '非法吸收公众存款', '传销', '网络传销', '微商传销', '拉人头', '发展下线', '多层次营销', 'MLM', '金字塔骗局', '资金盘', '互助盘', '拆分盘', '庞氏骗局', '投资理财骗局', '虚拟货币骗局', '数字货币骗局', 'P2P诈骗', '跑路', '平台跑路', '老板跑路', '跑路诈骗', '退款诈骗', '中奖诈骗', '假客服', '假警察', '假公安', '假检察官', '假法官', '冒充公检法', '冒充领导', '冒充熟人', '冒充客服', '假冒网站', '钓鱼网站', '钓鱼链接', '假红包', '假二维码', '木马病毒', '盗号', '盗刷', '盗取信息', '个人信息买卖', '身份信息买卖', '银行卡买卖', '手机卡买卖', '实名卡买卖', '四件套', '两卡', '买卖银行卡', '买卖手机卡', ]; // 其他违法违规词汇 export const illegalWords = [ '翻墙', '翻墙软件', 'VPN', 'SS', 'SSR', 'V2Ray', 'Shadowsocks', 'Trojan', '代理服务器', '科学上网', '梯子', '机场', '节点', '翻墙节点', '翻墙工具', '办证', '办假证', '假证', '假证件', '伪造证件', '刻章', '刻假章', '假公章', '伪造公章', '假学历', '假文凭', '假毕业证', '假学位证', '假身份证', '假驾照', '假护照', '假签证', '代考', '替考', '替人考试', '考试作弊', '作弊器', '无线耳机', '针孔摄像头', '买卖答案', '考试答案', '泄题', '论文代写', '代写论文', '代写作业', '代写毕业论文', '学位代办', '文凭代办', '学历认证', '假学历认证', '发票', '假发票', '虚假发票', '代开发票', '增值税发票', '普通发票', '专用发票', '发票买卖', '洗钱', '黑钱', '赃款', '地下钱庄', '非法换汇', '外汇交易', '地下汇兑', '走私', '走私货', '水货', '偷渡', '偷渡客', '蛇头', '人口贩卖', '人口买卖', '拐卖', '拐卖妇女', '拐卖儿童', '拐骗', '非法拘禁', '限制人身自由', '非法组织', '邪教', '邪教组织', '全能神', '门徒会', '血水圣灵', '呼喊派', '三班仆人派', '观音法门', '非法集会', '非法游行', '非法示威', '侵犯版权', '盗版', '盗版软件', '盗版电影', '盗版音乐', '破解版', '破解软件', '注册机', '激活码', '序列号', '非法侵入', '黑客', '黑客攻击', '入侵', '木马', '病毒', '恶意软件', '钓鱼', 'DDOS', '拒绝服务攻击', '撞库', '数据泄露', '隐私泄露', '贩卖个人信息', '买卖公民信息', ]; // 谐音词、变体词、拼音缩写 export const homophoneWords = [ // 政治相关谐音 'GCD', 'gcd', '共惨党', '共铲党', '共残党', '供铲档', 'TG', 'tg', '土共', 'ZF', 'zf', '正府', '政腐', '政付', '症腐', 'GWY', 'gwy', '官老爷', '贪官', '腐败', '公仆', 'D员', '裆', '裆员', '镰刀锤子', '五星红旗', 'XJP', 'xjp', '包子', '维尼熊', '小熊维尼', '庆丰', '庆丰帝', '习包子', '习维尼', '大大', '习大大', 'FLG', 'flg', '法 轮 功', '法_轮_功', '法.轮.功', '发伦功', '法 论 功', '轮子功', '李宏志', '李 洪 志', 'DL', 'dl', '达 赖', '达_赖', '达.赖', 'TW', 'tw', '台 湾', '台_湾', '弯弯', '湾湾', '4V', '台巴子', '台蛙', '呆湾', '对岸', '64', '6.4', '六 四', '六_四', '陆肆', '89', '8.9', '八 九', '八_九', 'TAM', 'tam', '坦克人', '王维林', '天 安 门', '天_安_门', 'zd', 'ZD', '藏_独', '疆_独', '港_独', '独_立', '分_裂', // 暴力恐怖谐音 'SHA人', 'sha人', '杀_人', '煞人', '沙人', 'S人', 's人', 'SB', 'sb', '傻逼', '傻B', '傻比', '沙比', 'NMB', 'nmb', '尼玛', '你妈', '你马', '泥马', '草泥马', 'CNM', 'cnm', 'TNND', 'tnnd', '他奶奶的', 'TMD', 'tmd', '他妈的', '她妈的', 'MD', 'md', '妈的', '马的', 'WQNMLgb', 'wqnmlgb', 'WQNMD', 'wqnmd', '我去你妈的', 'BO炸', 'bo炸', '爆_炸', 'ZD', 'zd', '炸_弹', '炸蛋', '炸 弹', // 色情相关谐音 'H色', 'h色', '黄_色', '黄Se', 'AV', 'av', 'A片', 'a片', 'A_片', 'porn', 'PORN', 'p0rn', 'pr0n', 'pron', 'sex', 'SEX', 's3x', 'se×', '性_交', '性J', '性j', '做_爱', 'ML', 'ml', '嘿咻', 'cao', 'CAO', '艹', '操_你', '曹你', 'fuck', 'FUCK', 'f**k', 'f*ck', 'fuk', '福克', 'JB', 'jb', 'J8', 'j8', '鸡_巴', '几把', '鸡八', 'SQ', 'sq', '色_情', '色Q', '瑟琴', 'YD', 'yd', '淫_荡', '淫D', '银荡', 'MP', 'mp', '毛_片', '毛P', 'LT', 'lt', '裸_体', '裸T', 'LZ', 'lz', '裸_照', '果照', 'YJ', 'yj', '援_交', 'YIN', 'yin', '淫_秽', 'SM', 'sm', 's m', 's.m', // 毒品赌博谐音 'DP', 'dp', '毒_品', '读品', 'DM', 'dm', '大_麻', '麻古', 'K粉', 'k粉', 'K F', 'k f', 'Ice', 'ice', 'ICE', '溜冰', 'Ecstasy', 'ecstasy', 'MDMA', 'mdma', 'Cocaine', 'cocaine', 'Heroin', 'heroin', 'DB', 'db', '赌_博', '睹博', 'DC', 'dc', '赌_场', 'CP', 'cp', '彩_票', '菜票', 'SSC', 'ssc', '时_时_彩', 'LHC', 'lhc', '六_合_彩', // 诈骗相关谐音 'ZP', 'zp', '诈_骗', 'SD', 'sd', '刷_单', 'TX', 'tx', '套_现', 'TaoXian', 'taoxian', 'GLD', 'gld', '高_利_贷', 'CX', 'cx', '传_销', '船销', 'FJZ', 'fjz', '非_法_集_资', 'PSDJ', 'psdj', '庞氏骗局', // 其他违法违规谐音 'FQ', 'fq', '翻_墙', 'fanqiang', 'fan qiang', 'VPN', 'vpn', 'v p n', 'v.p.n', 'Shadowsocks', 'shadowsocks', 'SS', 'SSR', 'ssr', 'V2Ray', 'v2ray', 'v 2 ray', 'QZ', 'qz', '枪_支', 'QX', 'qx', '气_枪', 'JZ', 'jz', '假_证', 'XJ', 'xj', '邪_教', 'XiJiao', 'xijiao', // 数字谐音和变形 '250', '2B', '2b', '13点', '38', '3.8', '三八', '二百五', '憨批', '憨比', 'ZZ', 'zz', '智障', '智_障', 'NC', 'nc', '脑残', '脑_残', 'LJ', 'lj', '垃圾', '拉基', 'RNM', 'rnm', 'RNMB', 'rnmb', 'WDNMD', 'wdnmd', '我他妈的', '我 草', '卧槽', '握草', '沃草', 'WC', 'wc', // 符号变体 '共@党', '共*党', '共产dang', '共chan党', '政◇府', '政※府', 'g o v', 'zheng fu', 'zhengfu', '习◇平', '习※平', 'xi jin ping', 'xijinping', '法◇功', '法※功', 'fa lun gong', 'falungong', '六◇四', '六※四', 'liu si', 'liusi', '毒◇品', '毒※品', 'du pin', 'dupin', '赌◇博', '赌※博', 'du bo', 'dubo', '黄◇色', '黄※色', 'huang se', 'huangse', ]; // 组合所有敏感词 export const allSensitiveWords = [ ...politicalWords, ...violenceWords, ...pornWords, ...prohibitedWords, ...fraudWords, ...illegalWords, ...homophoneWords, ]; /** * 创建敏感词正则表达式 */ export function createSensitiveWordRegex(words: string[]): RegExp { // 转义特殊字符并创建正则 const escapedWords = words.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') ); // 使用 'gi' 标志:g 用于全局匹配(match 方法),i 用于不区分大小写 // 注意:对于 test() 方法,使用 'g' 会导致状态问题,但这里主要用于 match() 和 replace() return new RegExp(escapedWords.join('|'), 'gi'); } /** * 敏感词检测选项 */ export interface SensitiveFilterOptions { /** 是否启用政治敏感词过滤 */ political?: boolean; /** 是否启用暴力恐怖词汇过滤 */ violence?: boolean; /** 是否启用色情低俗词汇过滤 */ porn?: boolean; /** 是否启用违禁品词汇过滤 */ prohibited?: boolean; /** 是否启用诈骗相关词汇过滤 */ fraud?: boolean; /** 是否启用其他违法违规词汇过滤 */ illegal?: boolean; /** 是否启用谐音词、变体词过滤 */ homophone?: boolean; /** 自定义敏感词列表 */ custom?: string[]; /** 替换字符,默认为 * */ replacement?: string; /** 是否直接拦截包含敏感词的消息 */ block?: boolean; } /** * 获取启用的敏感词列表 */ export function getEnabledWords(options: SensitiveFilterOptions): string[] { const words: string[] = []; if (options.political !== false) words.push(...politicalWords); if (options.violence !== false) words.push(...violenceWords); if (options.porn !== false) words.push(...pornWords); if (options.prohibited !== false) words.push(...prohibitedWords); if (options.fraud !== false) words.push(...fraudWords); if (options.illegal !== false) words.push(...illegalWords); if (options.homophone !== false) words.push(...homophoneWords); if (options.custom && options.custom.length > 0) words.push(...options.custom); return words; }