想要 浏览更多Fiddler内容:请点击进入Fiddler官方文档
话列表中拖放会话以根据现有请求创建新请求。
模式
Composer有两种模式。在Parsed模式下,您可以使用这些框来构建HTTP(S)请求。在原始模式下,您必须自己键入格式正确的HTTP请求。通常,使用Parsed Mode是您想要的。
选项
“选项”选项卡显示允许您自定义Composer行为的选项。
- Inspect Session选择新会话并在发出请求时激活Inspectors选项卡。
- Fix Content-Length Header调整Content-Length请求标头(如果存在)的值以匹配请求主体的大小。
- 如果可能,Follow Redirects会导致HTTP / 3xx重定向触发新请求。Composer将跟进fiddler.composer.followredirects.max默认重定向。
- 自动身份验证会导致Fiddler自动响应使用当前用户的Windows凭据使用NTLM或Negotiate协议的HTTP / 401和HTTP / 407挑战。
技巧和窍门
-
使用会话列表中的拖放功能,根据以前捕获的请求创建新请求。
-
使用RequestURL中的#字符提示输入一系列按顺序编号的URL进行下载。如果在“Start At”值之前输入前导0(零),则所有数字将用前导零填充(如果需要)以达到该宽度。
例如,如果您有URL http://www.example.com/#/?a=#,并输入Start At值为08,End At值为11,则Composer将请求以下URL:
http://www.example.com/08/?a=08
http://www.example.com/09/?a=09
http://www.example.com/10/?a=10
http://www.example.com/11/?a=11
-
Shift +单击 “执行”按钮,立即使用Fiddler的检查器中断新的进一步编辑请求
-
添加一个虚拟头Fiddler-Encoding:base64,如果它包含任何二进制数据,则使用base64对您的身体进行编码。Fiddler会在将数据传输到服务器之前解码数据。
-
如果您希望Fiddler将请求发送到指定的服务器(在这种情况下为http:// targettesthost),同时保留请求中其他位置指定的URL和主机头,请添加虚拟头Fiddler-Host:targettesthost。这是一种便捷方法,可以在新会话上设置X-OverrideHost,X-IgnoreCertCNMismatch和X-OverrideGateway标志,在联系指定服务器之前删除虚拟标头。
-
单击“上载文件”链接,让作曲家在将一个或多个本地文件发送到服务器时将其注入请求正文。
如果您希望将上载的文件作为base64发送(就像在XML帖子主体中一样),请将令牌base64插入到字符串中。例如:
<xml><mybody type=binary><@INCLUDE base64 *C:UserslawrenceDesktop est.bin*@></mybody></xml>
二、Fiddler修改请求:
通过使用FiddlerScript自定义Fiddler规则来修改请求和响应
三、
减少期望的延迟:100个继续标题:
让Fiddler为请求返回100-Continue标头:
-
按此规则>自定义规则...。
-
在Handlers类中添加以下函数:
static function OnPeekAtRequestHeaders(oSession: Session) { if (oSession.HTTPMethodIs("POST") && oSession.oRequest.headers.ExistsAndContains("Expect", "continue")) { if (null != oSession.oRequest.pipeClient) { oSession["ui-backcolor"] = "lightyellow"; oSession.oRequest.headers.Remove("Expect"); oSession.oRequest.pipeClient.Send(System.Text.Encoding.ASCII.GetBytes("HTTP/1.1 100 Continue Server: Fiddler ")); } } }
-
Fiddler将获得一个名为Privacy的新顶级菜单。
-
确保隐私>已启用和隐私>如果选中无效,则重命名P3P标头。
现在,如果会话呈现格式错误的P3P语句,则该P3P标头将重命名为Malformed-P3P,以防止浏览器将其解释为P3P 1.0规范建议(例如,忽略未知标记)。
Composer允许您制作要发送到服务器的自定义请求。您可以手动创建新请求,也可以从Web会话列表中拖放会话以根据现有请求创建新请求。
模式
Composer有两种模式。在Parsed模式下,您可以使用这些框来构建HTTP(S)请求。在原始模式下,您必须自己键入格式正确的HTTP请求。通常,使用Parsed Mode是您想要的。
选项
“选项”选项卡显示允许您自定义Composer行为的选项。
- Inspect Session选择新会话并在发出请求时激活Inspectors选项卡。
- Fix Content-Length Header调整Content-Length请求标头(如果存在)的值以匹配请求主体的大小。
- 如果可能,Follow Redirects会导致HTTP / 3xx重定向触发新请求。Composer将跟进fiddler.composer.followredirects.max默认重定向。
- 自动身份验证会导致Fiddler自动响应使用当前用户的Windows凭据使用NTLM或Negotiate协议的HTTP / 401和HTTP / 407挑战。
技巧和窍门
-
使用会话列表中的拖放功能,根据以前捕获的请求创建新请求。
-
使用RequestURL中的#字符提示输入一系列按顺序编号的URL进行下载。如果在“Start At”值之前输入前导0(零),则所有数字将用前导零填充(如果需要)以达到该宽度。
例如,如果您有URL http://www.example.com/#/?a=#,并输入Start At值为08,End At值为11,则Composer将请求以下URL:
http://www.example.com/08/?a=08
http://www.example.com/09/?a=09
http://www.example.com/10/?a=10
http://www.example.com/11/?a=11
-
Shift +单击 “执行”按钮,立即使用Fiddler的检查器中断新的进一步编辑请求
-
添加一个虚拟头Fiddler-Encoding:base64,如果它包含任何二进制数据,则使用base64对您的身体进行编码。Fiddler会在将数据传输到服务器之前解码数据。
-
如果您希望Fiddler将请求发送到指定的服务器(在这种情况下为http:// targettesthost),同时保留请求中其他位置指定的URL和主机头,请添加虚拟头Fiddler-Host:targettesthost。这是一种便捷方法,可以在新会话上设置X-OverrideHost,X-IgnoreCertCNMismatch和X-OverrideGateway标志,在联系指定服务器之前删除虚拟标头。
-
单击“上载文件”链接,让作曲家在将一个或多个本地文件发送到服务器时将其注入请求正文。
如果您希望将上载的文件作为base64发送(就像在XML帖子主体中一样),请将令牌base64插入到字符串中。例如:
<xml><mybody type=binary><@INCLUDE base64 *C:UserslawrenceDesktop est.bin*@></mybody></xml>
六、
使用自定义匹配规则创建流量
启用自动应答器
在“ 自动回复”选项卡中,选中“ 启用自动回复”。
撰写自动回复规则
-
在“ 自动回复”选项卡的底部,在“ 规则编辑器”下:
-
在顶部字段中键入匹配规则。
-
在底部字段中键入操作字符串。
-
当启用自动应答被选中,将提琴手如果捕获的请求URI的匹配规则进行匹配的操作
启用自动应答器
在“ 自动回复”选项卡中,选中“ 启用自动回复”。
从Web会话列表创建匹配规则
要重放捕获的对匹配请求的响应,而不是将请求发送到目标服务器:
-
在Web会话列表中选择会话。按Control键并单击以选择多个会话。
-
单击右侧的“ 自动回复”选项卡。
-
单击并将所选Web会话从Web会话列表拖动到自动回复选项卡中的规则列表。
现在,规则列表将填充规则,这些规则响应捕获的请求以及相应的捕获响应。
编辑规则
-
从自动回复规则集中选择规则。
-
在“ 自动回复”选项卡的底部,在“ 规则编辑器”下:
-
在顶部字段中键入匹配规则。
-
在底部字段中键入操作字符串。
-
选择活动规则
-
要启用或禁用规则,请单击规则旁边的复选框。
设置规则优先级
要更改规则集中规则的优先级,请执行以下操作:
-
从Autoresponder rulset中选择规则。
-
在规则集中向上或向下移动规则:
-
单击并将规则拖动到规则集中的正确位置。
-
按+可在列表中向上移动规则或按-在列表中向下移动规则。
导入匹配的规则集
-
从“ 自动回复”选项卡:
-
单击“ 导入”按钮。
-
选择.saz或.farx文件。
-
-
从Windows资源管理器:
-
选择.saz或.farx文件。
-
将所选文件从Windows资源管理器拖放到“ 自动回复”选项卡。
-
现在,自动应答器规则集将填充将重放存档中的会话的规则。
导出匹配的规则集
-
在“ 自动回复”选项卡中,单击“ 保存”按钮。
-
右键单击规则集,然后选择“ 全部导出” ..
使用FiddlerScript模拟流量并显示性能结果
使用Global范围向Fiddler添加规则,如下所示:
public static ToolsAction("Crawl Sequential URLs")
function doCrawl(){
var sBase: String;
var sInt: String;
sBase = FiddlerObject.prompt("Enter base URL with ## in place of the start integer", "http://www.example.com/img##.jpg");
sInt = FiddlerObject.prompt("Start At", "1");
var iFirst = int.Parse(sInt);
sInt = FiddlerObject.prompt("End At", "12");
var iLast = int.Parse(sInt);
for (var x=iFirst; x<=iLast; x++)
{
//Replace 's' with your HTTP Request. Note: is a special character in JScript
// If you want to represent a backslash in a string constant, double it like \
var s = "GET " + sBase.Replace("##", x.ToString()) + " HTTP/1.0
";
var b=false;
while(!b){
try{
FiddlerObject.utilIssueRequest(s);
b=true;
}
catch(e){
var iT = Environment.TickCount + 10000;
FiddlerObject.StatusText = "Waiting 10 sec because we have too many requests outstanding...";
while (iT > Environment.TickCount){ Application.DoEvents(); }
}
}
}
}
十二、
重新发送请求
您可以直接从“ 会话列表”重新发送请求,也可以保存请求以在Composer中重新发送。
从会话列表重新发送请求
-
在“会话列表”中选择一个或多个会话。
-
按R或右键单击会话,然后单击“ 重播”>“重发请求”。
从Composer重新发送会话
-
单击Composer选项卡。
-
在Composer选项卡中,单击Scratchpad选项卡。
-
单击并从“会话列表”中拖动一个或多个会话。
-
在Scratchpad中三击会话内容以选择整个会话内容。
-
单击“ 执行”以重新发出请求。
要在一系列连续命名的HTML页面上搜索目标字符串(例如,从1.htm,2.htm,3.htm,4.htm等查找包含“TargetString”的第一页),请添加规则给提琴手如下:
-
使用Global范围向Fiddler添加规则以创建新菜单项,如下所示:
public static ToolsAction("Find page containing search string") function doGrab(){ var s = "GET /gallery/image1.htm HTTP/1.1 Host: www.example.com X-My-Num: 1 "; try{ FiddlerObject.utilIssueRequest(s); } catch(e){ MessageBox.Show("send failed" + e.ToString()); } }
这将生成第一个请求。注意:因为utilIssueRequest调用是异步的,所以不直接获得响应。
-
在OnBeforeResponse函数中向Fiddler添加规则,如下所示:
if (oSession.oRequest.headers.Exists("X-My-Num")){ // This is a response to my Grab code... if (oSession.utilFindInResponse("targetstring", false) > -1){ // If the index of the target string is >-1, we found the search string... MessageBox.Show("Found target string!"); } else { //didn't find the target string. increment the number. var n = int.parse(oSession.oRequest["X-My-Num"]); n++; var s = "GET /gallery/image" + n.ToString() + ".htm HTTP/1.1 Host: http://www.example.com X-My-Num: "+ n.ToString() + " "; try{ // Make a recursive HTTP request for the next item. FiddlerObject.utilIssueRequest(s); } catch(e){ MessageBox.Show("send failed" + e.ToString()); } } }
-
开始提琴手。
-
使用您的客户端或浏览器生成一些HTTP / HTTPS流量。
-
单击文件>保存>所有会话...
-
将流量保存到.SAZ文件。
Fiddler2包括捕获Web流量(包括AJAX请求)以便以后使用Visual Studio Web Test产品进行回放的功能。
保存WebTest
- 从Web应用程序捕获流量。
- 单击文件>导出会话>所有会话。
- 单击Visual Studio WebTest。
重播WebTest
- 注意:您必须安装Visual Studio 2005或更高版本的Team System产品才能加载.WebTest文件。
要重播WebTest:
- 单击文件>新建项目。
- 展开Visual C#或Visual Basic。
- 单击“ 测试”节点。
- 单击模板窗格中的“ 测试项目 ”。
解决问题
有关如何解决WebTests问题的信息,请参阅https://blogs.msdn.com/slumley/pages/how-to-debug-a-web-test.aspx。
要将流量导出到WCAT脚本,VS Web测试脚本,Meddler脚本,HTML5 AppCache清单,HTTP存档格式1.1,HTTP存档格式1.2或原始文件转储:
-
单击文件>导出会话。
-
单击“ 所有会话”或“ 选定会话”。
-
从下拉菜单中选择导出格式。
-
单击“ 下一步”以选择导出文件位置。
-
如果导出到HTML5 AppCache Manifest:检查您希望从Manifest的CACHE部分中排除的任何资源。这些将添加到Manifest的NETWORK部分。
-
要指定基本URL并将URL转换为相对于此URL,请在“ 基本URL:”字段中键入此URL 。
-
单击保存。AppCache清单出现在文本编辑器中。
导入默认格式
要从HTTP Archive JSON,HTTP Archive XML(从[IE9 Developer Tools网络选项卡] [12]导出)或Test Studio Load Test导入流量:
-
点击文件>导入会话...。
-
从下拉菜单中选择导入格式。
-
单击下一步。
创建自定义导入程序和导出程序
使用Fiddler扩展创建自定义导入器和导出
-
向Fiddler添加规则以创建新菜单项,如下所示:
// Log the currently selected sessions in the list to a database. // Note: The DB must already exist and you must have permissions to write to it. public static ToolsAction("Log Selected Sessions") function DoLogSessions(oSessions: Fiddler.Session[]){ if (null == oSessions || oSessions.Length < 1){ MessageBox.Show("Please select some sessions first!"); return; } var strMDB = "C:\log.mdb"; var cnn = null; var sdr = null; var cmd = null; try { cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strMDB); cnn.Open(); cmd = new OleDbCommand(); cmd.Connection = cnn; for (var x = 0; x < oSessions.Length; x++){ var strSQL = "INSERT into tblSessions ([ResponseCode],[URL]) Values (" + oSessions[x].responseCode + ", '" + oSessions[x].url + "')"; cmd.CommandText = strSQL; cmd.ExecuteNonQuery(); } } catch (ex){ MessageBox.Show(ex); } finally { if (cnn != null ){ cnn.Close(); } } }
-
列出规则脚本顶部的新导入,如下所示:
import System.Data.OleDb;
-
注意:此示例依赖于OLEDB 4.0,它不适用于64位进程。或者:
- 选择其他数据提供程序(例如,SQLServer); 要么
- 强制Fiddler以32位模式运行