Charles的原理
客户端向服务器发起HTTPS请求
Charles拦截客户端的请求,伪装成客户端向服务器进行请求
服务器向“客户端”(实际上是Charles)返回服务器的CA证书
Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。
客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对称密钥**)**,然后用服务器证书公钥加密,发送给服务器。
服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
Charles拦截服务器的响应,替换成自己的证书后发送给客户端
至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
总结:
HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。
app端的charles使用
先点击Proxy Settings
然后配置Proxy Settings点击OK
点击Help选择SSLProxying在选择install Charles Root Cerificate on a Moblie Device or Remote Brower
切换到模拟器上
点击设置点击WiFi
长点击WiFi修改网络
点击高级选项代理切换成手动 填写地址填写完点击保存
点击百度
web端使用charles
点击百度随便搜索
点击Edit里面的Preferences再点击Viewers显示Request,Respononse
点击断点
点击Proxy
复制路径
点击add添加url 直接把复制的url地址粘贴到Host里面 随便点击个单元格
把Query里面的内容改为*选择request或者response
点击OK之后刷新百度
点击Edit Request
可以修改项对应的数据
修改完成之后点击Execute
在去看百度
然后开始换Response操作
和之前一样点击这个
再点击Proxy
把刚才写的request换成response
点击OK刷新百度
之后可以修改他的返回值
弱网测试
点击Tools
填写内容
点击确认刷新页面
验证是否可以获取web端口的https接口
打开charles
浏览器输入数据
查看Charles出现以下数据就可以对浏览器开始抓包
本地修改
复制request内容,保存为.txt文件,存在电脑本地
注意:
保存为txt 后,将文件“另存为”编码方式选择utf-8,否则接口可能无法识别汉字导致出现乱码
修改response指向(选中需要修改response值的接口 后点击右键,选中maplocal功能
把Query里面的内容改成*号
选择1.txt文档 得点击【OK】键才能将配置保存成功!!
修改txt文件中 需要修改的字段值,保存
重新请求此接口,此时接口返回值已经是 txt文件中的期望值了
不用的时候,关掉maplocal。
屏蔽web网页的抓包信息
去掉对勾
关注接口添加关注接口
启用关注接口
重新抓包 不在上一步配置的接口,都会隐藏在other host中
简单压力测试
选中需要进行测试的接口,鼠标右键 选中【repeat advance】
每次迭代中3个接口同时请求,迭代1000次(总计请求3000次接口),
每个接口每次并发100次请求。