本来想自己写的,结果翻到一系列的博客,发现有前辈总结的太好了,转载过来,当知识点查询一下。外加自己总结的一些经验,我总结的放在了最后面。
原地址:https://www.cnblogs.com/sjl179947253/p/7620524.html
目录
2. 未匹配到请求时正常响应(Unmatched requests passthrough)
教程1 介绍及界面概述
一、 主要抓包工具介绍与对比
1、Wireshark :通用抓包工具,抓取信息量庞大,需要过滤才能得到有用信息,只抓HTTP请求有点大财小用。
2、Firebug、HttpWatch等Web调试工具,不够给力,功能欠缺。
3、Charles:建议MAC上使用。
4、Fiddler:是一个HTTP协议调试代理工具;
①、是位于客户端和服务器的HTTP代理,它能记录所有客户端和服务器的HTTP和HTTPS请求响应,进行截获、重发、编辑、转存等操作;
②、允许监视、设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。
二、 Fiddler界面概述
1. 主菜单
| File文件: File--->Capture Traffic启用或停止捕获; File--->New Viewer 新窗口; File--->Load Archive 存档; File--->Recent Archive 最近文档; File--->Save保存; Save--->All Session... 全部会话; Save--->Selected Session 选择了的会话; Save--->Request 请求; Save--->Response 响应; File--->Import Sessions导入会话; File--->Export Sessions导出会话; File--->Exit退出; |
| Edit编辑: Edit--->Copy拷贝; Copy--->Session拷贝整个Session; Copy--->Just Url将选中session的url拷贝到剪贴板; Copy--->Headers Only拷贝头信息,包括请求和返回的头信息; Copy--->Full Summary将session列表显示的信息及表头复制到剪贴板,通过tab分割。便于在Excel或其他编辑器中查看编辑; Edit--->Remove移除; Remove--->Selected Sessions选择会话; Remove--->Unselected Sessions反选会话; Remove--->All Sessions全部会话; Edit--->Select All选择全部; Edit--->Undelete恢复之前删除的会话; Edit--->Paste as Sessions作为会话粘贴文件; Edit--->Mark标记所选的会话; Mark--->Strikeout失败; Mark--->Red红色; Mark--->Blue蓝色; Mark--->Gold金色; Mark--->Green绿色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未标记; Edit--->Unlock for Editing调为可编辑 Edit--->Find Sessions查找会话 |
| Rules规则: Rules--->Hide Image Requests隐藏图片请求; Rules--->Hide HTTPS CONNECTs隐藏HTTPS连接; Rules--->Automatic Breakpoints断点控制; Automatic Breakpoints--->Before Requests请求之前; Automatic Breakpoints--->After Responses 响应之后; Automatic Breakpoints--->Disabled禁用; Automatic Breakpoints--->Ignore Images忽略图片; Rules--->Customize Rules打开Fiddler ScriptEditor; Rules--->Require Proxy Authentication密码代理验证; Rules--->Apply GZIP Encoding采用GZIP编码; Rules--->Remove All Encodings删除全部编码; Rules--->Hide 304s隐藏304会话; Rules--->Request Japanese Content要求日语内容; Rules--->User-Agents支持把User-Agents请求头设置或替换成指定值; Rules--->Performance提供影响web性能的简单选项; Performance--->Simulate Modem speeds模拟调制解调器速度; Performance--->Disable Caching禁止缓存 Performance--->Cache Always Fresh新的缓存 |
| Tools工具: Tools--->Options选项; Tools--->WinINET Options WinINET选项; Tools--->Clear WinINET Cache-清除WinINET缓存; Tools--->Clear WinINET Cookies清除WinINET的Cookies; Tools--->TextWizard文字编码解码; Tools--->Compare Sessions比较会话; Tools--->New Session Clipboard新会话写字板; Tools--->HOSTS hosts配置; Tools--->Reset Script重置脚本; Tools--->Sandbox沙箱; Tools--->View IE Cache查看IE缓存; |
| View视图: View--->Show Toolbar显示工具条 View--->Default Layout默认布局 View--->Stacked Layout堆叠布局 View--->Wide Layout全部布局 View--->Tabs制表符 Tabs--->preferences偏好 Tabs--->autosave自动保存 Tabs--->apitest API测试 View--->Statistics统计 View--->Inspectors嗅探 View--->Composer构造 View--->Minimize to Tray关闭自托盘 View--->Stay on Top前端显示 View--->Squish Session List会话列表格式 View--->AutoScroll Session List自动滚动会话链表 View--->Refresh刷新 |
| Help帮助: Help--->Help帮助 Help--->Fiddler Book说明 Help--->Discussions社区讨论 Help--->HTTP References HTTP的参考 Help--->Troubleshoot Filters-故障排除 Help--->Check For Updates检测更新 Help--->Send Feedback发送反馈 Help--->Abou关于 |
2、快捷菜单
| 会话列表进行备注 Replay--->重新发送选中请求 Remove--->删除会话 Go--->打断点时使用 Stream--->点击为流模式,不点击为缓冲模式 缓冲模式:内容全部返回在发送到客户端;可以控制响应,修改响应数据,但是时序图有时候会出现异常; 流模式:收到内容立即发送给客户端;更接近真实浏览器的性能,速度快,时序图更准确(比如瀑布图),但是不能控制响应; 如果不需要AutoResponse和Fileters功能的话,一般使用缓冲模式; Decode--->解码,默认勾选 |
| Keep:All sessions--->保持全部会话 Any Process--->任何进程,精准定位 Find--->查找 Save--->保存 |
| 截屏 秒表 Browse--->打开浏览器 Clear Cache--->清除缓存 TextWizard--->编码解码小工具 |
| Tearoff--->打开一个新窗口 MSDN Search--->MSDN关键字查找 |
3、 会话列表
| #--->图标及序号 Result--->HTTP响应状态码 Protocol--->请求使用的协议 Host--->接受请求的服务器主机名和端口号 URL--->请求的服务器路径的文件名,也包括GET参数 Body--->请求的大小,以byte为单位 Caching--->请求的缓存过期时间或缓存控制header等值;响应头中Expires和Cache-Control字段的值 |
| Content-Type--->请求响应的类型 Process--->发出此请求的Windows进程及进程ID; Comment--->注释信息; Custom--->用户可以通过脚本设置自定义值;FiddlerScript所设置的ui-CustomColumn标志位的值 |
|
HTTP状态: 红色表示错误,黄色表示认证 数据流类型: 灰色表示CONNECT 响应类型:紫色表示CSS,蓝色表示HTML,绿色表示script,灰色表示图像 |
4、会话右键
| Decode Selected Sessions--->解码选择的session,一些Response body 会Encode。Decode后通常能解决乱码的问题; AtuoScroll Session List--->自动滚动 Session List。当不断有新的session进入list时候,关闭此功能,更容易定位选择某一个或多个session; Comment--->为一个或多个session添加注释; Compare--->对比:选中两条session右键,就会出现Compare选项。这个功能是通过第三方的软件来实现,可以下载WinDiff.Exe放在Fiddler的安装目录下,或是下载WinMerge安装,安装时,注意将软件添加到系统环境变量中; COMETPeek--->命令会保留正在执行的响应的“快照”,在响应完成前就可以查看部分内容。当web应用采用COMET模式以流式向客户端返回数据时,可以使用该命令。由于“流式”的含义就是永不结束,直有当服务端停止连接后,Fiddler才会返回响应; Abort Session--->终止当前正在执行的请求; Clone Response--->当Session列表中选中两个Session,并且其中一个Session在断点处中止,而另一个Session已经运行完成时才可用。该命令会把已经完成的Session的响应拷贝给暂停运行的Session; Unlock For Editing--->使Session的请求和响应都可以在Inspector中编辑; Inspect in New Windowns--->打开一个新的Session Inspector窗口; Properties--->打开Session属性窗口,显示当前的Session信息; |
![]() | Copy拷贝; Copy--->This Column拷贝摘要,其中包括:请求方法,URL,响应状态码及状态信息。如果是重定向的HTTP/3xx,还会有该请求Response header中Location字段; Copy--->Terse Summary简要; Copy--->Headers Only拷贝头信息,包括请求和返回的头信息; Copy--->Session拷贝整个Session;
|
![]() | Save保存: Save--->Selected Sessions选择Sessions; Save--->Selected Sessions---> in ArchiveZIP将选择的sessions保存为SAZ格式压缩文件; Save--->Selected Sessions--->as Text将所选Session保存为txt格式文件; Save--->Selected Sessions---> as Text(Headers only)将所选sessions的请求和响应头一起保存为txt格式文件; |
![]() | Remove删除: Remove--->Selected Sessions删除选中的sessions Remove--->Unselected Sessions删除未选中的sessions; Remove--->All Session删除所有sessions |
![]() | Filter Now快捷过滤: 选中一个session右键会出现Filter Now选项,Fiddler会根据你选择的session快速生成隐藏/显示条件; 当我们选则隐藏某一个条件后,session list会隐藏符合条件的session; |
![]() | Mark标记所选的会话: Mark--->Strikeout失败; Mark--->Red红色; Mark--->Blue蓝色; Mark--->Gold金色; Mark--->Green绿色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未标记; |
![]() | Replay重新请求此地址: Replay--->Reissue Requests 将选中的请求以原来的形式重新发送。如果按住Shift键,可以键入重复次数。或是选中sessions后按Shift+R; Replay--->Reissue Unconditionally无条件的发送选中请求,告诉服务器不要返回HTTP/304响应,快捷键Shift+U; Replay--->Reissue and Edit把选中的请求以原来的形式重新发送,在每个session中设置请求断点,在请求被发送到服务器前,使用Fiddler的Inspector修改请求; Replay--->Reissue and Verify把选中的请求以原来的形式重新发送,验证Response状态码和Response body; 重新发送的请求会被标记出背景色,绿色代表验证通过,红色表示验证失败,在comments中会提示失败原因和对比的session id; Replay--->Reissue Sequentially将选中的请求重新发送,等待前一个响应回来后,在发送下一个; Replay--->Reissue from Composer将选中的请求克隆到Fiddler右侧的Composer模块中(Composer后续博客讲解); Replay--->Revisit in IE将sessions的url在IE中打开。注意IE总是使用GET方法,而且用自己的header和cookie,不管session中提供了什么HTTP方法和请求头; |
![]() | Select选择: Select--->Parent Request当前请求是从那个页面来的,相当于当前请求头中的Refere字段值。鼠标放在session上按P键可执行; Select--->Child Requests与1相反; Select--->Duplicate Requests选中Session列表中和当前的Session的URL和HTTP方法相同的所有Session; Select--->Matching Values值匹配选择,可以根据Session列表中的任意值匹配,鼠标放任意一列,点击Alt+左键,就会匹配出相同值的session; |
5、选项卡
| Statidtics--->对选中多个Sessions统计; Inspectors--->请求头和响应体 AutoResponder--->重新定向 Composer--->模拟进行发送 FiddlerScript--->脚本 Log--->日志 Fiters--->过滤 Timeline--->瀑布流时间图 |
6、请求查看器
| Headers--->请求头信息显示为一个分级视图,包含了web客户端信息、Cookie、传输状态等; TextView--->显示POST请求的body部分为文本; SyntaxView--->显示脚本(安装SyntaxView插件) WebForms--->以直观的界面显示QueryString的值和Body的值,这里的Body应该是application/x-www-form-urlen-coded格式; HexView--->请求内容的16进制显示; Auth--->显示hearer中Proxy-Authorization和Authoriization信息; Cookies--->以直观的界面显示Header中Cookie的值; Raw--->将整个请求显示为纯文本; JSON--->通过JOSN格式显示; XML--->如果请求的body是XML格式,就是用分级的XML树来显示它; |
7、响应查看器
| Transformer--->响应信息的压缩编码格式; Headers--->用分级视图显示响应的header; TextView--->使用文本显示相应的body; SyntaxView--->显示脚本(安装SyntaxView插件) ImageView--->响应内容如果是图片则显示图片,左侧灰色区域会显示图片的大小、宽高、文件格式等信息,在下方还可以选择缩放模式:自动缩放、缩放以适应显示区域大小、无缩放; HexView--->响应内容的16进制显示; WebView--->; Auth--->显示hearer中Proxy-Authorization和Authoriization信息; Caching--->缓存; Cookies--->以直观的界面显示Header中Cookie的值; Raw--->将整个响应显示为纯文本; JSON--->通过JOSN格式显示; XML--->如果响应的body是XML格式,就是用分级的XML树来显示它; |
教程2 捕获设置
1、Fiddler抓web网站请求
手动设置方法一:Tools--->WinINET Options--->连接--->局域网设置--->代理服务器勾选后“高级”--->服务器地址:127.0.0.1,端口8888;
手动设置方法二:①、File--->勾选Capture Traffic;
②、点击左下角Capturing进行选择或取消;
自动设置步骤:Tools---> Options--->Connections--->勾选Act as system proxy on startup(作为系统启动代理)
2、Fiddler抓APP请求
2.1、常用设置
设置步骤一:Tools---> Options--->HTTPS--->勾选Decrypt HTTPS traffic--->选择…from remote clients only(从远程客户端)
设置步骤二:Tools---> Options--->Connections--->设置Fiddler listens on port:8888--->勾选Allow remote computers to connect(允许远程设备连接)
设置步骤三:①.查看fiddler所在计算机的IP(cmd---> ipconfig或者点击fiddler右上角Online)
②.手机上进行设置:同一个wifi下设置代理,服务器地址:计算机的IP(192.168.0.163),端口8888;
2.2、附加设置(常用设置后无法进行抓包)
方法一:因为有些APP对安全上要求没有那么高时候,不需要下载证书,但是有的APP对安全要求比较高,就需要下载证书,下载证书步骤:在手机浏览器输入网址:http://[FIDDLERSERVER]:[Port]/FiddlerRoot.cer或者[FIDDLERSERVER]:[Port],例如:http://192.168.0.163:8888/FiddlerRoot.cer或者192.168.0.163:8888
安装的证书在手机的位置如下,可以进行删除、重新安装;
方法二:Rules---> Customize Rules--->按Ctrl+F--->打开Find and Replace--->输入查询关键字:OnBeforeResponse--->在函数OnBeforeResponse中添加如下代码
if (oSession.oRequest["User-Agent"].indexOf("iPhone/9.2.1")> -1 && oSession.HTTPMethodIs("CONNECT")){oSession.oResponse.headers["Connection"] = "Keep-Alive";}
教程3 设置断点修改
1、 断点修改Request
1.1、Request全部中断
设置中断:Rules---> Automatic Breakpoints--->Before Requests
取消中断:Rules---> Automatic Breakpoints--->Disabled
点击下发红色箭头的位置进行中断切换;
例1:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->不输入任何关键字,点击http://news.baidu.com/页面中“百度一下”--->在fiddler中设置“value=巧吧软件测试”--->点击“Run to Completion” --->点击“Go” --->结果:“value=巧吧软件测试”;
Inspectors界面:Break on Response:发送请求,在响应数据回到Fiddler时再次中断;Run to Completion:单条运行修改后的请求;
1.2、Request特定网站中断
特定网站中断设置:快速命令行输入“bpu www.baidu.com+Enter”,只会中断www.baidu.com;
特定网站中断取消:快速命令行输入“bpu+Enter”;
2、断点修改Response
2.1、Response全部中断
设置中断:Rules---> Automatic Breakpoints--->After Response
取消中断:Rules---> Automatic Breakpoints--->Disabled
点击下发红色箭头的位置进行中断切换;
例1_脚本替换:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->刷新http://news.baidu.com/页面--->在Response中修改内容--->点击“Run to Completion” --->点击“Go” --->结果:修改后的内容;
例2_状态码替换:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->刷新http://news.baidu.com/页面--->在Response中选择状态码--->选择502_Unreachable.dat --->点击“Run to Completion”--->点击“Go” --->结果:状态码502内容;
2.2、Response特定网站中断
特定网站中断设置:快速命令行输入“bpafter www.baidu.com+Enter”,只会中断www.baidu.com;
特定网站中断取消:快速命令行输入“bpafter+Enter”;
2.3、Response查找或替换
3、其他断点相关命令行
bps:特定http状态码时中断,比如:bps 200;
bpv/bpm:在特定请求method时中断,比如bpv GET或bpm POST;
g:等于Go
教程4 重定向AutoResponder
1. 文件及图片替换(Enable rules)
目的:允许从本地返回文件,代替服务器响应,而不用将文件发布到服务器【可用正式环境验证本地文件】
步骤一:抓页面http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->选择session,右击--->Save--->Response--->Entire Response
步骤二:打开另存html文件--->修改内容
步骤三:AutoResponder--->勾选Enable rules--->选择session--->点击“Add Rule”
步骤四:Rule Editor--->第二个下拉框--->选择Find a file… --->选择修改后的html--->save;
步骤四:Rule Editor--->第二个下拉框--->选择状态码--->save;
步骤五:清空fillder抓包数据--->刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->页面--->查看结果;
2. 未匹配到请求时正常响应(Unmatched requests passthrough)
不勾选Unmatched requests passthrough时地址错误;
勾选Unmatched requests passthrough时地址错误不匹配;
步骤:勾选Unmatched requests passthrough--->选中文件--->修改文件地址--->Save--->重新刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome页面
3、设置延时(Enable Latency)
步骤:勾选Enable Latency --->出现Latency列--->选中某个文件--->右击--->选择Set Latency--->设置延迟时间(3000毫秒)--->save--->重新刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome页面,设置的内容会发生3s的延迟;
4、URL匹配
EXACT开头:表示完全匹配
regex开头:表示用正则表达式来匹配
StringToMatch:字符串匹配
5、Test是否匹配
步骤:选中session--->点击Test--->查看是否匹配上;
教程5 Fiddler过滤
1、User Fiters启用
2、Action
Action:Run Filterset now是否运行,Load Filterset加载,Save Filterset保存;
3、Hosts过滤
Zone:指定只显示内网(Intranet)或互联网(Internet)的内容;
Host:指定显示某个域名下的会话;
-No Host Filter:无HOST过滤;
Hide the following Hosts:只显示如下HOST;
Flag the following Hosts:加粗显示如下HOST;
输入多个HOST,多个之前用半角逗号或者回车分隔;
支持通配符:*,baidu.com;
步骤:选择Hosts--->输入过滤条件单条件(ir.baidu.com)或多条件(ir.baidu.com,www.baidu.com或ir.baidu.com+Enter+www.baidu.com)或通配符(*.baidu.com)--->Changes not yet saved--->选择Ations中Run Filterset now;
4、Client Process过滤
客户端进程过滤规则:
Show only traffic from:你可以指定只捕获哪个Windows进程中的请求;
Show only Internet Explorer traffic:只显示IE发出的请求;
Hide Windows RSS platform traffic:隐藏Windows RSS平台发出的请求;
5、Request Headers过滤
请求header过滤规则:
经常使用:Show only if URL contains;
Flag requests with headers:标记带有特定header的请求;
Delete request headers:删除请求header;
Set request header设置请求的header;
6、Breakpoints
断点设置规则:
Break request on HTTP POST:给所有POST请求设置断点;
Break request on HTTP GET with QueryString:给所有带参数的GET请求设置断点;
Break response on Content-Type:给特定的Content-Type设定断点;
7、Response Status Code过滤
响应HTTP状态过滤规则:
Hide success(202,204,206):隐藏响应成功的session(202,204,206);
Hide Authentication demands(401):隐藏未经授权被拒绝的session(401);
Hide redirects(300,301,302,303,307):隐藏重定向的session(300,301,302,303,307);
Hide Not Modified(304):隐藏无变更的session(304);
8、Response Type and Size
响应类型和大小过滤规则:
Show all Content-Type:显示所有响应类型;
Hide smaller than ?KB:隐藏小于指定大小的session;
Hide larger than ?KB:隐藏大于指定大小的session;
Time HeatMap:获得即时数据(绿色阴影代表响应时间在50毫秒以内;超过50毫秒但在300毫秒之内的响应条目没有颜色;响应时间在300至500毫秒之间的会涂以黄色;超过500毫秒的用红色底纹显示);
Block script files:阻止脚本文件,显示为404;
Block image files:阻止图片文件;
Block SWF files:阻止SWF文件;
Block CSS files:阻止CSS文件;
9、Response Headers
响应header过滤规则:
Flag response that set cookies:标记会设置cookie的响应;
Flag response with headers:标记带有特定header的响应;
Delete response headers:删除响应header;
Set response header:设置响应的header;
10、会话列表:鼠标右击
教程6 Fiddler Script
1、安装SyntaxView插件
使用Fiddler Script前需要安装SyntaxView插件:
方式1:Inspectors tab--->Get SyntaxView tab--->Download and Install SytaxView Now…
方式2:http://getfiddler.com/FiddlerSyntaxSetup.exe
2、进入FiddlerScript页面
方式1:直接点击FiddlerScript页签;
方式2:Rules--->Customize Rules--->Fiddler ScriptEditor;
3、FiddlerScript脚本进行自定义修改
修改session样式;
修改http请求和应答;
修改URL;
定制菜单:定制rule菜单的子菜单;定制tool菜单的子菜单;定制右键子菜单;
4、模拟慢速网络
步骤一:Customize Rule修改脚本:上传/下载1KB要delay多久
步骤二:Rules--->Performance--->启用Simulate Modem Speeds
步骤二:重新刷新抓包网页--->结果很慢;
教程7 次要功能和第三方插件
1、替换HTTP Request Host
应用场景:进行开发时,线上去测试跳转调试
替换命令:urlreplace news.baidu.com www.baidu.com;
清除命令:urlreplace,需要同时清除浏览器缓存;
永久替代:Script脚本实现
2、配置Host
应用场景:线下和线上进行域名ip地址进行替换;
步骤:Tools--->HOSTS--->Host Remapp
3、Compose-Request发射器
4、HTTP统计图
5、QuickExec命令行的使用
cls
select:select image
?.png
bpu、bpafter、bps、bpv、bpm
>size <size
=status:=状态码
@host:匹配域名
6、TimeLine瀑布图
选择多个会话,从条形图表中可以分别出哪些请求耗时最多;
不同颜色代表不同的元素类型的响应(浅绿色代表图片,深绿色是JavaScript,红色是CSS,其他为蓝色);
其他符号:请求前面的红色圆圈表示这个连接是新建的,绿色表示是复用的;
黑色竖线,表示的是浏览器收到服务器响应的第一个字节这一时刻;
向下的箭头表示重定向,302错误;
红色感叹号表示有错误发生,状态为4XX或5XX;
红色的X,说明服务端响应完这个请求之后,断开了连接;
闪电表示这是Fiddler的“AutoResponder”的响应;
软盘图标表示这个响应正文从本地获得,304错误;
7、编码小工具、查询会话、编码解码
8、第三方插件
Syntax-Highlighring:代码高亮插件;
JavaScript格式化插件:JS格式化;
WinDiff:会话比较功能;
Stave插件:目录替换;项目配置管理;自定义颜色;上下行网速限制;
Willow:可以统计数据包;修改Host;请求重定向;编码转换;低网速模拟:慢速网络模拟可视化;断点调试;过滤HTTP请求;
9、官方文档
http://www.telefik.com/fiddler