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