前言

前端 web 页面、app 页面抓包备忘。笔者采用charles抓包工具,在 MacOS 环境下使用。抓取 https,重定向域名,修改 request、response。

准备工作:安装证书抓取 https

MacOS 系统

打开 charles,help–>SSL Proxying–>Install Charles Root Certificate. 安装好证书之后,在钥匙串中打开证书,始终信任。

Proxy–>MacOS Proxy 勾选后启动抓取本地 MacOS 数据包。

手机端

WIFI 网络配置

当前手机必须和抓包工具同一网段

iOS 以 13.2.3 版本为例:

设置–>无线局域网–>右边蓝色感叹号–>选择 HTTP 代理–>选择手动–>填写下抓包工具所在 ip,端口默认 8888

华为 Android 手机为例:

设置–>无线和网络–>WLAN–>选择 WIFI 长按点击修改网络–>勾选显示高级选项–>选择手动–>填写下方抓包工具所在 ip,端口默认 8888

安装证书

  • iOS or Android 设备安装证书:help–>SSL Proxying–>Install Charles Root Certificate on a Mobile Device Or Remote Browser.

  • 点击之后出现弹窗,在手机浏览器输入 chls.pro/ssl下载证书安装。

  • iOS 端:在设置–>通用–>关于本机–>点击最下方的证书信任–>把刚刚安装的证书信任

  • Android(7.0 以下):设置–>高级设置–>安全–>从 SD 卡安装,找到刚才下载的证书点击安装

注释

由于 Google 对 Android 7.0 之后的机型更改了证书信任机制,普通的用户证书,在 APP 里面不再信任。
官方解决方案指出:需要在 APP 开发的工程里面配置 XML 文件信任即可。
知乎参考文档Android 官方文档

开启 Charles ssl proxy

Proxy–>SSL Proxying Settings 加入要抓取的 https 域名,支持正则表达式通配符。

如果证书安装完成,现在就可以愉快的抓包了~

远端域名映射

Tools–>Map Remote

将请求的域名地址映射到本地服务,常用在 app 嵌套 h5 页面,映射到本地开发。

注意 https 域名需要写明 443 端口

修改请求 or 响应

右键点击需要修改的请求,选择Breakpoints

最终 Charles 会对选择的请求路径施加断点,在断点处修改 request 或 response 数据点击 execute 执行。常用于对后端返回数据修改。

弱网环境模拟

Proxy–>Throttle Settings–>Enable Throttling

选择适合的网速进行弱网测试

Android7.0+ 抓包 😄

Android 7.0 以上使用 VirtualXposed+JustTrustMe 抓包

首先安装VirtualXposed,接着下载JustTrustMe。将 JustTrustMe 安装在 VirtualXposed,VirtualXposed 打开选择 VirtualXposed 方式运行。

把需要抓包的 app 放入 VirtualXposed 运行,接下来就是常规的抓包方法,证书什么的安装好,设备连上。