打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
我来辟个谣:谈谈微信封号封群的逻辑(技术篇)
userphoto

2022.08.05 北京

关注

注意防护

读完约需要

10
分钟

疫情未结束

之前谈了与微信封号封群的相关常识(常识篇),强调了一点:即使您不懂某个行业的专业知识,但凭借常识与逻辑,您还是可以识别很多谣言。

有鉴于“常识篇”一文的现实遭遇,这篇文末我就不做总结了,能看懂这幅图片,自然会懂我的意思。

今天主要谈谈技术方面的,但请不要被“技术”这两个字吓到,因为我也不怎么懂

,今天聊得也很肤浅,但我会尽量去专业化,力求通俗。

1


理论与现实

依然先扯个淡,谈谈理论可行实际可行性的区别。

曾经有人说,如果全中国每人给我1元钱,那我就成了亿万富翁。这看起来很可能,毕竟钱很少,而且绝大多数的人,不仅有1元钱,而且愿意给你。这就是理论可行

但是,这在以前是很难做到的,因为你要跑遍全中国挨个儿去收这个钱,可行性就成了问题。这就是实际可行性欠缺。

你可能要说,今非昔比,互联网就让这不可能的事情变成了可能,不论是支付宝还是微信,给你转个1元钱都很容易,似乎这个亿万富翁一夜之间就成了。但我说这依然不可行 —— 到底是理论不可行,还是实际可行性欠缺?对此,如果您已有确切的答案,那往下看就是浪费时间。

扯了会儿淡,主要是想说,理论可行和实际可行有很大的差距,特别是对于不在一个量级上的数据处理,区别可就太大了。

以图片举例,一张图片是不是敏感,要不要屏蔽掉,肯定得先识别内容。

这自然不会靠人工来一张张地识别,百张以上的图片就会把人整得眼泪哗哗的。而且,人类对于大数据是无感的。比如,10的6次方已经很大了,但和10的100次方相比,那就很小了,但100次方到底有多大,你是没有感觉的,因为平日接触得很少,脑子处理不了。

机器处理图片时也面临同样的问题,当它识别一定数量的图片时,成功率很高,因为技术不成问题,现在图像识别技术已经很棒了(即使对这个行业动态无知,也可从人脸识别技术来推断一下),但一旦涉及海量数据,图像识别技术的运用就会因为算力有限而大打折扣。这就像你可以去找10个人去讨要1元钱,甚至可以去找10000个人去要,但10万、100万……呢?你必然会遇到一个难以逾越的阈值。

于腾讯而言,这阈值就是它的运算能力,而运算能力是硬件辅以软件“堆”出来的,因而也可以将之转换为“成本”来衡量 —— 它得考虑图像识别的成本。

这就意味着微信系统若想用最小的成本把活干好,它得降低运算复杂度 —— 这其实是一句废话了,特别是对于程序员而言,降低运算复杂度是他们的天性。

那为什么我一定要说这废话呢?因为,这就是腾讯设计微信系统时业务逻辑之一,他们逃不过的。我也是因为这一条而敢做出如下的判断。

这就涉及如何降低复杂度的问题,基本方法有二:

  1. 分类

  2. 抽象方法

2


假如我是微信系统的设计者

下面就假设我是微信系统的设计者,那我会如何处理敏感信息呢?

不同类型的信息,识别的复杂度是有区别的,以我粗浅的认知,将它们大致排个序(如若不对,请方家指正):

  1. 文本文字

  2. 常见文本对象(docx、pdf等)

  3. 图片

  4. 视频

  5. 语音

  6. 其他对象

2.1


文本文字

处理文本文字肯定是最容易的,识别方简式单粗暴,和敏感词对比就行。

针对于这个识别手段,一些人采用同音字替代,这就很难应对了,因为中文的同音字很多,人为可以将之还原为恰当的原词,但机器处理就有很难了。近些年来人工智能大力发展,机器学习技术或可在这一领域有用武之地,但之前说过,这算力成本可就大大增加了,很可能得不偿失。(顺便说一下:以程序员的眼光来看,将人工智能用于敏感词识别真的是暴殄天物啊。)

