前言
不积跬步,无以至千里;不积小流,无以成江海;很久没上来写博客了,趁着疫情在家,寻思将这些年的一些小经验记录下来。
本文转载自公司内部wiki。
1、目的
在开发工作中,有些时候需要调试已经对接过API,比如APP/H5已经对接了N个接口,但是其中几个接口可能有服务端的变更,需要回归一下接口的兼容性,这个时候用 Fiddler/Charles 代理对应的客户端请求,拦截指定规则的请求,转发到你想要进行测试验证的服务器,这就可以非常方便验证服务是否能满足真实需求了。(标题中所谓指定API服务器,可以是正式环境的API、预览环境的API、测试环境的API、本地的API,只需要对应的客户端支持即可。)
2、Fiddler 怎么做
- 首先确保你的 Fiddler 可以远程调试
这个配置主要是为了考虑你可能是需要调试APP,那所谓的客户端和你的 Fiddler 工具势必不在同一个机器上,因为一个是 Windows 一个可能是 Android 或者 iOS。如下图。
(在如上图中确保 `Allow remote computers to connect`,同时我在这里强烈建议大家把 `Act as system proxy on startup` 去掉勾选,这个是一个懒人配置,但是会带来很多的坑) - 然后在 Fiddler 的 FiddlerScript 界面找到 OnBeforeRequest 代码段
-
在这个方法里面写入以下代码就可以完成目标
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 怎么做
- 同样是支持远程访问
- 找到 Map Remote 功能
- 编写 Map 规则
记得要启用哦,`Enable Map Remote`