Fiddler | URL 映射请求

如何将请求A转发到请求B

Posted by Haauleon on February 1, 2018

一、背景

  • 已发布线上 APP 出现接口错误,如何调试线上 APP 访问本地请求?
  • 已发布线上 H5页面,静态资源或 js 调试,如何映射本地 js?



二、解决方案

1、一般解决方案

  猜测(一般明显问题)。
  找到原发布包,修改请求资源 url 重新打包测试。需要前后端协调配合,耗时费力。



2、Fiddler 解决方案 (映射响应)

  原理:通过 fidder 拦截,将需要加载的资源映射到本地开发环境,而无需切换测试版 APP。
  例如线上资源:http://online.com/api/page
  映射加载本地资源:http://127.0.0.1/api/page



方法一:使用 Fiddler 自带的 AutoResponder
添加正则替换主机名规则:
  regex:(?insx)http://online.com\/(?.+)$
  *redir:http://127.0.0.1/${name}




方法二:使用 Stave 插件
添加规则:
  匹配:online.com
  替换为:127.0.0.1



正则匹配

一、前缀为EXACT:
  表示完全匹配(大小写敏感)
  只有 match=rules 时,才匹配


二、无前缀
  表示基本搜索
  表示搜索到字符串就匹配
  只要 match 中包含了 rules 的字符串,即可


三、前缀为NOT:
  表示发现就不匹配
  与无前缀的基本搜索同理,只是发现了就不匹配,其他默认匹配


四、前缀为REGEX:
  表示使用正则表达式匹配
  如regex:(?insx).+.(jpg|gif|bmp)$ 包含以jpg或gif或bmp字符串结尾的,不区分大小写,且是单行的,即可匹配


规则 解释
.+ 匹配一个或多个字符。
regex:.+jpg包含有 jpg 字符串且以 jpg 字符串结尾的,即可匹配
.\* 匹配0个或多个字符。
regex:.+.jpg.\*包含有 .jpg 字符串即可匹配
^ 匹配字符串开始位置。
$ 匹配字符串结束位置。
regex:.+.(jpg|gif|bmp)$包含以 jpg 或 gif 或 bmp 字符串结尾的,即可匹配



五、前缀为REGEX:(?insx)
  表示匹配方式

规则 解释
i 表示不区分大小写
n 表示指定的唯一有效的捕获是显式命名或编号的形式
s 表示单行模式
x 表示空格说明的