另外,人天生有种脑补的能力,会自动修正一些字词的顺序,您往上看两段,我故意将“识别单粗暴”里面“方式”与“简单”穿插了,不知您是否察觉?倘若“方式”是敏感词,这样穿插之后,程序是无法识别的,因为字符串序列里面只有“方简”,而无“方式”。我不知道人工智能是否可以处理这种乱序,但好在这样使用的不多,再说也有弊端,比如涉及到某些否定词,如若乱序后位置不当,那误会可就大了。

在没有乱序输入工具之前,故意乱序会很折腾人的,倘若乱序不当,那接受信息的人也很吃力,这和用谐音字替代类似,是一柄双刃剑。作为系统设计者,出于成本考虑,我肯定会先忽略,不特别处理谐音和乱序等模式。

总的来说,文本识别最简单易行,但漏洞也很多。比如,有些人将文字做成了图片,这就增加了识别时的算力成本

2.2


常见文本对象

word文档、pdf之类的已经是非常常见的文档格式,微信也支持预览这样的文件,显然,支持读取这类办公文档的功能已经被内建,传播这类文档只是比文本类的稍微复杂一点,涉及到文档格式的解析动作,开销比读取纯文本文件要略多。

这样的文本对象还有Excel等,我没法告诉您完整的列表,但可以这么判断:只要微信不需借助第三方软件就可以预览文件的,那么这种格式的文件对象,微信是可以读取内容的,必然就是可审查的对象。

由于这类文本对象常常包含图片对象,因此,处理起来的复杂程度肯定要比图片更难。之所以排在这里,是想说,如果文本只是用Word、PDF套个壳,其内容和你直接在微信里面发文本没有太大区别的。

2.3


图片

之前已经用图片举过例子了,这里重提一下,由于机器的算力有限,不可能将所有的图片都识别一遍,识别之前先要缩小识别范围,这会在“抽象方法”的章节专门探讨,这里介绍下当前主流所采用的图片识别方法。

微信系统要识别的对象可以分为两种:人物与文字。

但请注意,系统需要真正关心的是内容,也就是人物和文字是什么。比如某人的照片,倘若我们首先关心的是这人是谁,那就可以不管它的分辨率、颜色等属性,这些其实是噪音;对于图片中的文字识别,系统最终关心的是文字所表达的意义,至于字体什么的,本应与图片的颜色相当,也是噪音。然而,要想知道图片中文字意义,必先识别文字,而要想准确识别文字,必须知道当前的字体,而现在字体繁多,特别是很多美术字体,长得像朵花,这势必会给识别带来了麻烦。更别说那种时而正立显示,时而倾斜、翻转的花式文字组合了

总体来说,可以通过和已知的敏感图片进行匹配,然后进行相似度打分,超过某一分值,就认为两张图片相同。

通常,在进行图片相似度匹配之前,会先对目标图片进行降噪,也就是将图片灰度化,去除色彩等噪音信息,这基于一个前提:轮廓可以反映图片的内容。这很好理解,以前黑白电视机的时代,是能表达大部分内容的,当然,这必然会有损失,但在识别的效率、成本、准确度几个维度综合衡量,将图片灰度化之后再进行匹配对比是非常经济的。

我虽不知道腾讯会采用什么算法,处理的数据越大,自然会采用高效低开销的方法。

那对于因算法缺陷所致的漏网之鱼,以及新出现的图片,系统该如何来处理呢?别急,依然会在“抽象方法”的环节讲到。

2.4


视频

视频和图片的处理有类似之处,但视频更为复杂。

视频可以分解为一帧帧的图片序列与音频之和。但如果将图片识别的策略应用到视频上,那可又是一批海量数据。随机取样抽帧检测的方式能有效提高识别过程,比如,每个视频的在前后10帧里面随机取1帧,再在中间所有关键帧里面随机取出3帧,那就可以大概知道视频的内容(类别)了,这时,一个视频就被转化成5张图片识别,效率大大提高。

这样自然也会有漏网之鱼,但视频的复杂还在于音频部分。

2.5


音频

按说,视频不但包含音频,还包含图片序列,应该会比音频更难处理才是。但为何我把音频排在视频之后,认为其更难处理呢?

您不妨反推一下,为何腾讯不允许转发语音?

语音识别技术现在虽有长足的进步,但是,语音太繁杂了,方言又多,识别率很低的。因此,当前微信采用了限制转发语音的策略。

