网站与APP抓包分析2 分析方法案例

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 简介:基于网络协议与相关工具对网站与APP应用数据交互流程进行分析。 关键词:网站、APP、数据交互、资源加载、流程分析

关键词:网站、APP、数据交互、资源加载、流程分析

1、分析过程

1.1、分析维度

交互分析重点:资源分布、访问调度、重要接口、用户信息、质量上报。
问题处理流程:发现异常、问题复现、分段分界、问题定位、优化处理。
image.png

1.2、关键接口与资源加载方式分析方式

image.png

1.3、资源分布与用户访问流向统计

目的:APP资源分布位置与用户访问流量的方向
特征:DNS解析记录中包含有cdn或明显资源标识(例如img、mp3等)的域名及其指向的内容源。
以“今日头条APP”为例:
其中域名“*tt.bytecdn.cn”为“字节跳动CDN”的域名,其中资源基本上为页面图片图标,其解析地址部分在四川移动,有部分解析到了重庆移动。
其中域名“.pstatp.com”与“ .swcdn-tos.pstatp.com”为今日头条的资源下载域名,其中大部分域名解析首地址归属为四川移动,有部分解析至其他省份。
DNS解析记录:
image.png
统计域名归属:
image.png

1.4、重要接口与数据交互分析

目的:APP中主要的接口,即关键域名及其相关的URL构造规则。
特征:有明显具有相关特征(例如资源信息、用户信息等)返回值,或资源加载相关信息的请求。
重要接口类型分析:
(1)用户登录接口:
用户登录过程,包括请求发起、鉴权、基础信息加载等。由于网络安全需要,通常为加密内容,甚至拒绝HTTPS代理方式登录。
(2)域名解析方式(DNS接口):
一般APP的域名解析方式为标准DNS协议,大部分APP采用标准DNS协议与HttpDNS协议相结合的方式进行域名解析,其中HttpDNS的构成由厂商自行定义,格式各异。通常特征为其中包含域名与IP的映射关系。
(3)资源调度接口(或资源信息接口):
APP中资源列表及其中资源信息或页面所显示的内容的信息。其中包含用户请求的加载方式和数据交互过程中的中间件数据层信息。可通过该接口调取APP中对应的资源信息(例如歌曲或视频的列表)。
(4)资源加载接口:
资源加载请求的构造方式以及资源请求列表。通常包含资源 特征(例如img、mp4等),或URL域名部分包含IP地址。用户对此类URL发起访问来下载资源。
(5)用户信息与事件上报接口:
用户信息(账号、手机号码、IMEI号码、IP地址等)与用户请求的关联方式,用户访问、视频播放、资源下载等事件的信息上报(一般在URL中包含有相关字段信息或ID)。

1.4.1、APP用户登录接口

用户登录方式:通常APP将支持多种登录方式。
(1)账号密码登录
此为较常规的客户端登录方式,采用此类登录方式的用户整逐步减少。用户发起登录请求,调用相关页面与鉴权接口,上传相关信息。此过程中密码信息需进行加密处理。
(2)短信验证码登录
此为目前比较常用的登录方式。用户发起登录流程,上传手机号码验证其准确性后,客户端将调用短信验证服务(包含自主验证或采用三方服务方式),验证成功则加载用户信息。
(3)三方账号代登录
较为常见的代登录方式支持包括:微信、QQ、微博等账号的代登录。
此类登录过程通常为由代登录服务提供方提供专有代登录API接口,APP通过申请获得对应的APPID,当客户端发起登录请求时,首先拉起本机上的相关应用(部分服务不需要再本机安装对应APP,则无需此过程),获取授权码(code),客户端将授权码与本应用在服务提供方的注册APPID发送至代登录认证服务端,然后通过多次的鉴权交互过程,获得登录认证。
根据APP设定不同,登录成功后进行不同的设定,例如部分APP在鉴权成功后直接授权用户访问,不在进行其他操作;部分APP则将代登录授权信息与自有数据库中用户信息绑定(若无账号则强制用户注册),后切换为自有注册账号进行应用操作。

1.4.2、APP资源信息接口示例

以电商APP为例,在页面所显示的信息加载过程中,服务端将通过Json等方式向客户端传送商品相关列表信息,客户端通过该列表中的商品基础信息在页面显示,当用户需要进一步获取相关信息时,可通过该列表中的唯一标识(例如商品ID),构造URL,访问详细信息。
以“苏宁易购APP”为例:
image.png

1.4.3、APP资源加载接口示例

目的:资源加载或调度方式与接口(商品详细信息页面加载)。
特征:包含有资源信息、URL或资源URL的构造方式。例如构造URL所需的关键字段信息等。根据APP实现的逻辑结构不同,资源信息列表与资源加载调度接口可能我同一过程,也可能分为多个步骤。
以“苏宁易购APP”为例:
image.png
(1)如示例:当用户触发资源请求时,以商品ID等信息为参数,根据固有规则形成URL,用以加载相关信息页面。
(2)对于图片视频等资源,根据APP的用途不同,加载方式存在较大差异,例如此示例中APP为电商类,其中视频和图片皆为辅助内容显示作用,其URL均根据以固定方式将URL写在相关请求的返回值中。

