有次打开 Charles 想抓一个 App 的接口数据,结果发现启动 App 之后,即使没做任何操作,后台也在不停地发请求——上报设备型号、系统版本、位置信息,还有一个看起来像设备指纹的字符串。这些请求用户看不到,App 的设置里也没有关闭选项。
启动阶段的数据上报
App 启动时是数据上报最密集的阶段。通常有几类请求:初始化配置(获取远程配置开关和功能灰度策略)、设备信息上报(系统版本、设备型号、屏幕分辨率、运营商信息)和广告归因(IDFA、IDFV、设备指纹)。
用抓包工具可以把这些请求拦截下来查看。Charles 和 SniffMaster 的代理抓包模式都能看到这些信息。如果 App 做了 HTTPS 加密,需要安装 CA 证书才能解密查看内容。
有些 App 会在启动时上报安装来源和渠道信息,用于统计不同推广渠道的效果。这些数据通常通过 URL 参数或请求体中的特定字段传输。
第三方 SDK 的数据采集
很多 App 接入了统计 SDK(友盟、Firebase、Sensors Analytics 等)、推送 SDK(极光、个推等)和广告 SDK。这些 SDK 会独立发起请求上报数据,和宿主 App 的业务请求是分开的。
抓包时可以在过滤条件里按域名区分。请求发向 umeng.com 或 google-analytics.com 的是统计 SDK,发向 jpush.cn 的是推送 SDK。每个 SDK 上报的数据内容不同——统计 SDK 上报用户行为和设备属性,广告 SDK 上报 IDFA 和位置用于精准投放。
用 SniffMaster 的抓包模式可以过滤只查看某个域名的请求。在代理抓包模式下,可以通过域名筛选排除干扰请求,专注分析特定 SDK 的行为。
后台进程的数据传输
App 切到后台后,有些进程会继续发请求。心跳包用于维持 TCP 连接或更新 Token 有效期,通常间隔几分钟一次,数据量很小。数据预取会在后台下载内容以加快下次打开的速度,流量较大。
异常的持续后台流量需要关注。有些 App 在后台频繁上报位置数据,或者持续上传用户操作日志。SniffMaster 的数据流抓包模式可以看到 TCP 层的连接状态,分析后台传输的频率和目的地址。暴力抓包模式也可以用于抓取后台进程的 HTTPS 流量。
分析方法和工具建议
分析 App 的数据上报需要几步操作。先用抓包工具建立基线——App 启动后不做任何操作,静置一段时间,记录所有发出的请求。然后操作 App 的特定功能,对比新增的请求和数据内容。
如果在 iOS 上抓包遇到 SSL Pinning,用 SniffMaster 的暴力抓包模式可以绕过证书验证,看到完整的请求数据。如果关心的是 TCP/UDP 层面的通信,数据流抓包模式能看到传输层的信息。
分析第三方 SDK 的行为时,可以断开网络后逐个查看 App 的功能是否受影响。大部分统计和广告 SDK 的请求被屏蔽后不会影响核心功能,如果某个 App 在屏蔽某些域名后功能异常,说明这些请求是业务逻辑的一部分而非可选的 SDK 上报。
共同学习,写下你的评论
评论加载中...
作者其他优质文章