您肯定要提出质疑了,既然如此,视频里面也有音频,自然也会有同样的问题吧?是的。视频被处理时,也同样面对音频的问题,但视频有图片啊,这时音频反而被忽略了。也许微信根本就不识别视频中的音频,而是根据图片来判别视频的内容。这时,视频的序列图片反而成了识别视频的“有效信息”。您还可能会问,那制作一个语音与图像不相干的视频,岂不是既能够传播,又逃过了审查?看起来是的,但是,基于两个原因人们通常不会这么干:

  1. 一个语音与图像不相干的视频,看起来就很奇怪,语音虽然得以传播,但这样别扭的视频,本身是不利于传播的;

  2. 制作一个纯音频的文件,比如mp3,不就可以规避第1条中的不利因素么?

即使人们不在乎这两个因素,依然制作了语音与图像不相干的视频,那还有最终的防线,那就是人工。重要的是人工在什么时候介入,这个依然在后面说。

2.6


其他对象

除了以上所列出来的,其他的都算其他对象,比如mp3文件。

但请您注意:不论是哪种文件格式,即使微信不能读取里面的内容,但文件名是显然能识别的。因此,检测文件会先从文件名开始,也就是文本检测了。

微信难以支持太多的文件格式,那是不是意味着对不支持的格式就毫无办法呢?

答案显然是否定的,因为最后的防线是人工,但显然人工不是一开始就介入的。依旧接下来再谈。

3


抽象方法

学会抽象思维,可以说是程序员的基本功。

抽象之后,微信号、微信群、一篇文章、一个视频、一个文件……都被看作:对象

而且,付诸在某个对象上都有统一操作的方法,比如这个方法叫“闭嘴(shutup)”,我们这么来标记一下:对象->shutup()。

当一个微信号被封时,就是“微信号这个对象->shutup()”程序被调用了,同样,一篇文章被和谐时,就是“文章这个对象->shutup()”程序被执行了……只不过,其内部实现的细节有所差异。

什么时候会被调用呢?可以是人工调用,直接封掉一个号、一个群……,也可以是系统自动触发的。人工执行没什么好说的,看你不顺眼就开干,这里只谈系统自动触发的逻辑。

首先是识别对象。也是上一篇文章里谈到的重点,微信群不是被以群名来区分的,那是什么呢?

是ID。

我们可以将之理解为身份证号码,在现实中,即使你申请个人改名,但你的身份证号码是永远不会变的,而且是唯一的,在微信里面也是如此。任何对象一旦进入微信系统,都会产生一个ID,用以唯一标识这个对象。

不但微信号有ID,任何你加入的微信群也有ID。当你改微信昵称、微信群昵称之后,你依然和原来的朋友相关联,你也依然在原来的微信群内,因为底层逻辑是以这个不变而且唯一的ID来相互关联的。

其他对象也是如此,视频、图片、文件一旦进入了微信系统,也会生成ID以作为标识。这样有明显的好处,对象只需要在服务器里面存储一份,其他需要引用对象的地方只要存贮这个ID(字符串)即可,大大降低了存储开销。

接下来,谈一下对象被转发时可能逻辑。

比如一个20MB的视频上传到了微信,服务器里存储这个视频文件,用去了20兆字节的空间,然后生成了它的ID,之后引用这个视频的地方,就只需要存储这个ID字符串了,与20MB相比可就小得多。这个用户看不见的ID可能是这样的:

890e10c49d86e807e09df4a873363f35c2c5eb486ab0e7de9250ff3ec95fe3ec

为了表达方便,下面的例子中,在ID前后各取3位来表示这个视频:8903ec

与这个视频关联的有很多信息,比如,谁生产的(初始传入微信的),谁消费的(看过视频的),是否敏感…… 我们采用以下方式来标记:

8903ec[生产者]     = “张三”
8903ec[观看人数]  =  0
8903ec[敏感]        = “否”

一个视频上传到微信,微信会计算它的ID,然后添加进数据库。会有这种可能:如果这个文件就是从微信里面下载的,或者某两人上传的来源文件一样,只要没有被修过,那它计算出来的结果就与之前的ID一致,那么就被认定为同一个文件。在转发的过程中,视频的观看人数会不断增加。

比如,有人制作了这个视频,发到100人的群内(不见得人人会看,但这里逻辑简单一点),那么:

8903ec[观看人数] = 100

后面,又被2人分别转发了,一个发到300人的群,另一个400人的群,那么观看总数:

8903ec[观看人数] = 100+300+400 = 800

