如何配置Fiddler的自动回复器将主机“映射”到文件夹?

时间:2015-10-01 09:08:11

标签: regex proxy fiddler

我正在使用Fiddler拦截特定远程文件的请求,而我正在处理它们(因此我可以在本地调整它们而不触及已发布的内容)。

即。我使用了很多这样的规则

match:    regex:(?insx).+/some_file([?a-z0-9-=&]+\.)*
respond:  c:\somepath\some_file

这很有效。

我现在要做的就是更进一步,这样做

match:    regex:http://some_dummy_domain/(anything)?(anything)
respond:  c:\somepath\(anything)?(anything)

或者,用纯文本,

  

拦截任何对'some_dummy_domain'的http请求,进入'c:\ somepath'并使用最初请求的相同路径和名称获取该文件。查询字符串应该通过。

有些方案需要进一步澄清:

http://some_domain/somefile       --> c:\somepath\somefile
http://some_domain/path1/somefile --> c:\somepath\path1\somefile
http://some_domain/path1/somefile?querystring --> c:\somepath\path1\somefile?querystring

我试图利用我已经拥有的东西:

match:    regex:(?insx).+//some_dummy_domain/([?a-z0-9-=&]+\.)*
respond:  ...

基本上,我在请求中寻找//some_dummy_domain/。这似乎在测试时正确匹配,但我想知道如何回应。

Fiddler可以在回复中使用匹配,我怎样才能正确设置?

我试图回复c:\somepath\$1,但Fiddler似乎逐字地对待它:

match:   regex:(?insx).+//some_domain/([?a-z0-9-=&]+\.)*
respond: c:\somepath\$1

request:  http://some_domain/index.html
response: c:\somepath\$1html        <-----------

1 个答案:

答案 0 :(得分:7)

问题是你在表达的前面使用insx; n表示您需要explicitly-named capture groups,这意味着系统$1不会自动创建。您可以省略n或明确命名捕获组。

来自Fiddler Book:

在操作文本中使用RegEx替换

Fiddler的AutoResponder允许您使用正则表达式组替换将匹配条件中的文本映射到操作文本。例如,规则:

匹配文字:REGEX:.+/assets/(.*)
行动文字:http://example.com/mockup/$1

...将http://example.com/assets/Test1.gif的请求映射到http://example.com/mockup/Test1.gif

以下规则:

匹配文字:REGEX:.+example\.com.*

行动文字:http://proxy.webdbg.com/p.cgi?url=$0

...重写入站网址,以便将包含example.com的所有网址作为网址参数传递给proxy.webdbg.com上的网页。

匹配文字:REGEX:(?insx).+/assets/(?'fname'[^?]*).*

行动文字C:\src\${fname}

...将http://example.com/‌assets/img/1.png?bunnies的请求映射到C:\src\‌img\‌1.png