使用Fiddler把请求从HTTPS改成HTTP

为什么我要把请求从 HTTPS 改成 HTTP?这是因为生产环境是 HTTPS 的,而测试环境却是 HTTP 的,我要在测试环境测试应用,所以需要把请求从 HTTPS 改成 HTTP。为什么我不在测试环境部署一套 HTTPS 证书?这是因为 HTTPS 证书属于敏感信息。

最开始,我的想法是应用打包的时候打两个包,分别是正式包和测试包,正式包使用 HTTPS 来请求服务器,测试包使用 HTTP 来请求服务器。这个方法当然可以工作,不过实在是太蠢了!好在公司的测试兄弟告诉我可以用 Fiddler 来搞定这个问题:

Fiddler

Fiddler

也就是说,Fiddler 在这里就是一个「中间人」的角色,当客户端发送 HTTPS 请求 给服务器的时候,Fiddler 拦截到请求,将其解密后以 HTTP 的形式转发给服务器,然后再把服务器的响应加密成 HTTPS 返回给客户端。

了解了原理之后,我们只要一小段 FiddlerScript 代码就能完成此功能:

if (oSession.isHTTPS && oSession.hostname == "test.com") {
    oSession.fullUrl = "http://test.com" + oSession.PathAndQuery;
}

添加的位置:在 FiddlerScript 标签里搜索 OnBeforeRequest 方法,加到最上面即可:

Script

Script

本文好像太水了,LibGen 上有一本名为「Debugging with Fiddler」的电子书,完整介绍了 Fiddler 各种高大上的用法,有兴趣的不妨下载看看。

文章来源:

Author:老王
link:https://blog.huoding.com/2019/11/30/784