在实际使用Jmeter做接口测试时,会发现Fiddler是不能抓取到Jmeter发起的请求。
在讲解如何解决这个问题之前先简述Fiddler的工作原理:
概述:
Fiddler 本质是一个Web代理服务器,它的默认工作端口是8888。
代理服务器定义: Web 代理(Proxy Server)服务器是网络的中间实体。
代理位于 Web 客户端和 Web 服 务器之间,扮演“中间人”的角色。
HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。
代理服务器优势:
<1>共享网络;
<2>提高访问速度;
<3>突破访问限制;
<4>隐藏身份;
原理:
<1>Fiddler 启动的时候,会偷偷地把 Internet 选项中的代理修改为 127.0.0.1,端口:8888。
<2>当 Fiddler 退出的时候,它会自动在 Internet 选项中取消代理,这样就不会影响别的程序。
<3>如果 Fiddler 非正常退出,这时候因为 Fiddler 没有自动注销,会造成网页无法访问。
<4>解决的办法是重新启动 Fiddler。
对于客户端来说,Fiddler就是服务器端;对于服务器端来说,Fiddler就是客户端。
所以当使用jmeter发起请求时Fiddler不能抓取到请求是正常的。
那么如何解决这个问题呢?
- 配置Fiddler
打开Fiddler,点击Tools->Options->Connections;将Fiddler listens on port配置成8888(端口是可以自定义的)。
2. 配置Jmeter
由于接口较多,如果将每一个接口都设置代理服务器会很麻烦并且不易管理;在下图的例子中接口有好几十个,因此添加了HTTP请求默认值;在高级->代理服务器中设置服务器和端口:
127.0.0.1 8888(这个端口就是Fiddler中配置的端口)
保存运行Jmeter即可
3. 查看Fiddler抓取的Jmeter的接口
在Jmeter运行时会将接口先发送给本地的8888端口,也就是Fiddler,这样Fiddler就抓取到接口啦;Fiddler再将此接口发送到服务器端。服务器端响应后给Fiddler,Fiddler再响应给Jmeter。