以此类推,当系统发现这个对象达到了某一个阈值,我们将之称为“影响力阈值”吧,比如100万的观看量,那说明这个视频有传播效应,人工就会来审核一下,看看里面是否包含不和谐或者敏感内容。

当人工确定了内容不宜传播,就更改“敏感”属性值:

8903ec[敏感] = “是”

只要是有人想转发这个视频,系统会先判断ID(8903ec)的[敏感]属性值,如果为“是”,就会阻断转发过程(表面上,你看见视频已经发出,但其实他人看不见)。

以上业务逻辑可适用于所有被转发的非文本文字对象,比如图片、文件等。利用这种方式,可以大幅降低人工干预的频率与成本,您可能会说,那之前已经在100万人之间传播了啊?确实如此,但这样可以将那些热点对象过滤出来,降低人工审核的负担,毕竟人力比算力还有限。在严格时期,可以调小这个阈值,比如为10万,只不过人工就得多加班了。其实呢,相对于以亿计数的网民,100万也是一小撮(可以想想几百个人里面的1个人,但也不能完全以比例论,如果这100万人集中在某地就麻烦了,不过,这是腾讯可以根据地理位置信息监测得到的)。

一旦某对象被标识为敏感,系统自然可以追溯每一个转发者,乃至生产者,因为它们之间的记录关联,就是ID与ID之间的关联,存储的开销很小小,微信实际很可能就是这么干的。

最后,我们看一下微信封群与封号可能逻辑。

假设某个视频被发到了某个微信群(ID简写为:e09df4),后来被标记为敏感,那这个微信群的敏感值从初始值0变成了1:

e09df4[敏感值]=0+1= 1

后来,这个群内又出现了一条敏感信息,于是又加1:

e09df4[敏感值]=1+1= 2

直到加到某一个阈值,比如10,那么就自动触发封群:e09df4->shutup()。

封群的逻辑也同样适用于个人微信:当某人转发或生产的敏感信息总量达到某一阈值后,会触发系统封号。

显然,这种处理方式有一个漏洞,也就是上面所说过的:一旦文件对象被修改,再传进微信系统后,它的ID会发生变化。现实中,也确实看见人利用这个漏洞,比如在转发的图片上面画一笔,这样他转发出来的就是一个新对象,因为ID已经不同了,如果能逃避图像识别的对比,那么,它被浏览数就得又从0开始计数……

在抽象方法这个环节,您大概已经看到:

  1. 对于被转发的所有非文本对象,判断其是否需要人工审查,其逻辑是一致的:只需要检视其被观看的次数;而一旦判断其敏感之后,处理的逻辑依然是一致的:系统根据人工判断的结果,决定是否阻断其再传播;

  2. 对于个人微信或微信群,其封号的逻辑依然可以是一致的:当某人生产或转发敏感信息达到某数量时,封号动作被系统自动执行;当某微信群内出现过的敏感信息数达到某数量时,封群动作被系统自动执行。

还有一个可能的业务逻辑,即对于那种高危信息,只要信息流经的微信与群,统一格杀勿论,这时就不管你的敏感值计数了。在这种情形之下,微信的江湖必将哀鸿遍野。

现实中的微信实现,肯定比以上所说的要复杂,比如,执行shutup()程序时,也是区别对待的,有的封号一周、两周或一个月,有的是永久封号,里面的判断规则如何,我就不妄加揣测了,想来大体差不多。再比如,某对象还可能以“被投诉/举报次数”来计数,以决定是否(或何时)人工干预。

于之前所言,对于文章标题的问题,我就不再总结叙述了。说了这么多,如果您还没有看懂我想说什么,那我只能用《教父》之言来擂擂破鼓了:

那些花半秒钟就看透事物本质的人,和花一辈子都看不清事物本质的人,注定是截然不同的命运。(其实封了也没什么

最后也申明一下,以上的分析只是一位曾经的程序员根据自身浅薄经验而来的YY,只能算纯技术方面的探讨,信与不信都在于您。特别提醒:作者并不曾在腾讯工作过,现实中,与腾讯程序员也没有交集。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微信上传 视频文件、图片文件、音频文件 的格式
如何把电脑文件转成微信文件
捷径资源 | 一键下载微信公众号封面图、视频、音频、图片!
微信8.0.7音频终于可以倍速播放了!而且还带了其他5个功能
极简技术||微信公众号素材批量下载
微信发不了长视频? 我来教你
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服