Charles的原理

客户端向服务器发起HTTPS请求

Charles拦截客户端的请求,伪装成客户端向服务器进行请求

服务器向“客户端”(实际上是Charles)返回服务器的CA证书

Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。

客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)

Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对称密钥**)**,然后用服务器证书公钥加密,发送给服务器。

服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应

Charles拦截服务器的响应,替换成自己的证书后发送给客户端

至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

总结:

HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。

app端的charles使用

先点击Proxy Settings

Charles 抓包内容存储 charles抓包的原理_百度


然后配置Proxy Settings点击OK

Charles 抓包内容存储 charles抓包的原理_测试类型_02


点击Help选择SSLProxying在选择install Charles Root Cerificate on a Moblie Device or Remote Brower

Charles 抓包内容存储 charles抓包的原理_测试类型_03


切换到模拟器上

点击设置点击WiFi

Charles 抓包内容存储 charles抓包的原理_客户端_04


长点击WiFi修改网络

Charles 抓包内容存储 charles抓包的原理_测试类型_05


点击高级选项代理切换成手动 填写地址填写完点击保存

Charles 抓包内容存储 charles抓包的原理_百度_06


点击百度

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_07

web端使用charles

点击百度随便搜索

Charles 抓包内容存储 charles抓包的原理_测试类型_08


点击Edit里面的Preferences再点击Viewers显示Request,Respononse

Charles 抓包内容存储 charles抓包的原理_客户端_09


点击断点

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_10


点击Proxy

Charles 抓包内容存储 charles抓包的原理_服务器_11


复制路径

Charles 抓包内容存储 charles抓包的原理_客户端_12


点击add添加url 直接把复制的url地址粘贴到Host里面 随便点击个单元格

Charles 抓包内容存储 charles抓包的原理_测试类型_13


把Query里面的内容改为*选择request或者response

Charles 抓包内容存储 charles抓包的原理_服务器_14


点击OK之后刷新百度

Charles 抓包内容存储 charles抓包的原理_客户端_15


点击Edit Request

Charles 抓包内容存储 charles抓包的原理_服务器_16


可以修改项对应的数据

Charles 抓包内容存储 charles抓包的原理_百度_17


修改完成之后点击Execute

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_18


在去看百度

Charles 抓包内容存储 charles抓包的原理_百度_19


然后开始换Response操作

和之前一样点击这个

Charles 抓包内容存储 charles抓包的原理_百度_20


再点击Proxy

Charles 抓包内容存储 charles抓包的原理_客户端_21


把刚才写的request换成response

Charles 抓包内容存储 charles抓包的原理_测试类型_22


点击OK刷新百度

Charles 抓包内容存储 charles抓包的原理_百度_23


之后可以修改他的返回值

弱网测试

点击Tools

Charles 抓包内容存储 charles抓包的原理_测试类型_24


填写内容

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_25


点击确认刷新页面

Charles 抓包内容存储 charles抓包的原理_测试类型_26


验证是否可以获取web端口的https接口

打开charles

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_27


浏览器输入数据

Charles 抓包内容存储 charles抓包的原理_服务器_28


查看Charles出现以下数据就可以对浏览器开始抓包

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_29


本地修改

复制request内容,保存为.txt文件,存在电脑本地

Charles 抓包内容存储 charles抓包的原理_服务器_30


注意:

保存为txt 后,将文件“另存为”编码方式选择utf-8,否则接口可能无法识别汉字导致出现乱码

Charles 抓包内容存储 charles抓包的原理_服务器_31


修改response指向(选中需要修改response值的接口 后点击右键,选中maplocal功能

Charles 抓包内容存储 charles抓包的原理_服务器_32


把Query里面的内容改成*号

Charles 抓包内容存储 charles抓包的原理_测试类型_33


选择1.txt文档 得点击【OK】键才能将配置保存成功!!

Charles 抓包内容存储 charles抓包的原理_服务器_34


修改txt文件中 需要修改的字段值,保存

重新请求此接口,此时接口返回值已经是 txt文件中的期望值了

不用的时候,关掉maplocal。

Charles 抓包内容存储 charles抓包的原理_百度_35


屏蔽web网页的抓包信息

去掉对勾

Charles 抓包内容存储 charles抓包的原理_Charles 抓包内容存储_36


关注接口添加关注接口

Charles 抓包内容存储 charles抓包的原理_百度_37


Charles 抓包内容存储 charles抓包的原理_测试类型_38


启用关注接口

Charles 抓包内容存储 charles抓包的原理_服务器_39


重新抓包 不在上一步配置的接口,都会隐藏在other host中

Charles 抓包内容存储 charles抓包的原理_百度_40


简单压力测试

选中需要进行测试的接口,鼠标右键 选中【repeat advance】

Charles 抓包内容存储 charles抓包的原理_百度_41


每次迭代中3个接口同时请求,迭代1000次(总计请求3000次接口),

每个接口每次并发100次请求。

Charles 抓包内容存储 charles抓包的原理_百度_42