Fiddler讲解3
想要 浏览更多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:\Users\lawrence\Desktop\test.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\r\nServer: Fiddler\r\n\r\n"));
}
}
}
-
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:\Users\lawrence\Desktop\test.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\r\n\r\n";
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\r\nHost: www.example.com\r\nX-My-Num: 1\r\n\r\n";
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\r\nHost: http://www.example.com\r\nX-My-Num: "+ n.ToString() + "\r\n\r\n";
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位模式运行
Fiddler讲解3的更多相关文章
- Fiddler讲解2
想要 浏览更多Fiddler内容:请点击进入Fiddler官方文档 阅读目录: 一.查看网络流量: 二.检查网络流量: 三.查看Web会话摘要: 四.查看Web会话统计信息: 五.查看Web会话内容: ...
- fiddler过滤机制讲解
1.User Fiters启用 2.Action Action:Run Filterset now是否运行,Load Filterset加载,Save Filterset保存: 3.Hosts过滤 Z ...
- 【转】零基础学习Fiddler抓包改包
看到一篇讲关于Fiddler抓包工具的讲解,个人感觉写得很仔细,但是作者说禁止转载,那就放个链接Mark一下 http://tmq.qq.com/2016/12/fiddler_packet_capt ...
- fiddler 插件开发
本文主要讲解使用.net C#语言开发Fiddler插件. 1.在Fiddler 会话列表中添加自定义列 使用FiddlerApplication.UI.lvSessions.AddBoundColu ...
- fiddler 插件开发二
本篇主要讲解Fildder插件开发中的涉及到的主要接口与类. 1.IFiddlerExtension 接口 如果要开发的自定义插件有UI界面,则需要实现IFiddlerExtension 接口.你程序 ...
- 技术方案:在外部网址调试本地js(基于fiddler)
1 解决的问题 1) 场景1:生产环境报错 对前台开发来说,业务逻辑都在js中,所以报错90%以上都是js问题. 如果生产环境出现报错,但是测试环境正常.这时修改了代码没有环境验证效果, ...
- 利用Fiddler修改请求信息通过Web API执行操作(Action)实例
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- Python+Requests接口测试教程(1):Fiddler抓包工具
本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...
- Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
随机推荐
- 【内功修炼】"裁员潮",“中年危机”,该如何战胜你的焦虑
"裁员"."中年危机"这些曾经看上去比较遥远的词汇,最近开始频繁出现在各种文章和新闻中,个人觉得这主要由两方面原因造成: 近两年,国内外经济形势严峻(更有经济学 ...
- 树莓派连接18b20测温度
树莓派系统包含了18b20的驱动(1-wire interface),我们只需要将其开启即可.有两种开启方式: 方式一:输入raspi-config命令,然后在interfacing options ...
- ConsoleWebsocketServer服务端和ConsoleWebsocketClient客户端
本文是简述了Websocket的服务端和客户端的实时通讯过程,Websocket的服务端和客户端的具体使用使用了2种Websocket的服务端和2种客户端. 以下代码使用的是Visual Studio ...
- 在使用PhpSpreadsheet出现空行导入的问题
在使用PhpSpreadsheet出现空行导入的问题,项目一直报错,原来是读取excel后会多读取几行,或者说读取的行数有错误.因此必须加一个,去除空行.暂时没有研究源码可能源码里面有这样的功能. ...
- 借助中间件优化代码 将请求RequestId在服务端接收到请求在处理业务逻辑之前生成
将请求RequestId在服务端接收到请求在处理业务逻辑之前生成
- 123457123456#1#----com.tym.DishuGame78--前拼后广--宝宝打地鼠_tym
com.tym.DishuGame78--前拼后广--宝宝打地鼠_tym
- DELPHI (VCL及FMX[Firemonkey])启动时的欢迎窗口实现代码
VCL里面的的实现 program ZhouFamily; uses Vcl.Forms, Winapi.Windows, FrmZhouFamilyMainU in 'FrmZhouFamilyMa ...
- H5 video安卓默认点击不能全屏播放解决办法
调用方法: autoFullScrenn(obj) 还有一篇: 使用MediaElement.js构建个性的HTML5音频和视频播放器 var fullscreen = function(elem) ...
- 反馈神经网络Hopfield网络
一.前言 经过一段时间的积累,对于神经网络,已经基本掌握了感知器.BP算法及其改进.AdaLine等最为简单和基础的前馈型神经网络知识,下面开启的是基于反馈型的神经网络Hopfiled神经网络.前馈型 ...
- axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案
原因:axios使用promise语法,浏览器不支持该语法 解决思路:使浏览器支持promise语法 具体代码: 安装es6-promise,npm i es6-promise -D. 在引入axio ...