上周末杭州风巨大,让原本准备出去嗨的世超索性决定,在家躺尸一天。
大概在下午的时候,突然被手机一顿猛震惊醒,原来是大家在群里讨论一个事情:
知乎截图里有盲水印。
啥意思呢。
你以为平时的知乎截图是这样的。

实际上,知乎的截图是这样的。
图源 TG 网友 ▼

那些字里行间多出来的一串串数字,就是盲水印,咱们用肉眼是看不出来的。
由于不同网友的截图里数字也不同,所以能大概猜出,这些盲水印就是截图者的 ID 。
图源 TG 网友 ▼

知乎加盲水印要干啥,世超不清楚,但我知道有了盲水印,它就可以查到是谁截的图。
也就是说,你发出的知乎回答截图,里面其实都有你名字的,只不过能看到的只有知乎。
相信大部分人遇到这种事,多少都有点不爽。这不,消息一传开后,马上有人做了油猴插件,屏蔽知乎的盲水印。

还有人分享了一个可以检测盲水印的工具,上面群友分享的那些花花绿绿图片,就是这工具检测出来的。

不过,今天世超在测试的时候,发现不管是 iOS 端、安卓端还是网页端的知乎,它们的截图都没有异常,干干净净。

奇怪,是网友们在胡说,还是知乎紧急下掉盲水印了?
世超翻了一下群聊记录,大概在周日晚上 11 点,网友已经无法复现,而在 2 小时之前还是有成功的。

所以我大胆猜测一下,是不是在晚上 11 点左右,知乎下掉了盲水印。
那如果想复现,我们需要在那之前的截图。
这简单,小黑胖隔三差五就会往微信群里扔一些知乎回答,于是我跑去问他要了几张,截图时间都在 1 星期之前。

但结果是,我依然没发现水印。。。
难道时间还不对,要不干脆就把截图时间限定在周日 0 点到晚上 11 点?
说实话这个截图不好找,但,我们有万能的网友。
打开微博的高级搜索功能,查找关键词填:知乎,微博包含:图片,时间范围:2022-09-04 0 时至 2022 - 09- 04 23 时 .

点击搜索,出来了 12 页微博。世超先找到一条大 V 的微博,他发了知乎截图的原图 + 水印图。
图源 @ 微博 Fring 小黄 ▼

世超拿了原图,上了检测网站测试了一下。
水印终于出现了。
我给数字串稍微打了点码

不过,仅仅一张图片并不具有说服力,世超接着又找了 2 个和水印事件毫无关系的微博。
这两个如果有水印,那基本是石锤了。


右键图片保存到本地,上传到检测网站。
结果如下:
第一张图

第二张图

虽说图片被压缩,很难看清具体的数字,但还是很明显看出截图里都出现了水印。
从长度上分析,基本就是网友们说的盲水印。
到这里可以确认,周日的知乎确实存在给网页端、App 端加盲水印这事。
不知道大家有没有好奇,截图里盲水印怎么加的,为啥我们看不到?
其实方法有很多,世超简单讲讲。
第一种就是水印和底色颜色近似。
这方法比较初级了,就是只要两个颜色够接近,人类肉眼是无法分辨。
下面是世超做的一张图,你看着就是纯灰色。

但只要用工具,对图片不同的通道进行查看,就可以发现它是有字的。

第二种方法利用频域手段添加盲水印,这个比较高级,没第一种这么容易破解。
它先把图片转换成频域( 别问频域是啥,解释起来太多 ),然后再把水印转成频域,打散后随机分布到各个频率上。
最后把他们叠加,转换回图像,此时图上就有盲水印了。
世超举个不太恰当例子。
你家有一个游泳池,你往里面扔一个鸡蛋,你肯定是能发现,但如果你把鸡蛋打散,放泳池里疯狂搅拌。

这时候你还能看到鸡蛋吗?看不到。
但鸡蛋,确实在泳池里了,只有通过特殊手段把鸡蛋复原回来,才能看到它。( 此例子没有考虑图像转换成频域,因为考虑了就不好举例了 )
实现盲水印方法还有很多,世超不太懂前端,就不在各位面前班门弄斧了。
关于知乎为啥要加盲水印,咱们暂时不好说,但这种事早不是第一次发生了。
之前豆瓣截图加水印,大家应该还有印象。

那会有网友发现,豆瓣应用在页面中嵌入了一种盲水印,包含了截图用户 UID,被截图帖子 ID、截图时间。
后来豆瓣回应了,这是小组的防搬运功能。

这个我可以理解,因为盲水印一般就是用来确定文件的最初所有权,在出现文件归属 / 版权争议的时候作为辅助证据使用。
比如说世超发了一张自己的腹肌照,结果被小黑胖偷去,用我照片跟别人搞网恋。

那我肯定不爽了,找小黑胖理论,但他拒不承认。
如果此时我图片有盲水印,用工具一解码,上面写着大大的 " 这是世超 " 几个字,不就能打小黑胖脸了么。
此外,盲水印也可以帮公司追踪泄露内部消息的员工。
比如之前阿里的月饼门事件。
2016 年,阿里内部搞了抢购月饼活动,但有几个哥们利用脚本多刷了 124 盒。后来阿里就把这几个哥们开了,并在内部发了一个处理公告。
有员工把这个公告截图发了出来,就是下面这张。

结果阿里用技术手段找到了这张截图的员工。
后来怎么处置员工的我不清楚,但是找到这员工的技术手段,就是盲水印了。

不讨论阿里具体做法如何,但利用盲水印追踪泄露内部消息的员工,似乎也可以理解。
虽然之前这几家平台都加了盲水印,但原因要么说得通,要么可以理解。
知乎加这个盲水印,如果说它是为了和豆瓣一样,为了防盗防搬运,保护大家版权之类的,那我也表示理解吧。
但奇怪的是,这种事为啥不说一声呢,难道真当大家发现不了么。。
原文地址:http://www.myzaker.com/article/631620fd8e9f0950695b5615