1工作原理
1.1通过代理的方式获取程序http通讯的数据,用来检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求。fiddler启动时,会自动将代理设置到127.0.0.1,端口设为8888。
1.2支持监视、设置断点、修改输入输出数据等功能
1.3可以使用.net框架语言扩展编写脚本。
1.4fiddler官方帮助文档:在fiddler的命令窗口中输入help 命令,打开http://fiddler2.com/fiddler/help/quickexec.asp
2.界面组成
2.1fiddler的界面包括菜单栏,工具栏,会话列表(即数据流列表),请求显示栏,返回显示栏以及命令行窗口几部分。
2.2话列表表头

Result:http服务器的返回代码,例如200,404,502等等
Protocol:使用的协议,fiddler只能筛选http和https协议
Host:返回的服务器的域名
URL:返回的服务器的url
Body:返回的数据的大小(如果为0,说明有cache)
Caching:缓存的状态和有效时间
Content-Type:返回的代码的内容
Process:本地发起连接的程序进程
3一些使用技巧
1.1快捷键使用
ctrl+alt+f:使fiddler获取焦点
alt+q:将焦点切换到命令行
ctrl+f:查找会话
ctrl+h:查看会话的头部(Inspector–Header)
ctrl+t:查看会话的文本(Inspector–TextView)
ctrl+up:查看上一条会话
ctrl+down:查看下一条会话
ctrl+x:清屏
ctrl+a:选择所有会话
ctrl+i:把当前选择的会话的url插入到命令行中
r:重新发送请求(貌似不是真发了请求)
3.2命令行操作
help:打开官方的使用页面介绍,所有的命令都会列出来
cls:清屏,或者使用快捷键ctrl+x
select:选择会话的命令(木看明白咋用的)
?.png:选择.png的图片(用该命令可以快速找到某一后缀名的请求)
bpu+域名:截获请求
bpu:停止截获请求
bpafter+域名:截获返回
bparter:停止截获返回
3.3解决response乱码
response乱码可能是因为HTML被压缩了,没有解压缩,也可能是解压缩后使用的字体不对。还有一种现象是下载的图片在ImageView无法查看,解决方法如下:
1 如果在Response Raw上方有"Response is encoded any may need to be decoded before inspection. click here to transform"提示,点击该提示。
2 选中工具栏中的“Decode”,这样会自动解压缩。

3 在注册表HKEY_CURRENT_USER\Software\Microsoft\Fiddler2中添加一个字符串变量HeaderEncoding=GB18030,重启fiddler即可。
4常用功能
4.1捕获https会话
fiddler一般不会捕获https会话,需要设置:菜单栏Tools(工具)–Fiddler Option(fiddler选项)s—HTTPS—勾选“Capture HTTPS CONNECTs(捕获https连接)”,“DecryptHTTPS traffic(解密https通信)”和“Ignore server certificate erroers(忽略服务器证书错误)”。

4.2查看http统计(可分析页面性能)
1 选择一条数据,点击右侧Statistics标签,可以查看Request Count(请求数),Bytes Sent(发送字节),Bytes Received(接收字节),也可以详细查看实际性能。
2 点击“Show chart”,显示统计图标,在饼形图中可以看出每个阶段占用的时间比例。
3 如果选择多条请求,还可以获得多条请求的总体时间,并且分辨出哪些请求耗时最多,从而有针对的优化。

4.3设置断点拦截Request和Response
4.3.1一般操作
设定断点:工具栏Rules–Automatic Breakpoint–Before Requests,即是直接点击主界面左下角第三个显示窗

显示截图的图标。这种方法会中断所有的会话。
取消断点:工具栏Rules–Automatic Breakpoint—Disabled,即是直接点击主界面左下角第三个显示窗,直至没有任何图标。
为已拦截的断点放行:点击右侧Run to Completion放行单条request,或者工具栏Resume(全部恢复)放行所有断点。
注:该操作设定的是request断点,若设置response断点,选择after response。
4.3.2命令行方式
设定断点:例如,我只想拦截dl.bizhi.sogou.com这个域名,只需在命令行输入“bpu dl.bizhi.sogou.com”—回车即可。这种方法只有设定域名的会话会被拦截,其他会话不会被拦截。
取消断点:输入“bpu”—回车
为已拦截的断点放行:点击右侧Run to Completion放行单条request,或者工具栏Resume(全部恢复)放行所有断点。
注:该操作设定的是request断点,若设置response断点,输入bpuafter dl.bizhi.sogou.com,取消输入bpuafter。
4.4构造请求(待深入)
使用Composer伪造请求。
1 选择要伪造的请求,把它拖拽到Composer下的界面中,可以看到详细信息
2 在请求的下拉框中伪造为测试需要的请求
3 点击execute,重新发送该请求

4.5改写返回数据
4.5.1用设置断点的方式改写
设定断点(设定断点方式见3.5)—点击右侧ChooseResponse—Find a file—添加要返回的伪数据—Run to Completion。用该方法还可以返回各种网络错误代码。

4.5.2用自动返回的方式改写
1 选择要被改写的会话— “自动响应(AutoResponder)”标签—勾选“Enable automatic responses”-“Add”,此时,该语句被添加到下面列表中。

