本文目录导读:

- 基础方案:基于关键词的黑名单拦截(适合简单敏感词)
- 加强版:正则表达式与模糊匹配(支持变体/谐音/拆字)
- 批量处理文件/数据库/API流(高性能方案)
- 专业级方案:调用云端AI审核API(支持图片/视频/文本)
- 防绕过技巧与增强建议
- 完整脚本模板(命令行工具)
- 注意事项
的需求,通常需要结合关键词匹配、正则表达式、AI模型或第三方API来实现,以下提供几种不同场景下的脚本方案(以Python为例):
基础方案:基于关键词的黑名单拦截(适合简单敏感词)
import re
class ContentFilter:
def __init__(self, keyword_file="blacklist.txt"):
# 从文件加载黑名单关键词(每行一个)
with open(keyword_file, "r", encoding="utf-8") as f:
self.blacklist = [line.strip() for line in f if line.strip()]
def contains_illegal(self, text):
"""检查文本是否包含任何黑名单关键词"""
for keyword in self.blacklist:
if keyword in text:
return True, keyword
return False, None
def replace_with_star(self, text, placeholder="***"):
"""将违禁词替换为占位符"""
for keyword in self.blacklist:
text = text.replace(keyword, placeholder)
return text
# 使用示例
filter = ContentFilter()
text = "这是包含敏感词A的文本"
if filter.contains_illegal(text):
print("已拦截:包含违禁词")
else:
print("内容安全")
加强版:正则表达式与模糊匹配(支持变体/谐音/拆字)
import re
class AdvancedFilter:
def __init__(self):
# 定义高级规则:支持正则、通配符、前缀后缀
self.patterns = [
# 1. 常规敏感词
"违禁词A|违禁词B",
# 2. 带通配符(如"赌.*博"匹配"赌博"、"赌大博")
"赌.*博|毒.*品",
# 3. 谐音替换(如"fa轮功"变体"fa论功")
"法[轮伦]功|fa[轮伦]功",
# 4. 拆分词(如"自 杀"、"自.S")
"自\\s*[杀刹]|自\\.*[杀刹]"
]
self.combined_pattern = re.compile("|".join(self.patterns), re.IGNORECASE)
def is_illegal(self, text):
return bool(self.combined_pattern.search(text))
def find_all_matches(self, text):
return self.combined_pattern.findall(text)
# 使用示例
filter = AdvancedFilter()
texts = ["这是赌大博的内容", "法轮功是XX", "自 杀方法"]
for t in texts:
if filter.is_illegal(t):
print(f"拦截: {t}")
批量处理文件/数据库/API流(高性能方案)
import multiprocessing
import pandas as pd # 用于CSV/Excel处理
def batch_check_text(text):
"""单条检测函数(可被多进程调用)"""
# 这里调用你的过滤逻辑(如上面的类)
filter = ContentFilter() # 注意:多进程下需在函数内初始化
return filter.contains_illegal(text)
# 方案1:读取CSV批量检查
def batch_check_csv(input_file, output_file, text_column="content"):
df = pd.read_csv(input_file)
# 多进程加速(建议使用进程池)
with multiprocessing.Pool(processes=4) as pool:
results = pool.map(batch_check_text, df[text_column].tolist())
df["is_illegal"] = results
df.to_csv(output_file, index=False)
print(f"处理完成,违规条数: {sum(results)}")
# 方案2:读取数据库(以MySQL为例)
def batch_check_mysql(host, user, password, db, table, field="content"):
import pymysql
conn = pymysql.connect(host=host, user=user, password=password, db=db)
cursor = conn.cursor()
cursor.execute(f"SELECT id, {field} FROM {table}")
rows = cursor.fetchall()
# 批量判断
illegal_ids = []
for id, text in rows:
if filter.contains_illegal(text)[0]:
illegal_ids.append(id)
# 标记或删除(谨慎操作)
if illegal_ids:
cursor.execute(f"UPDATE {table} SET status='illegal' WHERE id IN ({','.join(map(str, illegal_ids))})")
conn.commit()
conn.close()
# 方案3:实时API流(如Webhook)
def api_middleware(request):
content = request.json.get("content")
if filter.contains_illegal(content):
return {"code": 403, "msg": "内容违规"}, 403
return {"code": 200, "msg": "通过"}
专业级方案:调用云端AI审核API(支持图片/视频/文本)
import requests
import json
class CloudCheckService:
def __init__(self, api_key, secret_key):
self.api_url = "https://api.example.com/v1/content/check" # 替换为实际API地址
self.api_key = api_key
def check_text(self, text):
payload = {
"api_key": self.api_key,
"content": text,
"type": "text" # 或 "image"、"video"
}
response = requests.post(self.api_url, json=payload)
result = response.json()
# 假设接口返回 {"code":0, "label":"normal/ad/porn/violence"}
if result.get("label") != "normal":
return False, result.get("label")
return True, None
# 使用示例(腾讯云、阿里云、百度AI、网易易盾等)
# cloud = CloudCheckService("your_api_key", "your_secret")
# safe, label = cloud.check_text("测试文本")
防绕过技巧与增强建议
- 分词对比:使用jieba分词,将文本切词后再匹配,防止“赌..博”类变体。
- 拼音映射:将文本转为拼音后匹配(如“falu”映射为“法轮”)。
- Unicode归一化:统一全半角、大小写(如“falun”还原)。
- 图片OCR:如需拦截图片中的文字,使用Tesseract或云OCR服务。
- 白名单机制:对部分合法内容(如医学文章中的“毒品”一词)放行。
- 性能优化:使用AC自动机(Aho-Corasick)算法实现多模式高效匹配(适合百万级关键词)。
完整脚本模板(命令行工具)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-过滤工具"""
import argparse
import sys
def main():
parser = argparse.ArgumentParser(description="批量拦截违规内容")
parser.add_argument("-i", "--input", required=True, help="输入文件(CSV/TXT)")
parser.add_argument("-o", "--output", help="输出文件(默认输出到控制台)")
parser.add_argument("-k", "--keywords", required=True, help="关键词文件(每行一个)")
parser.add_argument("-c", "--column", default="content", help="CSV中的文本列名")
args = parser.parse_args()
filter = ContentFilter(args.keywords)
if args.input.endswith(".csv"):
import pandas as pd
df = pd.read_csv(args.input)
results = df[args.column].apply(lambda x: filter.contains_illegal(x)[0])
df["illegal"] = results
if args.output:
df.to_csv(args.output, index=False)
else:
print(df[df["illegal"] == True])
else:
with open(args.input, "r", encoding="utf-8") as f:
for line in f:
text = line.strip()
if text:
illegal, word = filter.contains_illegal(text)
if illegal:
print(f"[拦截] {text} -> 违规词: {word}")
if __name__ == "__main__":
main()
注意事项
- 误杀风险:建议对拦截结果进行人工复核,或设置分级拦截(如“禁止”和“警告”)。
- 数据安全:敏感词库和API密钥不要硬编码在脚本中,应使用环境变量或加密存储。
- 法律合规过滤应遵守当地法律法规,注意个人隐私保护和言论自由的平衡。
- 性能监控:批量处理大数据时,建议添加进度条(tqdm库)和错误日志。
根据你的实际需求(如处理的是文本、图片还是音视频?数据量级?实时性要求?),可以选择上述方案组合或定制开发,如果需要特定场景(如微信公众号、论坛评论、文件服务器)的详细实现,请补充说明。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播