欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

追踪我自己:从应用内广告到地理数据泄露的深度调查

1970/1/1网络安全

本文通过逆向分析iPhone应用内广告流量,揭示了移动广告生态系统中广泛存在的未经同意的地理定位数据收集与泄露问题。

最近,Gravy Analytics发生了一起大规模地理定位数据泄露事件,涉及App Store和Google Play上的2000多款应用,这些应用在未经用户同意的情况下秘密收集地理定位数据——有时甚至开发者自己都不知情。我查阅了泄露的应用列表,发现我的iPhone上至少安装了其中3款应用。这让我产生了一个想法:从外部追踪我自己,比如购买被某些应用泄露的我的地理定位数据。

核心发现

经过数十小时的尝试和逆向分析,我得到了以下主要发现:

  • 发现了我手机发出的几个包含我位置信息的请求,以及5个泄露我IP地址的请求——通过反向DNS查询,IP地址可以转化为地理定位信息。
  • 深入了解了RTB(实时竞价)拍卖和OpenRTB协议,对发送给广告交易平台的竞价数据量和数据类型感到震惊。
  • 放弃了从数据经纪商或追踪服务购买自己位置数据的想法,因为我没有足够大的公司来进行试用,也没有1万到5万美元去购买包含数百万用户(包括我)数据的大型数据库。也许我确实有这笔钱,但这样的支出似乎不太理性。
  • 事实表明,欧盟用户的数据几乎是最昂贵的,但我仍然知道我的位置数据被收集了,也知道去哪里购买它!

研究设置

我的研究环境包括:

  1. 旧iPhone 11:恢复出厂设置并创建了新的Apple ID,因为我不太愿意在自己日常使用的手机上做这些实验。
  2. Charles Proxy:用于记录所有进出流量,并在iPhone上安装了SSL证书以解密HTTPS流量。
  3. 一款名为Stack的简单游戏(由KetchApp开发)——我记得10-12年前上学时玩过它。选择它作为实验对象有种怀旧感。令我惊讶的是,KetchApp的许多游戏都在泄露列表中。

海量的请求

当我只安装了这一款非苹果官方应用,打开Charles,然后启动Stack游戏时,第一分钟内应用就发送了大量请求。请求的时间几乎每一瞬间都有。我逐一检查了每个请求,但这里只保留最有趣的部分。

Unity广告——最"肥美"的请求

第一个包含我的地理信息的请求发送到了https://o.isx.unity3d.com ——即使我已在iPhone上为所有应用禁用了定位服务!如果你和我之前一样天真,可能会惊讶:Unity,这个3D引擎公司,与应用内广告或位置追踪有什么关系?也许那只是一些帮助改进引擎的监控数据?

事实证明,Unity的主要收入来源(2023年收入超过20亿美元)是Unity Ads——"移动游戏广告网络"。这相当有趣。

以下是发送给Unity Ads的请求体(JSON格式),我只保留值得注意的字段——实际有200多个键:

{
"ts": "2025-01-18T23:27:39Z", // 时间戳
"c": "ES", // 国家代码
"d": "sports.bwin.es", // 域名;将展示广告的应用或网站
"bn": "molocoads-eu-banner", // Moloco Ads?我们稍后会看到!
"cip": "181.41.[redacted]", // 我的IP地址!!
"dm": "iPhone12,1", // 设备型号
"ct": "2", // 连接类型,如Wi-Fi
"car": "Yoigo", // 移动网络运营商
"ifv": "6B00D8E5-E37B-4EA0-BB58-[redacted]", // 供应商ID,稍后会讨论!
"lon": "2.[redacted]", // 经度
"lat": "41.[redacted]", // 纬度
"sip": "34.227.224.225", // 服务器IP(位于美国的AWS)
"uc": "1", // 用户同意追踪 = 真;什么?!
}

所以,我的IP + 位置 + 时间戳 + 某个ifv ID被分享给了Unity → Moloco Ads → Bwin,然后我在游戏中看到了实际的Bwin广告。太"棒"了!

值得一提的是,共享的位置并不十分精确(但仍在同一邮政编码范围内),我猜是因为iPhone连接了Wi-Fi且没有安装SIM卡。如果使用LTE,我打赌经纬度会精确得多。

Facebook——你在这里做什么?

下一个泄露我IP + 时间戳(=地理数据点)的有趣请求来自Facebook。什么?!我的iPhone上并没有安装任何Meta/Facebook应用,我没有将此应用或我的Apple ID与任何Facebook账户关联,也没有同意Facebook获取我的IP地址!然而事实就在眼前:

{
"bundles": {
"bidder_token_info": {
"data": {
"bt_extras": {
"ip": "181.41.[redacted]", // 不错的"额外信息"
"ts": 1737244649
},
"fingerprint": null
}
}
}
// 还有很多很多数据:是的,非常非常多
}

我们将在下一节详细讨论这个请求。

为什么需要我的屏幕亮度级别?

最后一个我觉得有趣的请求又是发送给Unity的:https://configv2.unityads.unity3d.com。让我们看看Unity需要的这个"配置"里有什么:

{
"osVersion": "16.7.1",
"connectionType": "wifi",
"eventTimeStamp": 1737244651,
"vendorIdentifier": "6B00D8E5-E37B-[redacted]", // 又是ifv
"wiredHeadset": false, // 不好意思??
"volume": 0.5,
"cpuCount": 6,
"systemBootTime": 1737215978,
"batteryStatus": 3,
"screenBrightness": 0.34999999403953552,
"freeMemory": 507888,
"totalMemory": 3550640, // 这是RAM吗?
"timeZone": "+0100",
"deviceFreeSpace": 112945148,
"networkOperator": "6553565535",
"advertisingTrackingId": "00000000-0000...." // 有意思……
}

