Charles如何配置代理抓去HTTP/HTTPS请求
1、打开Charles,关闭系统代理
2、设置一个自定义的代理
打开ProxySetting
配置代理端口号
如果是要抓去HTTPS的包,还需额外配置SSL Proxy Setting
添加匹配规则 *,表示匹配所有的地址和端口
3、配置浏览器代理
我这里使用的是Chrome浏览器的一个代理管理插件,新建场景,添加本地的8888端口
4、配置完成后,启动插件,选择Charles代理,刷新网页,即可看到通过代理抓到的网络包
⚠️注意:如果配置完成后,刷新浏览器还是没有抓到包,可以重新在谷歌商店中找到SwitchOmega插件重新安装一下,我自己就遇到这个问题了,重装插件就好了
5、配置证书,访问chls.pro/ssl
下载完成后,双击打开,将证书添加进钥匙串访问中,之后双击证书,选择【始终信任】
配置完成后,抓取https网站的包才不会显示成加密
访问https网站也可以看到证书的签发者也变成Charles
6、如果使用模拟器或真机来进行抓手机的包,需要和电脑在同一个局域网,也是相同配置将代理服务器设置为电脑的IP地址即可
配置完成后,打开浏览器,刷新页面就可以看到charles抓到模拟器上的包
7、Android证书信任问题
Android6.0默认用户级别证书
Android7.0以上需要修改apk包属性
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
8、演示:抓包修改雪球app上股票信息
首先打开charles和雪球app,刷新自选股页面,就可以看到charles已经能获取到报文数据
接着我们在charles中搜索需要修改的股票名称,这里以“舍得酒业”为例,在捕获到的请求中找到2个名字为“舍得酒业”的接口
打开rewrtie
添加Location,指定重写哪些地址,需要注意抓取http还是https
添加重写规则,这里重写响应请求的Body中,包含“舍得酒业”的全部改为“舍得酒业老是跌啊跌”
保存退出后,清除现在的请求,刷新下自选列表
我们也可以使用maplocal来实现数据的修改
将接口的response数据拷贝至文件,保存为json
修改json中的数据为需要测的值
在charles中找到该接口,右键选择maplocal,文件选择刚才的json文件
重新刷新页面发起请求,再次查看app显示,修改的数据已经生效
针对增加批量的json数据,建议在linux/mac下使用jq工具来快速实现
#将json数据先保存为maplocal.json
vim maplocal.json
#将maplocal中的内容赋值给变量
raw=$(cat maplocal.json)
#使用jq命令快速叠加对应的字段,将json文件中的data节点下items字段内容累加,items_size字段内容累加,再赋值给 变量raw
raw=$(echo $raw | jq '.data.items+=.data.items' | jq '.data.items_size+=.data.items_size')
#重复执行上面命令,对应字段数据就会成倍增加,将最后的变量值写到本地文件中maplocalnew.json
echo $raw > maplocalnew.json