Fiddler抓包https流程:
1、fiddler接获客户端发给服务器的HTTPs请求,Fiddler伪装成客户端向服务器发送请求进行握手 。
2、第二步,服务器发回相应,Fiddler获取到服务器的CA证书, 用根证书(这里的根证书是CA认证中心给自己颁发的证书)公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书(这里的CA证书,也是根证书,只不过是Fiddler伪造的根证书), 冒充服务器证书传递给客户端浏览器。
第三步,与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key。
第四步,客户端将重要信息传递给服务器, 又被Fiddler截获。Fiddler将截获的密文用自己伪造证书的私钥解开, 获得并计算得到HTTPS通信用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器。
第五步,与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。
第六步,Fiddler截获服务器发送的密文, 用对称密钥解开, 再用自己伪造证书的私钥加密传给客户端。
第七步,客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了”信任“。
————————————————————————
用finddler录制jmeter脚本
fiddle4.jmeter3.3
一、下载fiddler两个扩展包
FiddlerExtensions.dll及FiddlerExtensions.pdb(这2个文件是为了扩展Fiddler的导出功能,支持导出JMeter使用的.jmx格式文件),拷贝至Fiddler\ImportExport目录下
二、录制脚本
1、用filter过滤部分条件
1) 选择“UseFilters”
2) 在下面的下拉框中选择“Show only the following Hosts”,并在输入框中填入Hosts名称,如*.baidu.com;
3) 在Requests Headers中勾选“Hide if URL contains”,填入.css .js .gif .png .jpg .swf 用以过滤css/js/图片等类型请求
4) 根据需要,可在下面“Respons Status Code”中勾选“Hide non-2xx”用以过滤非2xx返回码(即失败)的请求
5) 最后点击右上角Actions -> Run Filterset Now,开始运行Filer过滤
2、脚本录制
1) 打开Chrome浏览器,录制我们的操作:先打开百度首页www.baidu.com,后进行一次搜索,如搜索lovesoo,可以看到Fiddler经过过滤之后,只抓取了我们对Hosts: baidu.com的操作
2)对于请求,我们可以添加相关注释:选中Http请求 ->右键选中并点击Comment…
3) 在Fiddler中删除非必须的Http请求,只保留访问百度首页及搜索的请求:右键选择Remove -> Selected Sessions
3、导出脚本
1) 在Fiddler中选择File -> Export Sessions -> All Sessions
2) 选择导出类型为JMeter,点击Next按钮保存即可
三、JMeter使用fiddler录制的脚本
1) 运行Jmeter,打开我们刚才保存的jmx文件
2) 新建线程组(点击测试计划,右键选择Threads(users) -> 线程组),并将这2个Http请求拖到线程组下
3)在jmeter中启动测试即可。