这里没有"个人信息",但坦白说,与任意第三方分享这么多数据是可怕的。他们为什么需要知道我的屏幕亮度、内存大小、当前音量和是否戴着耳机?

我知道"正确"的答案——为了帮助公司更好地定位目标受众!例如,如果你推广的应用大小为1GB,而用户只剩下500MB空间,就不要向他展示广告,对吧?

但我还听说过很多关于此话题的争议。比如Uber根据你的电池电量动态调整出租车价格——因为只有4%电量的你可能不会站在街上等待更便宜的选择。我无法确定哪种说法是真的,但事实上这些数据对广告商可用且可访问,表明他们至少应该考虑使用它们。换作是我,我会的。

好了,关于这些请求就先到这里。我们已经看到了不同的IP和地理定位泄露的例子。另一个也获取了我的IP + 时间戳的"提供商"是adjust.com——但它的请求体太无聊了,就不展示了。

谈谈ID

你可能已经注意到上面请求中的ifv和advertisingTrackingId == IDFA——它们是什么?

IFV(IDFV):即"ID for Vendor"(供应商ID)。这是我的ID,对每个供应商(即开发者)是唯一的——在这个案例中是KetchApp。这验证了:我安装了另一个KetchApp游戏来快速记录请求,发现ifv值是一样的。

Advertising Tracking ID(IDFA):另一方面,这是跨供应商的值,当你选择"允许应用跨应用追踪你的活动"时,这个值会与应用共享。如你所见,上面的值实际上是000000-0000...,因为我选择了"要求应用不追踪"。我通过手动停用和启用Stack应用的追踪选项,并比较两种情况下的请求来验证这一点。

这似乎是允许和禁止追踪之间唯一的区别。

我明白这对你可能并不震惊——这并非什么秘密,你可以查看Apple开发者文档。但我认为这并没有以任何足够充分的方式向终端用户(即你和我)传达清楚:你安装并使用的免费应用会收集你的精确位置和时间戳,并将其发送给某些第三方公司。

防止任何能访问竞价数据的人(另一个广告购买代理、广告交易平台,或从数据经纪商购买/租用的数据集——你稍后会看到)追踪你并记录你每日行程的唯一防线,就是这个IDFA——当你拒绝应用"跨应用追踪"以"增强和个性化广告体验"时,这个ID不会被共享。

顺带一提:如果你使用同一供应商的10个应用(如Playrix、KetchApp等),IDFV可以用于跨这10个应用追踪你。

RTB与OpenRTB:实时竞价拍卖的黑暗面

在分析这些请求时,我深入了解了RTB(实时竞价)机制。当你在应用中看到一条广告时,后台实际上发生了一场毫秒级的拍卖:

  1. 你的应用通过SDK(如Unity Ads)向广告交易平台发送一个竞价请求(bid request)
  2. 这个请求包含你的设备信息、位置、IP、兴趣标签等
  3. 交易平台将这些信息广播给多个需求方(DSP,需求侧平台)
  4. 各DSP在毫秒内决定是否出价以及出多少
  5. 出价最高的DSP赢得展示机会,其广告被加载到你的设备上

问题在于,竞价请求中包含的这些数据被广播给了所有参与竞价的各方——不仅仅是最终获胜者。这意味着每一方都能获取到你的位置、设备和行为数据,即使他们没有参与展示你的广告。

OpenRTB协议是这种拍卖的标准化协议,定义了竞价请求/响应的格式。从上面的请求分析可以看出,这些格式每个字段都在广泛收集用户数据。

数据经纪商与购买个人数据

我试图从数据经纪商那里购买自己的位置数据——那些专门收集、聚合和出售个人数据的公司。结果发现:

  • 大多数数据经纪商的定价模式面向企业而非个人消费者
  • 最小的数据包通常包含数百万用户的数据,无法单独购买某一个人的
  • 价格从10,000美元到50,000美元不等
  • 欧盟用户的数据最昂贵,因为GDPR限制了数据收集和转卖

这种将个人数据视为大宗商品的做法令人不安——理论上,只要有钱,任何公司甚至个人(通过代理)都可以购买包含特定地区用户位置历史的数据集。数据经纪行业几乎是完全不透明的。

结论与建议

核心问题

  1. 即使禁用定位服务,应用仍能通过IP、Wi-Fi三角定位等方式获取大致位置
  2. 包括Unity Ads、Facebook在内的第三方SDK在用户不知情的情况下收集大量设备与行为数据
  3. 屏幕亮度、电池电量、耳机状态等看似无害的数据可以被用作行为画像的辅助信号
  4. IDFA(广告标识符)是目前唯一有效抑制跨应用追踪的机制,但普通用户并不理解其重要性
  5. 数据经纪市场使得个体数据可以通过聚合购买方式轻易获取,且几乎无法追溯

给普通用户的建议

  • 定期检查"设置 → 隐私 → 跟踪":关闭所有不信任应用的追踪权限
  • 使用"要求应用不追踪"选项而非"允许"
  • 对于无需定位的应用,保持定位服务关闭
  • 考虑使用专门广告拦截/隐私保护DNS(如NextDNS)来阻断已知追踪域名
  • 意识到:免费应用的真实"价格"是你的数据

需要改变的地方

  • Apple/Google需要更清晰地向用户解释什么数据被收集、发送给谁、用途是什么
  • 监管机构应该更严格地审视广告SDK的数据收集行为
  • 政策制定者需要考虑禁止或限制RTB中的数据广播机制

原文链接: Everyone knows your location: tracking myself down through in-app ads

本文是对原文的深度技术改写,保留了所有关键数据点、请求示例和技术结论。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消