2 选择该请求,后面下拉列表中选择“Find a file” —添加要返回的伪数据—保存。
3 再次让客户端发送请求,会发现fiddler把该请求自动返回成了设定的文件。
用该方法同样可以返回各种网络错误代码。
用该方法还可以使一类具有相同关键字的请求返回相同结果:选择一个请求,在Rule Editor中修改请求语句:在相同的关键字前面加“regex:”代表模糊匹配,后面加“.*”代表匹配任意多的任意字符。该方法适用正则表达式。
4.6保存返回的内容
例如,要把请求的图片保存到本地。
现在做法:右键—Copy—Just Url—打开浏览器,粘贴到地址栏—待图片显示到浏览器后保存到本地。
技巧:选择请求—右键—Save—Response—Response Body。
4.7保存当前Web Sessions内的信息(基础文档库Jasonpang)
如果觉得当前已经出现的信息比较重要,想回去好好研究,那么就可以选择菜单中的File——Save,然后选择全部会话或分类会话,然后就可以保存了。保存的文件为fiddler独有的文件格式,这种文件可以用其它机器的fiddler打开查看。
4.8比较两组数据流
1 需要安装软件WinMerge
2 在会话列表中选择两条需要对比的数据,右键—compare,程序会自动打开WinMerge软件,进行对比。标颜色的部分为有差异的部分。
4.9文本编码和解码
点击工具栏TextWizard

打开编码器,这里提供了多种编码方式—在上面的文本框输入需要被编码的内容—左面单选按钮选择一种编码方式—下面的文本框自动显示编译的结果。
如果勾选“View bytes”,则会以单个字节显示。
4.10模拟限速
菜单栏Rules—Performance—Simulate Modem speeds。
这种限速方法并非真正限速网络,而是fiddler自己下载完毕后,在fiddler和程序之间变为Modem传输速度而已,如果想要改变速度大小,需要修改脚本。
1 打开脚本:
1)fiddler脚本实际是一个CustomRules.json文件,位于C:\Documents and Settings[your user]\My Documents\Fiddler2\Scripts\目录下。修改脚本时可以直接修改该文件。
2)可以在fiddler中打开该文件:菜单栏Rules—Customize Rules,默认使用notepad打开。
3)建议安装Fiddler Script Editor,安装后,在右侧直接显示FiddlerScript标签,编辑后直接点击Save Script即可。这里介绍该方法。
2 修改脚本:
1)在Go to中选择“OnBeforeRequest”
2)在OnBeforeRequest方法下修改request的速度:
3)在Go to中选择“OnBeforeResponse”
4)在OnBeforeResponse方法下修改response的速度:
从脚本中可以看出,2)是限制了请求上传的速度,把速度限制为300ms/kb,4)是限制了请求返回的速度,把速度限制为150ms/kb。所以说,如果下载一个50kb的壁纸,大概需要15秒的时间(50x300/1000=15s)。
4.11查询会话
1 菜单栏Edit—Find Session(或者使用快捷键ctrl+f)–find中输入要查询的关键词。
2 这里可以设置查询规则:
1)查询request或者查询response
2)查询headers或者查询bodies
3)是否匹配大小写(Match case)
4)是否使用正则表达式(Regular Expression)
5)是否搜索二进制(Search binaries)
6)是否解码加密内容(Decode compressed content)
7)仅搜索被选择的会话(Search only selected sessions)
8)不标记旧的查询结果(Unmarked old results)
9)查询后用黄色背景表示(Result Highlight)

4.12筛选会话
在右侧Filters标签中设置过滤规则—勾选Use Filters,fiddler提供了多种过滤方式:
1 按域名过滤
2 按进程过滤
3 按Request Headers过滤
4 按Response Headers过滤
5 按断点过滤
6 按返回的状态码过滤
7 按文件类型和大小过滤
例如,我只想查看dl.bizhi.sogou.com和imgstore.cdn.sogou.com的域名的会话,在Hosts分类的下拉列表中,选择Show only the following Hosts,在下面的文本框中输入想要查看的两个域名—点击Actions—Run Filterset now。可以看见,经过过滤之后,左面的会话列表就只剩下了dl.bizhi.sogou.com和imgstore.cdn.sogou.com两个域名的会话了。
4.13只拦截一个程序
在工具栏上,长按“any process”,直到变成pick target后,把鼠标拖动到壁纸窗口上,窗口变黑,这时,工具栏的名称变成sgwallpaper:1064。这时,监控的就只是搜狗壁纸进程了。搜狗壁纸进程后面的1064是该程序的PID号,若关闭了壁纸程序,则需要再次



4.14抓取移动设备的数据
因为抓包需要用到pc的无线网络,如果物理机没有,则要用到虚拟机的相关功能:
1 设置虚拟机:设置连接方式为Bridged(桥接)–勾选Replicate physical network connection state(复制物理网络)。
2 设置fiddler:菜单栏Tools–Fiddler Options–Connection标签–勾选Allow remote computers to connect,默认设置Fiddler listens on port:8888,即端口为8888。
3 设置移动设备:打开wify–设置http代理:服务器填写虚拟机的ip地址,端口为8888。
到此为止,抓包环境搭建好了,访问网络时就可以在fiddler中看到数据了。
注意:移动设备使用的wify和虚拟机所插的要是同一个路由。
4.15把请求跳转到测试服务器
需求:客户端发送的请求在10.11.194.227上,而测试需要使用10.129.40.212上的测试文件,可以使用fiddler使请求10.11.194.227跳转到10.129.40.212
1 在fiddler的安装目录下找到302的配置文件,复制一下,随便起个自己认得的名字,把location地址写到自己搭建的服务器
2 在fiddler中为10.11.194.227的请求设置一个aoturesponse,Test URL中选择该文件即可。
4.16查看网络请求的头信息(基础文档库Jasonpang)
点击那条请求,然后在右边区域选择inspectors——Headers,这里就包括请求和返回的所有头信息内容。
4.17模拟其它User-Agent(基础文档库Jasonpang)
程序或者浏览器发出的请求,一般都是自己的UA,fiddler可以把它们伪装成用户想要的UA。方法是选择菜单中的Rules——User-Agents,然后选择一个UA,或者选择Custom自定义一个。这样后续的网络请求就都变为这个UA的了。

2244

被折叠的 条评论
为什么被折叠?



