参考文档:Fiddler调试权威指南 P41
Enable rules:是否启用自动应答规则
Accept all Connects:接受所有的连接,如果不选这个,我猜大概是只接受规则匹配的连接
Unmatched requests passthrough:勾选此项,未匹配到的请求会直接通过,否则会阻塞。
Enable Latency:设置某个请求延迟执行的毫秒数,该功能可用来弱网测试
匹配url
string
该规则将匹配url包含string的请求,例如:
baidu.com
将匹配所有包含baidu.com的请求,即使该字符串是包含在请求的参数中,也将被匹配。
NOT:string
该规则将匹配不包含string在内的所有请求,大小写不敏感,例如:
匹配规则:NOT:baidu
设置响应:200_FiddlerGif.dat
此时,我们访问https://sina.cn/将会返回fiddler的小提琴图标
EXACT:url
该规则对目标url大小写敏感,例如:
EXACT:https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=14057681739343433281&toc_style_id=feeds_defaulT
这个规则要求精确匹配,即链接要完全一致,无论是参数,还是大小写,都要一致才会匹配
REGEX:pattern
该规则对目标url执行正则匹配,支持正则就很强大了,你可以用正则写出你需要的任何规则,比如,我在分析请求的时候不关心图片,可以将所有图片返回一个固定的图片来提高网络访问速度,例如:
REGEX:.+(jpg|gif|png)$
匹配任何以jpg、gif、png结尾的url
这样可以替换网站上所有的图片,不过,在实际情况中,一些图片后面可能会带有参数,写正则的时候需要注意一下。
使用正则表达式模式的时候,可以使用(?insx)来开启大小写不敏感,例如:
REGEX:(?insx).+(jpg|gif|png)$
可以使用#添加注释,例如:
REGEX:(?insx).+(jpg|gif|png)$ #匹配图片链接
正则的扩展用法
(1)使用正则模式下,还可以使用$num,比如$1,$2依此类推,分别引用正则表达式中的第一个,第二个…子捕获,例如:
匹配规则:regex:http://a.com/?(.)
动作内容:http://b.com/?$1
将会把对a.com的请求,重定向到b.com,并且会把参数带过去
(2)$0则表示正则的完整匹配,例如:
匹配规则:regex:.+example.com.
动作内容:http://proxy.debug.com/?url=KaTeX parse error: Can't use function '\.' in math mode at position 99: …om(?'path'.+)_c\̲.̲js
动作内容:http://example.com${path}.js
可将匹配规则中的path作为变量使用。
匹配请求体
URLWithBody选项将扩展匹配规则,可以指定请求体中的数据,格式为:
URLWithBody:urlMatchCondition bodyMatchCondition
例如:URLWithBody:example.com username
将匹配请求地址包含example.com,并且请求体包含username字符串的请求。
请注意:在使用URLWithBody前缀的情况下,你仍然可以对url部分和请求体部分分别指定NOT、EXACT、REGEX这些前缀。
配置动作内容
上面我们详细学习了如何匹配自己预期的请求,接下来我们讲讲,如何配置自动应答的内容。
我们可以指定本地的一个文件,或者*Action执行一个动作,Action是fiddler内置的动作,当然我们可以扩展这些动作。
选择一个本地文件后,将以文件响应请求,这个我们在上面的例子中,多次使用了本地文件200_FiddlerGif.dat来响应。下面我们详细介绍一下如何指定执行一个动作。
(1)动作内容:http://targetUrl
将请求重定向到目标targetUrl,例如:https://sina.cn
(2)动作内容:*redir:http://targetUrl
将发送307重定向到targetUrl,这里大家可能要补充学习一下3xx状态码的差别,这种响应规则适用于post请求。
(3)动作内容:*bpu
设置请求断点,允许你编辑请求的内容,再将服务器发送到服务器。
(4)动作内容:*bpafter
设置响应断点,允许你编辑响应内容后,再返回给客户端
(5)动作内容:*delay:3000
延迟3000毫秒发送请求
(6)动作内容:*flag:flagname=value
把session flag设定为指定的值,支持的所有sessionflags见官方文档:https://docs.telerik.com/fiddler/knowledge-base/sessionflags
(7)动作内容:*drop
关闭客户端连接
(8)动作内容:*reset
关闭客户端连接
(9)动作内容:*exit
停用正在处理的规则,不知道为何要以这种方式停用,现在的规则前面都有复选框来开启,停用,可能是老版本的fiddler规则前面没有复选框,这里就不去求证了。