Facebook知道你吃了什么:逐步揭示Facebook收集的完整数据
我敢打赌大多数Facebook用户并不清楚平台真正了解他们多少信息。
如果我告诉你,你可以在5分钟内可视化这些数据呢?这是一个关于我如何通过编程方式探索https://facebook.com/dyi的故事。
我将展示如何自己操作,并一起探索我的(经过审查的)Facebook数据。文末提供开源代码。
数据获取与合规性
大型(及小型)公司若希望全球扩展或进入欧洲/加州市场,必须遵守最新隐私法规。Facebook作为广告寡头垄断的最大参与者之一(仅次于Google),允许用户随时免费下载自己的数据。
我创建了新档案,几小时后收到了邮件链接。Facebook的"下载您的信息"部分提供HTML或详细JSON格式的档案,我选择了两者。
技术实现:ELK技术栈部署
(技术细节 - 可跳过)
我选择使用由ELK(Elastic + LogStash + Kibana)组件组成的Docker堆栈。实现了自定义LogStash文件流,将下载的ZIP存档中的JSON文件预处理到ElasticSearch。
然后拆分包含多个元素的记录(事件、点击、点赞、通知、市场商品点击等),以便轻松查询真实的Facebook对象(就像在GraphQL中索引一样),并使用感兴趣的字段创建ElasticSearch索引。
堆栈中的ElasticSearch服务将索引所有在Facebook服务器上发生的与我数据相关的事件。随后使用Kibana可视化和研究数据。
撰写文件(可使用Kompose转换为Kubernetes服务)在文末提供。运行docker-compose up后一切开始运行。
数据分析发现
Facebook大部分信息来自第三方应用和服务。即使没有将Facebook、Instagram或WhatsApp账户连接到这些应用,也能被识别。
通过Facebook Pixel技术和其他"尊重隐私的伟大工具",他们知道:
- 300+网站上发生的每个数字事件
- 每个服务的支付方式
- 安装或更改的应用程序
- 访问的网站
具体数据示例
- 外卖服务日志:记录购物车事件,即使用户未登录
- 旅行数据:航班预订和住宿记录
- 音乐偏好:来自Spotify的事件数据
- 自定义数据事件:近1/5的存档事件类型为"CUSTOM",含义不明
最重要的发现是"advertisers_who_uploaded_a_contact_list_with_your_information.json"文件,以及包含所有核心信息的"profile_information.json"。
开源代码
代码可在https://github.com/avilum/facebook-archive-analyzer获取。欢迎在GitHub上关注我。
当您在档案中发现更多有趣文件时,很容易向管道添加新数据。本文将会有第二部分!
作者简介:Avi Lumelsky - 软件工程师/安全研究员,主要专注于隐私、深度学习和网络安全领域。