Charles 抓包HTTPS 配置&弱网模拟
一、HTTPS抓包
1.抓包mac上请求
1.1打开Charles——>Proxy——>macOS Proxy选上,Note:允许的模拟器直接公用电脑的网络,所以电脑上设置了就行。
如果在Charles上设置了还不行,还需在电脑上配置
1.2 在网络偏好设置——>高级——>代理勾选上代理项,如下图1
图1
2.抓包iPhone上请求
2.1抓取HTTP,配置代理:
手机上在连接的网络上——>配置代理——>选择手动,配置服务器(打开Charles的那台电脑IP)和端口(Charles——>Proxy Setting——>Proxies下的那个Port,同时勾选上Enable),这样可以了。
note:手机和电脑在同一个Wi-Fi下。
2.2抓取HTTPS,需要安装证书:
2.2.1电脑上安装证书
图2
如图2,Charles——>Help——>SSL Proxying,点击”Install Charles Root Certificate”, 这个会自动安装对应的证书到电脑上,过会儿去KeyChain Access 上检查应该安装了证书。——>如果证书上是红色X表示没被信任,需要双击打开配置——>Trust,选择’Always Trust’,关掉对话框,红色就消失,证书被安装好且可用了.
图3
2.2.2 手机上安装证书
如图2,点击’Install Charles Root Certificate on a Mobile Device…..’,——>弹出对话框 如图3时,——>在代理开启的情况下,在手机Safari 上输入对话框给出的URL,根据提示允许安装证书就行,直至安装成功。
图4
note:安装证书时,在同一个Wi-Fi下下载安装。
2.3 抓取HTTPS,配置Charles:
无论是抓取电脑或者手机上HTTPS请求时,要看到正常请求内容,需要配置Proxy——>SSL Proxying Setting, 勾选上Enable,如图5,Add Location(相关请求Host,这里Port都是443;没有特殊需求,一般Host设置为全部 *就行)
图5
Note:如果进行了上面三个主要步骤设置后,反而连不上网络,还需进一步手机上设置,设置——>通用——>关于本机——>证书信任设置——>开启信任证书。
3. 抓包android上请求
3.1 在android上抓包,手机安装证书和电脑安装证书及代理设置一样。
在手机上安装证书时,选择’wlan’安装,如图6。但是最好还是抓包不了的话,再次安装’VPN和应用’;最后,再重启Charles和手机上应用。
图6
不过利用Charles抓包android系统上app的https,在很多手机系统版本上抓不到https了。
如果有app的源代码那可以通过在源代码里加上网络相关的权限就可以。
除了常见的安装一些证书之外,源代码的修改如下。
3.1.1 在androidmanifest.xml里加入
<application android:networkSecurityConfig="@xml/network-security-config"
…>
3.1.2 在res下建一个xml/network-security-config.xml文件,文件内容包括域名和证书相关,如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains=“true”>//域名<domain>
<trust-anchors>
<certificates src="@raw/charles"/>
</trust-anchors>
</domain-config>
</network-security-config>
3.1.3 在res下放一个raw/charles.pem(证书文件)
图7
3.2. 如果上述说的修改原代码加权限的方法还是不行的话,就只能给手机root权限了,然后把证书放入系统证书目录下。
3.2.1 root手机
以小米为例
A. 解锁bl(需要小米账号及小米解锁工具—只能在windows上运行)
B. 进入recovery模式 — —— 利用第三方的recovery—twrp工具,手机中刷入twrp(需要对应手机型号和版本的twrp工具:小米_免费高速下载|百度网盘-分享无限制 )
B.1. 利用命令手机刷入twrp:
android手机刷机root教程 - SAUCERMAN
B.2. 刷入完成后,进入twrp下的recovery
(如果进入的不是twrp下的recovery,可能重启命令不对,尝试 fastboot boot recoveryxxx.img)
C. 刷入magisk并安装,获取root权限。
3.2.2 安装Charles证书
A. 把抓包工具的证书hash
B. 改写手机系统证书读写权限
C. 把hash后的证书放入系统证书目录下
D. 重启手机
https://aaaaaandy.github.io/blog/2021/02/01/charles/charles%E7%B3%BB%E7%BB%9F%E8%AF%81%E4%B9%A6%E5%AE%89%E8%A3%85/
最后,关闭代理:直接在手机上,同配置代理路径一样,选择关闭就行。
二、断点修改https中request和response
在可以抓包情况下,我们还可以对https请求进行修改request和response。
1. 实时截请求修改
在Charles下,【选中】某个要打断点session,【右键】,在弹出的弹框中,选择【Breakpoints】就默认给这条请求的request和response打上断点了。手机上/电脑上再次发出同样请求时,Charles会拦截,等待操作【excute】还是【edit request】或者【edit response】。
也可以通过Charles下,Proxy——>Breakpoints Setting..进行断点设置。比如就针对某个host、path等,也可以只截request或者response。
图8
2. 采用固定mock的response
有时候不想每次去修改response,可以采用固定的返回文件。在文件里写好response(符合response结构的json文件)
在Charles下,Tools——>Map Local…里设置,可以全匹配,也可以就匹配某个path下response。。。
图9
三、网络(弱网)模拟
手机开启代理情况下
Charles——>Proxy——>Throttle Settings,选上Enable,同时在Throttle preset可以选择各种网络和网速,也可以在Location中设置只在某些host下网络模拟。
图10