基于Fiddler/Charles调试指定API服务器

前言

不积跬步,无以至千里;不积小流,无以成江海;很久没上来写博客了,趁着疫情在家,寻思将这些年的一些小经验记录下来。

本文转载自公司内部wiki。

1、目的

在开发工作中,有些时候需要调试已经对接过API,比如APP/H5已经对接了N个接口,但是其中几个接口可能有服务端的变更,需要回归一下接口的兼容性,这个时候用 Fiddler/Charles 代理对应的客户端请求,拦截指定规则的请求,转发到你想要进行测试验证的服务器,这就可以非常方便验证服务是否能满足真实需求了。(标题中所谓指定API服务器,可以是正式环境的API、预览环境的API、测试环境的API、本地的API,只需要对应的客户端支持即可。)

2、Fiddler 怎么做

  1. 首先确保你的 Fiddler 可以远程调试
    这个配置主要是为了考虑你可能是需要调试APP,那所谓的客户端和你的 Fiddler 工具势必不在同一个机器上,因为一个是 Windows 一个可能是 Android 或者 iOS。如下图。

    (在如上图中确保 `Allow remote computers to connect`,同时我在这里强烈建议大家把 `Act as system proxy on startup` 去掉勾选,这个是一个懒人配置,但是会带来很多的坑)
  2. 然后在 Fiddler 的 FiddlerScript 界面找到 OnBeforeRequest 代码段
  3. 在这个方法里面写入以下代码就可以完成目标

    OnBeforeRequest Example

    /*

    * 这里是举例子

    * if  条件可以相当的复杂,根据各自的需求来,语法基本和 C#/Java/JavaScript 类似,有还算比较友好的智能提示。

    * oSeesion 的类型是 Session,又上角有一个 ClassView 可以看到更多的API如果感兴趣的话。

    */

    var yourApi="http://127.0.0.1:45678/api";

    if(oSession.fullUrl.Contains("https://appapi.safetree.com.cn/path-you-want")){

        oSession.fullUrl=oSession.fullUrl.Replace("https://appapi.safetree.com.cn/path-you-want",yourApi)

    }

3、Charles 怎么做

  1. 同样是支持远程访问

  2. 找到 Map Remote 功能
  3. 编写 Map 规则
    记得要启用哦,`Enable Map Remote`
发布了20 篇原创文章 · 获赞 5 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/mt122/article/details/104531390