处理Fiddler录制中相同URL的POST参数差异?

时间:2014-03-23 21:25:23

标签: web fiddler web-testing

我需要记录我的客户端脚本在第三方Web应用程序中的行为方式。所以我试图用Fiddler记录第三方机器的流量,然后在这里运行。

听起来不错,但是我的脚本对ASPX(123.aspx)页面进行AJAX调用,并且调用只使用POST参数,而不是GET。

这意味着Fiddler中记录的(123.aspx)请求URL是相同的,并且回放不能正常工作(每个AJAX请求都匹配第一个记录的匹配,而不是具有相同POST参数的匹配)。

 E.g. let's says the requests are recorded like this
 123.aspx [POST param: searchquery=xyz]
 123.aspx [POST param: searchquery=abc]

然后当我回放SAZ文件时,我总是得到123.aspx [POST param:searchquery = xyz]的响应,即使searchquery = abc。

如果POST参数不同,我怎样才能让Fiddler以不同的方式处理请求?

我看到了提取规则,并且对它们有点不确定,Telerik文档没有返回“提取”的结果......它们是我需要的吗?

由于

1 个答案:

答案 0 :(得分:6)

有关Fiddler AutoResponder的导入播放模式的详细信息,请参阅the introductory blog post,该模式有助于解决在尝试播放以前捕获的SAZ文件时可能遇到的一些问题。

现在,“导入播放”模式无法解决所有可能出现的问题;例如,如果您对捕获的同一URL有多个POST但它们的排序与您尝试重放场景时捕获的顺序不同,则它们将以错误的顺序播放,并且事情将被破坏。


来自Fiddler Book

与请求机构匹配

在某些情况下,网站可能会对许多不相关的操作使用相同的请求网址,指定请求正文中所需的操作而不是URL。您可以通过为匹配条件指定URLWithBody:前缀来扩展匹配条件以检查POST或PUT请求的正文。使用此前缀时,直到第一个空格字符的字符串部分将用作请求URL的匹配条件,而字符串的其余部分将用作请求正文的字符串表示的匹配条件。出于性能原因,您应该尽可能窄地指定匹配条件的URL部分,以最大限度地减少AutoResponder需要评估的请求主体的数量。如果请求没有正文,则不会与任何URLWithBody规则匹配。

您的匹配条件可以为网址和正文指定EXACT:NOT:REGEX:前缀。例如:

URLWithBody:upload.php TextToFindInBody
URLWithBody:login.php EXACT:Action=Login
URLWithBody:ping.php NOT:POST Data I Do Not Care About
URLWithBody:EXACT:https://example.com/upload.php REGEX:^.+TextToFind.*$
URLWithBody:REGEX:^.+/upload.php.*$ REGEX:^.+TailOfPOST$

请记住,Web窗体中的大多数POST会对正文文本进行编码,因此您应确保匹配条件考虑了此类编码。例如,要匹配以下POST:

POST http://www.enhanceie.com/sandbox/FileForm.asp HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 54

2=This+is+some+text&fileentry2=&_charset_=windows-1252

您的比赛条件应为:

URLWithBody:/sandbox/FileForm.asp This+is+some+text