微信真的在后台频繁读取用户相册吗?

fec300338bb2375c48da79705410be38.png

a92cb425889722cb7e42d35df91cf00b.png

3c8538b576c8139be47f06961e4a24b5.png




数据智能产业创新服务媒体

——聚焦数智 · 改变商业


《数据安全法》和《个人信息保护法》落地以后,用户隐私越来越被大家所重视。这不,最近微信又上了热搜,起因是有用户开启了iOS 15 的隐私新特性“记录App活动”,对所有App的隐私读取行为进行7天的监控,并使用App Privacy Insights对记录进行读取。

监控发现,微信在用户未主动激活App的情况下,在后台数次读取用户相册,每次读取时间长达1分钟。

211bf39a04a1c31843cb4732e6fd9b96.png

82cbae1fdf15777bfe2ec465cac21873.png

对此,微信官方也给出了回应:

iOS系统为App开发者提供相册更新通知标准能力,相册发生内容更新时会通知到App,提醒App可以提前做准备,App的该准备行为会被记录成读取系统相册。

微信称,当用户授权微信可以读取“系统相册权限”的前提后,为便于用户在微信聊天中按“+”时可以快速发图,微信使用了该系统能力,使用户发送图片体验更快速流畅。上述行为均仅在手机本地完成,最新版本中我们将取消对该系统能力的使用,优化快速发图功能。

http://finance.sina.com.cn/tech/2021-10-08/doc-iktzscyx8557144.shtml

那么问题来了,微信到底是在后台悄悄读取相册,还是确实如官方回复所说,只是iOS的机制导致?

先说结论:

本次事件其实是iOS的系统机制造成的乌龙,iOS自己的接口,提示App做相册更新预观察,而这个行为被iOS记录成读取相册;

从测试结果来看,至少证明微信回应的是真实情况;

照片和聊天记录一样,存储在本地,要上传花费的代价太大,而且必然留下痕迹。

接下来我们一一拆解。首先,来验证一下微信官方说的这个“相册更新通知”能力是什么。

根据iOS官方文档:

https://developer.apple.com/documentation/photokit/phphotolibrary/observing_changes_in_the_photo_library/

在照片相关处理接口里专门有这一节:

47360b6c6ba92b80485b928744f58799.png

这个接口干嘛用的呢,简单来说:

PHPhotoLibraryChangeObserver协议能让我们知道照片相册库中的改变。Photos会发送系统图片改变的消息,我们可以遵守PHPhotoLibraryChangeObserver协议,并通过 PHPhotoLibrary的registerChangeObserver方法将对象注册为观察者,时时接收照片改变的消息。

所以,确实是“iOS提供了这个相册更新通知的能力”没错,相册发生内容更新的时候会通知到 App,让App可以识别到改变的图片,实现原来需要扫描整个相册才能实现的功能。

2b17890a21d88edd47ff5ceeab2039e5.png

关键在于,这个观察-通知的行为在iOS15里,被识别成了读取相册,就像是App一直在扫描相册一样。也就是说,iOS 15的隐私新特性“记录App活动”,把iOS自己的接口行为记录成了读取相册。

举个例子,比如用户晚上12:00退出微信,12:05分截了个图,或者拍了个照,然后就睡觉去了。半夜iOS可能会在CPU空闲期间,比如12:30唤醒微信,微信此时可以有几十秒的后台运行时间(这种后台唤醒机制叫background fetch,时机系统定,App无法控制);由于微信订阅了相册更新通知事件,系统会回调微信说相册有更新,同时记录微信在12:30访问了相册。

这个例子大体上还原了上述事件的整个过程。

抛开iOS自己的这个乌龙不说,微信为什么要用到这个能力呢?主要是为了实现这个功能:

刚截的图,或者刚编辑好的图片,进入微信对话框按”+”时,右下角会出现“你可能要发送的照片”,这个功能挺好用,至少对我来说,80%以上的发送图片,不用进入相册再选,直接通过这里就可以发出去。

