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地址即可

image

配置完成后,打开浏览器,刷新页面就可以看到charles抓到模拟器上的包

image
image

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已经能获取到报文数据

image

接着我们在charles中搜索需要修改的股票名称,这里以“舍得酒业”为例,在捕获到的请求中找到2个名字为“舍得酒业”的接口

image

打开rewrtie

image

添加Location,指定重写哪些地址,需要注意抓取http还是https

image

添加重写规则,这里重写响应请求的Body中,包含“舍得酒业”的全部改为“舍得酒业老是跌啊跌”

image

保存退出后,清除现在的请求,刷新下自选列表

image

我们也可以使用maplocal来实现数据的修改

将接口的response数据拷贝至文件,保存为json

image

修改json中的数据为需要测的值

image

在charles中找到该接口,右键选择maplocal,文件选择刚才的json文件

image
image
image

重新刷新页面发起请求,再次查看app显示,修改的数据已经生效

image

针对增加批量的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

使用新处理的json文件来进行maplocal,查看效果app显示效果

image

posted @ 2021-06-11 00:52  Hei蛋炒饭  阅读(1398)  评论(0编辑  收藏  举报