这周服务器差点被一锅端。内涵段子关停,所有带UGC功能的平台都成了惊弓之鸟,网信办的电话打到我们一个客户那里,顺藤摸瓜就找到了我们机房IP。问题出在“自定义营销话术”模块,我当初为了讨好B端老板,把权限放得太开,他们可以任意编辑文案模板推给用户。结果有个做保健品分销的,把“壮阳”、“根治”这些词和一堆政治隐喻混在一起群发,触发警报了。网警的原话是“再有一次,先封服务器,再找负责人”。这不是流量问题,是生存问题。
人工审核?别做梦了。我们团队就三个人,客户每天生成的话术模板上万条,不可能看得过来。之前用的本地敏感词库(Trie树+正则增强)就是个玩具,对付“傻逼”这种词还行,面对层出不穷的谐音、拆字、影射,完全就是筛子。必须上第三方审核API,而且要快,要在下一次“风暴”来临前把防火墙筑起来。
连夜看了阿里云绿网、腾讯云天御、百度内容审核的文档。核心比三点:价格、准确率、速度。阿里云按条计费,有免费额度,但QPS限制很死,突发流量可能卡住。腾讯的鉴黄鉴暴细分更清楚,但文档写得有点乱。百度便宜,但当时口碑一般。最后选了阿里云绿网,没别的原因,它家SDK集成起来最快,而且我们的ECS也在阿里云,内网调用延迟可以忽略不计。这不是技术选型,这是救火。
集成过程就是一场和数据库的肉搏。原来的流程是“创建话术 -> 存入数据库 -> 推送给用户”。现在必须在存入数据库之前插入一道强校验。我在后端服务里加了个审核服务模块,所有文本内容先走异步队列,调用绿网API。返回结果分三类:通过、疑似、违规。通过的正常入库;疑似的打上标签,转人工复核队列(虽然没人看,但有个心理安慰);违规的直接拦截,并记录到高风险日志表,同时触发告警邮件给客户管理员和我自己。
但这还不够。如果API服务挂了或者延迟飙升怎么办?难道让用户一直等着?我加了个熔断机制:设置一个超时阈值(比如500ms),如果审核服务超时或失败,自动降级到本地加强版敏感词库进行快速过滤,同时给这条记录打上“未经过完整审核”的标记。数据库层面,我给内容表加了个`audit_status`字段和`risk_score`字段,所有操作必须带这两个字段,否则ORM层直接抛异常。这是用数据库的约束力,倒逼所有写操作都必须考虑审核。
最狠的一招,是在管理后台加了个“一键熔断”按钮。这个按钮的权限只有我有。点击后,会强制将所有客户的内容发布功能切换为“先审后发”模式,并且自动调低第三方API的QPS阈值,优先保证服务不挂。这个功能从来没用过,但它像一把悬着的剑,提醒我系统的脆弱性。
搞到凌晨四点,部署完最后一段代码。看着监控面板上开始出现“审核通过”和“审核拦截”的日志滚动,才觉得喘上来一口气。做ToB SaaS,尤其是涉及内容的,前期都想方设法帮客户赚钱、提效,但到了某个临界点,你会发现“帮客户(以及你自己)避险”是更底层、更致命的产品价值。老板们不会为这个功能付费,但一旦出事,他们和你,谁都付不起那个代价。这不是功能,这是保险丝。