1.4.4、APP资源加载接口示例2

目的:资源加载或调度方式与接口(视频或图片信息加载)。
特征:包含有资源信息、URL或资源URL的构造方式。例如构造URL所需的关键字段信息等。根据APP实现的逻辑结构不同,资源信息列表与资源加载调度接口可能我同一过程,也可能分为多个步骤。
以电商类APP“苏宁易购”为例:
通过商品信息请求的返回值中返回的信息指定URL。
image.png
加载获得相关的图片或视频信息:
image.png

1.4.5、APP用户信息、质量信息、事件上报接口示例

应用客户端通常会通过某些特定接口对客户端的质量信息、用户信息、用户操作事件等内容进行回传,用以作为质量分析或用户行为分析的依据。
示例:“QQ音乐APP”调用内置浏览器的性能测试接口进行诊断测速:
image.png
其中上传内容包括:用户位置信息、用户IP地址、本地DNS节点IP、客户端操作系统、网速等。

1.5、不同环境下的差异分析

image.png

2、案例

(1)目标:获取咪咕阅读APP资源列表与用户请求调度过程(部分)
(2)问题解析:即需要分析用户是通过什么流程从打开APP一步一步到阅读书籍内容。该过程中经过哪些步骤,这些步骤中涉及到哪些数据交互,其中可以为我所用的信息有哪些(例如页面构成,调度信息(告诉客户端下一步该怎么做)、书籍列表(可以统计相关内容作为资源库)、书籍请求链接(可以用来统计用户行为或阅读偏好))。
(3)通常APP数据交互过程:用户从打开APP(过程略)→选择进入数据分类页面(该页面信息如何加载) →选择一类图书(用户如何进入分类页面) →选择一本图书(用户如何进入该图书的信息详情) →开始阅读(用户如何从信息详情跳转进入数据内容)。
(4)交互分析:
清空手机缓存,打开页面执行加载,抓取过程中的数据包。注意抓包范围不宜过大(页面加载之前开始,到加载完成停止),不宜太长,以免请求过多难以区分有用信息。
image.png
根据码流内容逐一寻找有用信息,排除图片等请求(URL中带有jpg等字样的内容),注意jsp类文件。打开相关包(Fllow HTTP Strem),查看其中内容。(wireshark中蓝红色字体为请求、蓝色字体为响应)。
image.png
根据数据交互过程层层向下,梳理数据交互流程,分析每步URL的构造方式和文件位置。
1、书籍分类信息。
2、该类型中书籍列表:该列表中至少应包含书籍名称或ID等重要信息。
3、数据详情页面:该页面中包含有大量书籍相关属性信息。
一般此类按照类型层层向下钻去的请求中,每一层级的链接通常是以其ID作为参数,根据固定的规则构造URL。
通常越接近底层的信息列表中包含有越多的信息。
一般资源加载过程为通过其ID来进行资源获取。即资源获取请求可能为固定格式的URL,以不同的资源ID作为参数。
资源中带有的属性或页面的功能越多,页面越复杂重要信息越难以发现。需剔除其页面样式等无关内容的信息。
image.png
image.png
image.png
(5)APP分析报告资源调度信息:

image.png

3、备注

1、分析过程中,部分质量问题定界需关注底层通信协议,其他分析主要注意其信息的交互过程。
2、由于各ICP的安全防护质量不一方法各异,需采用多种工具多种方式结合分析;有部分应用安全级别较高(例如腾讯旗下应用安全等级较高),采用公共的代理方式抓包工具可能无法解析。
3、根据实际需求,从不同的角度和思路分析解决问题。重点关注资源调度和用户信息与其行为的关联。
4、不同类型APP由于其功能和逻辑结构不同,其数据交互方式存在差异;同类APP由于功能类似,可以相互印证参考。
5、由于HTTPS协议加密,部分内容无法解析,可通过网页端的应用,利用同一应用中某些内容的共通性,用浏览器内置调试工具对分析内容进行验证。
6、本文所有案例均来自多年之前,现已无法用于实际分析。上述方案仅供技术交流,请勿随意尝试解析他人网页或APP。

目录
相关文章
|
14天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
307 1
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
3月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
Ubuntu Linux 测试技术
【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
|
3月前
|
网络协议 Linux 网络安全
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
|
3月前
|
API 数据安全/隐私保护
【Azure 应用服务】App Service 通过 wardeploy 部署 war 包,如何指定到 root目录为wwwroot
【Azure 应用服务】App Service 通过 wardeploy 部署 war 包,如何指定到 root目录为wwwroot
|
3月前
|
数据库 Python
【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
|
3月前
|
安全 PHP Windows
【Azure 应用服务】如何让App Service 支持 Delete 方法 
【Azure 应用服务】如何让App Service 支持 Delete 方法