转载请注明出处
如果app有https证书验证, 估计就不行了 , Charles是先伪装服务器向浏览器发送伪造的公钥,从而取得浏览器的私钥。这样就完成的浏览器端的解密。服务器端类似。(用的别人的话 )
1.下载Charles
2.配置Mac和iPhone的证书
a.配置Mac证书:
Help->SSL Proxying->Install Charies Root Certificate
1.png然后 会自动打开钥匙串
把自动安装的证书设置成始终信任
2.pngb.配置iPhone证书
Help->SSL Proxying ->Install Charies Root Certificate on a Mobile Device or Remote Browser
3.png会弹出一个提示
4.png注意看!!!!! 注意看 注意 !!!!!
里面有两个部分一个是ip地址 一个是证书下载地址
1.IP地址 :fe80:0:0:0:6c07:12ff:fe01:ebcd%10 不管他, 直接去网络偏好设置里面看自己的
B4B11F6A-252A-4A88-AF72-6E2852BE66ED.png
ip地址是:192.168.1.120 端口是8888
2.证书下载地址: chls.pro/ssl , 拷贝chls,pro/ssl 去Safari 打开 ,就会直接跳转安装,信任就好了
2.设置Charles和iPhone地址
a:配置iPhone 代理
1.打开设置->无线局域网
2.找到你的wifi (要求和电脑处于同一wifi环境下)
3.HTTP代理位置 -> 手动 服务器就是刚才提到的 mac的ip地址 192.168.1.120(写你自己的...)
4.端口就是8888
IMG_0176.PNG
此时你打开手机app就会在Charles中看到请求信息了 , 比如 红色 方格中的接口
CD9868D7-A2AC-4AA2-A021-AE2A5BE0221E.png注意看 注意看 注意看 !!!!! 红色圆圈中是有锁的, 也就是说你并没有抓到信息 , 这是https的信息, 你并没有拿到!!!!!! 怎么办!!! 怎么办 !!!
b:配置Charles
1.Proxy->SSL Proxying Settings..
AE99C3D3-77BF-4D12-821B-99F9B3930011.png2.把要抓取的接口添加进来
6B0DA30A-5807-48C8-885D-04DCFA529F19.png再来操作app, 就可以看到数据正常抓取了
841D67E8-5458-4811-9853-36E4714B25EE.png3.如何篡改数据呢?
1.在我的app那个请求上右键->Breakpoint 添加一个断点
17F1472B-837A-45CA-A36A-8BE87E1854BC.png2.当你再次发起这个请求的时候, 就会断在这里, 注意下面的截图
60A48EEC-24F0-4A3C-AD40-AABEC1293871.png在这个位置就可以修改你的请求数据
注意 !!!! 断点会断两次, 一次发起请求的断点, 一次回调会数据的断点, 这个断点是在发起请求的位置
3.回调数据的时候
5EC4367F-9557-4D1B-9904-E461EAF12EEB.pngExecute 是下一步
302BDAF6-8322-4A7B-AEDC-13406F5F0858.png这时候就可以修改返回的数据了