|
有人把“微信”两个字拆成“微信”,防屏中间塞了个零宽空格,蔽文发出去照样能看见,字生但系统关键词过滤就抓不到了。成器这招不新鲜,防屏早年贴吧防吞楼就用过。蔽文真正有意思的字生是,现在有人把它做成了工具——你输入一段话,成器它自动在字与字之间插入不可见字符,防屏或者把正常汉字替换成形近字、蔽文异体字、字生拼音首字母,成器甚至把一句话拆成三行竖着写。防屏防屏蔽文字生成器,蔽文说白了就是字生干这个的。 我试过几个在线版本。有一个界面极简,左边输入框,右边输出框,下面一排复选框:零宽字符、同音替换、拆字、火星文。勾选“零宽字符”后,输出框里的文字看起来和原文一模一样,但复制到微信对话框,发出去对方能正常阅读,而机器审核看到的是一串被切割得七零八落的字符序列。另一个工具更粗暴,直接把“政府”变成“ZF”,“钱”变成“Q”,“死”变成“S”。这种替换太明显,活人一眼看懂,机器也容易通过上下文猜出来。效果反而一般。 真正好用的方案是混合策略。比如“银行卡”三个字,先拆成“银行卡”,再把“卡”换成“咔”。零宽字符打乱分词,形近字绕过词典匹配。两套机制叠在一起,过滤系统要同时处理字符级噪声和字形相似度,误判率就上去了。有个做社群运营的朋友告诉我,他们内部发通知涉及敏感词时,会用一款叫“文心雕龙”的本地脚本,原理类似,但加了随机扰动——每次生成的零宽字符位置不同,同一段话发两遍,机器看到的特征向量都不一样。这已经有点对抗样本的意思了。 不过这类工具也有翻车的时候。上个月我帮人测试一个生成器,输入“维权”两个字,它输出“维权”,结果发到某个平台,直接被封号。后来分析,平台不光看字符序列,还看发送频率和账号历史。你一个正常账号突然发带零宽字符的短文本,行为特征本身就可疑。工具只解决了内容层,没解决行为层。 另一个问题是可读性。零宽字符插多了,在部分安卓机上会显示成小方块,或者导致行距异常。同音替换更麻烦,“期房”换成“欺房”,读者得愣两秒才反应过来。防屏蔽的代价是增加认知负荷。我见过最极端的例子,有人把一整段话转成拼音首字母加声调数字,比如“nihao3”,除了他自己没人看得懂。这就不叫防屏蔽了,叫加密。 从技术角度看,防屏蔽文字生成器的核心就三件事:分词、替换、插入噪声。分词决定哪些词需要处理,替换负责绕过词典,噪声用来干扰基于n-gram的检测模型。但平台方也在进化。现在不少系统先做归一化——把所有零宽字符、变体字、拼音都还原成标准形式,再做关键词匹配。你插你的零宽空格,它一个正则就全删了。道高一尺魔高一丈,这场猫鼠游戏没有终点。 我个人的判断是,这类工具适合短期、小范围、非关键信息的传递。比如群里发个敏感但不算违规的段子,或者避开自动审核发个联系方式。真要传递重要内容,不如换平台,或者用图片、语音。文字对抗的成本越来越高,收益越来越低。那个“文心雕龙”脚本的作者去年就停止更新了,他在GitHub上写了一句:“对抗系统不如理解系统,理解系统不如换个系统。” 最后说个细节。很多生成器会提供一个“强度”滑块,从1到10。强度1只插零宽字符,强度10会把整段话转成Base64再套一层颜文字。我试过强度10的输出,复制到记事本里是一堆乱码加表情,得用配套的解码器才能还原。这已经脱离“防屏蔽”的范畴了,更像是一种亚文化暗号。工具本身没有立场,看你怎么用。 |