简要
一台上网电脑就能实现 APP 抓包剖析一条龙服务。这是一篇 APP 抓包剖析总结性文章,采纳 APP 模拟器与 Web 调试代理工具组合玩法。从此 APP 抓包剖析能力变得熟能生巧,辞别脚忙手乱。
工程师必备 APP 抓包技能
本篇文章在 macOS 10.15.7 和 Windows 10 专业版环境测试通过,文章素材大部分以 Mac 环境为主。您只须要领有一台能上网的电脑就能实现 APP 抓包剖析,连实物手机都能够不须要了。实用于 APP 功能测试、APP 平安测试、APP 开发、后端开发、以及对 APP 抓包感兴趣的人员。
第一步:装置 Android 模拟器
国内 Android 模拟器数量有很多,咱们须要筛选反对 WiFi 代理设置的模拟器,以下两款是我集体罕用的(排序乱序):
模拟器名称 | 反对平台 | 官网 | 默认监听端口号 |
---|---|---|---|
网易 MuMu 模拟器 | Windows、Mac | https://mumu.163.com | Win: 7555 Mac: 22471 |
夜神模拟器 | Windows、Mac | https://www.yeshen.com | Win: 62001 Mac: 62001 |
本文随机抉择的是网易 MuMu 模拟器,两款模拟器都在多环境下测试通过。
本文也分享了一种在 Android 7.0 以上正确抓取 HTTPS 数据包办法。
装置 MuMu 模拟器
因为 MuMu 模拟器装置非常简单,所以省略掉装置过程。
启动 MuMu 模拟器
第二步:在模拟器上装置 APP
界面化形式装置 APP
网易 MuMu 模拟器,装置 APP 非常简单,装置过程反对全界面化操作。
APP 装置路径有 MuMu 模拟器内置的 “利用核心 ” 和 “ 本机 APK 装置“,当然也反对 “adb” 命令行形式进行装置。
比方:装置了一款新利用,桌面上会新增一个利用图标,并且在图标的右边呈现一个小红点。
命令行形式装置 APP
装置 adb
首先装置 adb (Android Debug Bridge)命令行工具,adb 用户指南 https://developer.android.google.cn/studio/command-line/adb。
在 Mac 环境下,装置 android-platform-tools。
$ brew cask install android-platform-tools
在 Windows 环境下,装置 Android 命令行工具,下载地址: http://tools.android-studio.org/index.php/sdk,在这里省略掉了 adb 装置过程。
连贯 MuMu
以下 adb 命令在 Mac、Windows 环境下通用。
Windows 查看 TCP 端口监听状态
C:\Users\fanjiapeng>netstat -ano|findstr 7555
TCP 127.0.0.1:7555 0.0.0.0:0 LISTENING 11160
Mac、Linux 查看 TCP 端口监听状态
$ lsof -i:7555
在 Mac 环境下,连贯 MuMu 模拟器
$ adb connect 127.0.0.1:22471
查看已连贯的所有设施
$ adb devices
List of devices attached
emulator-5554 device
本地装置 APK
$ adb -s emulator-5554 install /Users/fanjiapeng/Downloads/360freewifi_beta.apk
第三步:装置 Web 调试代理工具
举荐两款罕用 Web Debugging Proxy Tool(排序乱序):
Tool Name | 官网 | 反对平台 |
---|---|---|
Charles | https://www.charlesproxy.com | Windows、Linux、Mac |
Fiddler Everywhere | https://www.telerik.com/fiddler | Windows、Linux、Mac |
抓包工具 1:Charles
因为软件装置非常简单,所以省略掉装置过程。不得不称誉一下,Charles 软件图标十分丑陋,关上 Charles 界面如下图所示。
模拟器设置 Charles 代理
代理设置步骤:
关上 MuMu 模拟器 → 零碎设置 → 抉择 WLAN →(长按出弹框)抉择批改网络 → 填写代理服务器信息 → 保留。
下图例子注解:
- 红框 1,填写的是本机的内网 IP 地址。
- 红框 2,填写的是 Charles 默认的端口号 8888。
开启 Charles HTTPS 抓包
首先 在模拟器里,装置 Charles 根证书。操作步骤如下:
1. 通过浏览器拜访“chls.pro/ssl”,下载 Charles 根证书。
2. 点击左上角的 “ 下载箭头 ” 图标,装置 Charles 根证书。某些手机须要更改证书后缀名称。
3. 设置锁屏 PIN 码或明码能力应用凭证存储。
4. 证书装置胜利。
其次 在 Charles 软件操作 SSL 代理设置。
配置步骤: Proxy → SSL Proxying Settings → Add。
图示操作如下所示:
Andorid 7.0+ 抓取 HTTPS 包
Android 7.0 版本以下请跳过此大节,不须要多此一举了。
1.Android 零碎须要 root 权限
2. 下载 Charless 根证书:charles-ssl-proxying-certificate.pem
下载步骤: Help → SSL Proxying → Save Charles Root Certificate…
3.OpenSSL 命令行工具计算 pem 文件 hash 值
$ openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem
45accdf7
-----BEGIN CERTIFICATE-----
证书内容省略
4. 把 pem 文件重命名,Android 零碎证书格局:<hash>.0
$ cp charles-ssl-proxying-certificate.pem 45accdf7.0
5.(先连贯模拟器)把本地证书上传到手机目录中:/system/etc/security/cacerts
$ adb push /Users/fanjiapeng/Desktop/45accdf7.0 /system/etc/security/cacerts
如果呈现谬误提醒:adb: error: failed to copy ‘xxx’ to ‘xxx’: remote couldn’t create file: Read-only file system。减少以下两步操作,再从新执行步骤 5
$ adb root
$ adb remount
访问控制设置
第一种主动设置形式: 首次从 Android 设施建设连贯时,Charles 软件会呈现 IP 受权提示框。点击 “Allow”,Android 设施 IP 地址将增加到 Charles 中的 “ 访问控制 ” 列表中(因为这里应用的是 Android 模拟器,也就是本机 IP 地址)。
第二种手动设置形式: 点击右上角小图标 “Settings”,在弹出的下拉菜单项中抉择 “Access Control Settings”,点击按钮 “Add”,实现白名单 IP 地址增加。
开始 Charles 抓包
留神: 若抓取 HTTPS 包显示 <unknown>,则阐明证书配置不正确。
抓包工具 2:Fiddler Everywhere
因为软件装置形式十分简单化,所以省略掉装置过程。关上 Fiddler Everywhere 界面如下图所示。
Live Traffic Columns 功能区阐明
名称 | 含意 |
---|---|
# | Fiddler Everywhere 生成的标识号 |
Result | HTTP 状态码(英语:HTTP Status Code) |
Protocol | 会话应用的协定(HTTP/HTTPS/FTP) |
Host | 申请发送到的服务器的主机名和端口 |
URL | 申请中的 URL 门路,文件和查问字符串 |
Method | 收回的申请应用的 HTTP 办法(包含:GET,POST,PUT,DELETE 等) |
Body | 响应注释中的字节数 |
Caching | 响应的 Expires 和 Cache-Control 标头中的值 |
Content-Type | 响应中的注释数据的格局 |
Process | 显示流量源、数据源来自于那个 OS 过程 |
Comments | 用于显示您(或共享会话的作者)增加的自定义正文的字段 |
模拟器设置 Fiddler Everywhere 代理
代理设置步骤:
关上 MuMu 模拟器 → 零碎设置 → 抉择 WLAN →(长按出弹框)抉择批改网络 → 填写代理服务器信息 → 保留。
下图例子注解:
- 红框 1,填写的是本机的内网 IP 地址。
- 红框 2,填写的是 Fiddler Everywhere 默认的端口号 8866。
开启 Fiddler Everywhere HTTPS 抓包
1. 点击右上角小图标 “Settings”,抉择菜单项 “HTTPS”,勾选 “Capture HTTPS traffic”。
2. 在模拟器里,通过浏览器下载 Fiddler Everywhere 根证书,残余的装置步骤请参考 Charles 根证书装置:
Andorid 7.0+ 抓取 HTTPS 包
Fiddler Everywhere 工具导出的根证书格局为 crt,须要把 crt 证书格局转换成 pem 格局。其它配置步骤请参考 Charles 这章设置。
$ openssl x509 -in FiddlerRootCertificate.crt -inform DER -out FiddlerRootCertificate.pem -outform PEM
开启近程连贯
抉择菜单项 “Connections”,勾选 “Allow remote computers to connect”,其它项保留默认设置即可。
开始 Fiddler Everywhere 抓包
在 MuMu 模拟器中,操作须要被抓包的 APP,在 Fiddler Everywhere 中 “Live Traffic” 区域显示抓取到的所有 API 申请,点击其中一条 API,在 Fiddler 界面左边区域能够查看 Request、Response 详细信息。
最初:总结
尽管文章取材以 Mac 环境为主,若没有非凡注明,则阐明在 Windows 和 Mac 环境下装置步骤同质化,只是在装置过程中某些界面显示上会有一些差别,但并不影响整体的装置流程。
本篇文章长篇累牍介绍了 MuMu 模拟器装置,adb 工具的装置及应用,APK 多种装置形式,两款抓包工具 Fiddler Everywhere、Charles 的装置及基础性配置。
尽管 APP 抓包还有其它的形式,但 APP 抓包工具这两款仍然是首选工具。调试代理工具的介绍不是本章的重点,因为它们的能力远不止于此。
篇幅无限,本章只解说了 Android APP 抓包,iOS APP 抓包形式是雷同的。
延长话题:对于 APP 抓包与反抓包策略,这是人与人之间的较量,这是一个长期博弈的过程。