关于二维码扫描与网络的一个意外真相
当你扫描一个二维码时,你多半以为过程很简单:摄像头读取图案,应用完成解码,你拿到结果。全程不需要网络,只靠光学和数学。
就二维码解码本身而言,这个想法在技术上完全正确。二维码是一种自成一体的数据格式——所有信息都编码在黑白方块组成的网格里。扫描器无需联系任何服务器,就能解出一个二维码的内容。
但现实是:大多数免费的二维码扫描应用仍然会建立网络连接。你每扫一次码都是如此,而且往往是向多个服务器建立多条连接。这些连接并不是为你服务的,而是为应用的广告和分析系统服务的——这些系统必须依靠源源不断的、关于你和你行为的数据才能运转。
本文将逐一说明:为什么扫描二维码根本不需要网络;当应用仍然联网时会发生什么;以及为什么选择一款离线优先的扫描器,是你能在手机上做出的最明智的隐私决定之一。
为什么二维码解码完全在本地完成
QR 是「Quick Response code」(快速响应码)的缩写。它由日本汽车零部件制造商电装波(Denso Wave)于 1994 年发明,用于在装配过程中追踪汽车零件。它的编码方案完全自成一体:只要有一张摄像头拍下的图像,软件仅凭数学运算就能解出内容——不需要任何网络查询。
二维码标准(ISO/IEC 18004)精确规定了信息如何编码进网格之中。任何实现该标准的应用,都可以完全离线地解码任何符合标准的二维码。它所需要的只有:
- 访问摄像头以捕捉图像
- CPU 运算时间来处理并解码图案
- 除此之外别无所需
正因如此,二维码在飞机上、地下室里、没有蜂窝信号的偏远地区,以及你可能身处的任何地方都能正常使用。码里自带数据,读取它不需要任何服务器。
大多数二维码扫描应用实际上在做什么
既然解码完全在本地完成,为什么还有那么多扫描应用要申请联网权限?答案在于免费应用的商业模式。应用商店里的二维码扫描器大多依靠广告变现。要投放广告,就需要网络连接。但这条连接同时也打开了通往一系列其他行为的大门:
把扫描到的内容发送到远程服务器——许多扫描应用会记录你扫描到的网址、文本及其他数据,并将其传送到远程服务器。如果你在医疗机构、政府大楼或私营场所扫描二维码,这些网址可能会暴露关于你活动的大量信息。
投放广告——广告网络需要实时的网络连接来获取并展示广告。每一次广告请求通常都会携带你设备的广告标识符、IP 地址、大致位置以及行为上下文。
把扫描历史同步到云端——一些扫描应用会提供跨设备同步扫描历史的功能。这意味着你完整的二维码扫描历史——每一份餐厅菜单、每一张活动门票、每一个支付二维码——都存放在第三方服务器上。
检查更新并上报分析数据——大多数应用在启动时都会连回自家服务器,检查更新并上报使用情况数据。
在线扫描二维码时会泄露哪些数据
用几个真实场景把问题说得具体一些:
在餐厅:你扫描二维码查看菜单。扫描应用把这个网址发往它的分析服务器。日积月累,这些数据就勾勒出你的用餐习惯。
在诊所:你扫描二维码打开患者登记表。该网址可能包含诊所标识,甚至预约相关的元数据。汇总起来,医疗相关的扫码数据会暴露你的就医行为。
在支付终端:你扫描支付二维码。这类网址往往包含交易参数。记录这些数据,就等于暴露了你的财务行为。
为什么离线优先的扫描能彻底消除这些问题
一款离线优先的二维码扫描器在本地完成全部解码,没有联网权限,也无法发起任何网络请求。对这样的应用来说:
- 不存在分析上报,因为根本没有可用于发送的网络访问权限
- 不存在广告网络请求,因为广告既无法获取也无法展示
- 扫描到的内容永远不会离开你的设备
- 你的扫描历史只保存在本地
- 你的 IP 地址永远不会暴露给应用的服务器
这不是「要不要相信开发者隐私政策」的问题,而是一种结构性的保证。没有联网权限的应用,字面意义上就无法向外传输任何东西。
QR Code Reader Without Ads:从设计上就 100% 离线
QR Code Reader Without Ads 正是以这一原则为基础构建的。该应用没有联网权限。这一点可以验证——在 Android 上,你可以在 Play 商店页面和设备设置中查看应用声明的权限。QR Code Reader Without Ads 只会显示摄像头权限。
当你扫描包含 Wi-Fi 密码的二维码时,密码只留在你的设备上。当你扫描一个网址时,它在本地完成解码,在你点击「打开」之前不会被发送到任何地方。当你扫描联系人二维码(vCard)时,联系人信息在设备端处理,并直接添加到你的通讯录。当你扫描支付二维码时,支付网址只会呈现给你确认,绝不会上传到任何服务器。
无论你连的是 Wi-Fi、5G、4G,还是完全没有信号,这款应用的表现都完全一致。你可以在飞行模式下的飞机上使用它,也可以在地下停车场、在人迹罕至的荒野里使用——任何地方都行。离线能力不是需要付费解锁的高级功能,而是这款应用最根本的架构。
离线扫描二维码的其他好处
速度:没有网络请求要等待,结果出现得更快。扫一下就看到结果——通常不到一秒。
续航:网络请求会消耗电量。一款完全不发起网络请求的应用,比那些持续维持广告网络连接和分析信标的应用省电得多。
可靠性:完全离线的应用在 100% 的时间、100% 的地点都能正常工作。
无需账号:QR Code Reader Without Ads 没有账号体系,因为它根本没有云端部分。没有可登录的地方,也没有需要打理的个人资料。
如何验证一款应用是否真的离线
- 查看声明的权限——没有 INTERNET 权限的应用无法发起网络请求。请查看 Play 商店页面或设备设置。
- 使用网络监控工具——NetGuard(Android)之类的应用可以让你看到所有应用的全部网络流量。
- 查询 Exodus Privacy 数据库——Exodus 会分析 Android 安装包,并列出其中所有的追踪器和权限。
- 把设备切到飞行模式——如果应用在飞行模式下依然运行完好,它就是真正的离线应用。
QR Code Reader Without Ads 四项检验全部通过。
下载 QR Code Reader Without Ads——离线、免费、无追踪
在 Android 上免费下载:
在 Google Play 下载 QR Code Reader Without Ads——100% 免费
iPhone 和 iPad 同样可用:
在 App Store 下载 QR Code Reader Without Ads——100% 免费
随处扫描,数据始终归你所有。没有广告,没有账号,没有妥协。