然而这样一个简单的小功能,要实现起来可不容易。

打个比方,我要知道相册什么时候变化,也就是说,你有一张新产生或者编辑的图片,需要发送,难道我过一段时间就去扫描一遍相册,和上一个试点的相册清单比较一下吗?

这种方式,既要存储上次的相册信息,还要设置一个合理的扫描期限,设置多少才算好呢?

为了解决这类问题,软件开发里有一种设计模式叫做观察者模式。

举个栗子,我关了一群小白鼠在笼子里,但是笼子不太牢靠,有可能会被咬坏,那我就得加固。我想知道哪个笼子坏了,难道要定期巡视一遍吗,那不得累死,觉也睡不成了。

观察者模式,就是帮你雇佣一只猫,由猫来监视(观察)所有的笼子,当笼子被咬坏的时候,大叫一声通知你。

我们回过头来看iOS提供的这个PHPhotoLibraryChangeObserver,名字就是Observer,它就是一个观察者,通过观察相册是否发生改变,来实时的通知App。

有了这个接口,就可以很简单的实现上述功能了。

看到这里有人要说了,就算是使用了这个接口产生了这些相册读取记录,这也不能证明,微信没有趁着调用这个接口的时候,顺便扫描用户相册啊。

先来说说微信做这个事情有没有必要。

现在的摄像头像素越来越高了,屏幕分别率也越来越高了,意味着手机相机拍照和截屏的图片所占空间越来越大,再乘上数亿的活跃用户的量级……

我看了下我刚清理过的相册,约30MB,因为很久没换手机,空间吃紧,所以我这个相册绝对是很少很少的了,按这个大小乘以微信12.5亿的月活,大概是3.5PB,这几乎是一个最小值,因为相册几百MB甚至上G的大有人在。

也就是说,至少需要数十PB的存储来干这件事,还冒着违反刚实行的数据安全法,侵犯用户隐私被巨额罚款的风险,以及企业的声誉风险,为了什么?多分析一些图片,卖点广告?

其实要验证也很简单,要扫描相册,有两种做法,一是直接上传,在云端分析,这会产生巨大的流量;二是本地分析上传,这会产生极大的耗电量。

我自己实验了一下,拍了十几张照片放进相册,然后保持微信在前台。

吃了个饭,微信使用的流量和CPU使用时间都没有明显增加,我用了一上午微信,CPU才用了10分钟,基本都是发图或者放视频这些操作才会用到CPU渲染。

大家如果还有所怀疑,也可以自己实验一下。从我自己的测试结果来看,我认为微信没有扫描相册并上传。

de0768244c8d33713cd4d503924e8a5e.png

e30462e42e8659ba1ba726d9c99c7a14.png

虽然微信不会读取相册全部内容,但是不代表其他App不会读取,我们的相册,信息量还是非常丰富的。

各类的自拍且不说,注册各类平台时,通过OCR扫描的身份证、银行卡照片,几乎都会留在相册里,除非你主动清除。

所以,经常清理相册还是相当有必要的,相册内容被获取的危害,可以参考数据玩家以前的文章。

a809cfd621926def34359786c847ee4b.png

至于哪些App会扫相册,大家可以按照上文中提到的方法实验一下,以自行实验的结果为准,独立思考,独立判断。

f92fe5c61e004a63e7aa63c9e9a2e8c4.png

991160fbf65d87b6907fb8e1e68b5227.png

bee5c5531509d2097aacb90274fae953.png

d7cb3a75d3b954f023d27ca18eda6b08.png

❷ 创新服务企业榜 

❸ 创新服务产品榜

❹ 最具投资价值榜 

❺ 创新技术突破榜

538a952ca8f47543d463e58d520d4068.png

条漫:《看过大佬们发的朋友圈之后,我相信:明天会更好!》

联系数据猿

北京区负责人:Summer

电话:18500447861(微信)

邮箱:summer@datayuan.cn

全国区总负责人:Yaphet

电话:18600591561(微信)

邮箱:yaphet@datayuan.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值