配置项如图
选项开关
Enable rules
: 启用匹配规则
Unmatched requests passthrough
: 不匹配的请求会正常发送到服务器,这个一般要勾上,比如“baidu.com”由于匹配不上规则,如果不勾上则百度会访问失败。
Enable Latency
: 延时选项,如果勾上,会多一列“Latency”的展示,然后在某条规则上点击右键菜单“Set Latency”可以设置延时时间,用于调试时模拟服务器响应延时。
规则匹配顺序调整
规则匹配优先从上到下:在某条规则右键,弹出菜单中的 Promote + 和 Demote - 分别可以上、下调整顺序。
规则导出/导入
- 图二右键菜单的
Export All
可以导出所有规则配置,导出的是一个.farx后缀的文件,实际上是一个xml文档。
<?xml version="1.0" encoding="utf-8"?>
<AutoResponder LastSave="2019-06-25T17:52:57.7451762+08:00" FiddlerVersion="5.0.20192.25091">
<State Enabled="true" Fallthrough="true" UseLatency="false">
<ResponseRule Match="regex:^http://(.*).xxx.com/api/(.*)$" Action="http://xxx.nat123.cc/api/$2" Enabled="true" />
<ResponseRule Match="regex:^http://ide.xxx.com/(.*)$" Action="http://192.168.1.1:8080/$1" Enabled="true" />
<ResponseRule Match="regex:^http://www.xxx.com/(\S*)$" Action="http://192.168.1.1:3000/$1" Enabled="true" />
<ResponseRule Match="regex:^http://ide.xxx.com:8600/(\S*)$" Action="http://192.168.1.1:8080/$1" Enabled="true" />
</State>
</AutoResponder>
- 图一中的
[Import.. ]
按钮 可以导入规则配置。
规则设置
点击“Add Ruler”增加一个规则:
第一个框,用于匹配url的表达式:可以是一个正则表达式,如 regex:^http://ide.xxx.com/(.*)$ ,也可以是一个普通字符串进行精确匹配 。
第二个框,匹配成功后跳转的目的地址:可以是一个url,如 http://192.168.1.1:8080/$1,或者指定本地的某个文件 E:\test.html。
regex开头:
表示后面是一个正则表达式,否则按照普通文本匹配,如:regex:^http://ide.xxx.com/(.*)$
参考 https://www.cnblogs.com/pachongshangdexuebi/p/6601363.html
关于正则表达式:
如:^http://ide.xxx.com/(.*)$ 是一个正则表达式,
^
表示从第一个字符开始匹配,
.
匹配除换行符(\n、\r)之外的任何单个字符,
*
匹配前面的子表达式零次或多次,
$
表示匹配到结尾,
()
括号表示一个子正则表达式,
(.*)
匹配除换行符之外的任何字符零次或多次,
(.*)$
匹配除换行符之外的任何字符零次或多次,一直匹配到结尾。
正则表达式语法参考 https://www.runoob.com/regexp/regexp-metachar.html
关于$1 :
表示匹配成功后,将目标字符串中的$1
直接替换为正则表达式中第1组子表达式匹配成功的内容(每一对括号表示一组子正则表达式,没有括号的不算子表达式,$后面的数组可以理解为表达式的索引),
如:$1、$2...$n
依次类推表示 第1组、第2组…第n组 子正则表达式 。
比如:^http://(\S*).xxx.com/(\d)$
, 有两子组子正则表达式,第1组子表达式为:(\S*),第2组表达式为:(\d)。
比如 http://ide.xxx.com/abc
匹配 ^http://ide.xxx.com/(.*)$
成功,第1组子表达式(.*)匹配的是abc,则目标地址http://192.168.1.1:8080/$1
中的 $1 会替换成abc ,即变为:http://192.168.1.1:8080/abc
下图的规则中有两个子表达式(\S*)
和(.*)
,$2
表示替换第二个子表达式(.*)
的匹配字符
不在括号内的则不算是一个子表达式,如下截图去掉括号后,\S*
就不是子表达式了,只有(.*)
才是子表达式,因此目标串使用$1
与上图的$2
等价
当然目标字符串的$1
,$2
等可以放任何位置,不一定放结尾,如: http://xxx.nat123.cc/$1/api/$2
参考:
https://www.cnblogs.com/tugenhua0707/p/4637771.html
https://blog.csdn.net/pc_gad/article/details/48194605