1、简介与安装
Fiddler是一个http调试代理,它能够记录所有的你电脑和互联网之间的http通讯,Fiddler可以也可以让你检查所有的http通讯,设置断点,以及Fiddle所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。Fiddler要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。
Fiddler包含一个简单却功能强大的基于JScript .NET事件脚本子系统,他非常灵活性非常棒,可以支持众多的http调试任务。Fiddler是用C#写出来的。
软件下载:http://fiddler2.com/get-fiddler软件学习:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#request
Fiddler还支持丰富的插件,官方也停供大量的插件:http://www.telerik.com/fiddler/add-on
2、Fiddler工作原理
Fiddler工作原理
两种代理模式:
流模式(streaming):更接近浏览器的真实情况
缓冲模式(buffering):HTTP请求所有的数据都准备好之后才把数据返回给客户端
3、使用场景
开发环境HOST配置:通常情况下配置host需要修改系统文件,很不方便;
在多个环境下切换很低效;Fiddler提供了先对高效的配置方法;
前后端接口调试:通常情况下调试前后端接口需要真实的环境、一大堆的假
数据、写JavaScript代码。Fiddler只需一个UI界面配置即可。
线上bug
fix:Fiddler可将发布文件代理到本地,快速定位线上Bug。
性能分析和优化:Fiddler会提供请求的实际图,清晰明了网站需要优化的地方。
4、工具条、状态栏常用功能
工具条:
工具条
状态栏:
状态栏
5、监控面板的使用
监控面板的使用
6、文件、文件夹代理和Host配置
7、Fiddler请求列表的icon对应具体的数据类型和状态
•Headers用于查看HTTP请求和响应数据报文头部信息
•WebForm用于查看HTTP请求数据报文中提交的表单及表单中包含具体字段名称和内容的信息
•Cookies用于查看HTTP数据报文中Cookie部分的详细信息
•Raw用于查看完整的HTTP数据报文信息
8、Fiddler的HTTP统计视图
使用Statistics页签,用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问迚行访问速度优化
9、Fiddler中Inspectors
•Inspectors tab下有很多查看Request或者Response的消息。其中Raw Tab可以查看完整的消息,Headers tab只查看消息中的header
•10、Fiddler中AutoResponder
•打开AutoResponder标签设置。可以看到界面上有三个选择框,第一个的作用是开启或禁用自动重定向功能,我们就可以在下面添加重定向规则了;第二个选择框被勾上时,不匹配的请求可以通过,不影响那些没满足我们处理条件的请求。第三步,创建重定向规则,将目标文件请求重定向到本地文件。选中刚刚定位的文件,通过“Add…”按钮增加规则,也可以直接拖动过来。第四步,选择本地刚刚保存的文件或者替换的文件,作为替换这个请求的内容
•
•11、QuickExec命令行的使用
•Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。 常见得命令有:
•help打开官方的使用页面介绍,所有的命令都会列出来
•cls清屏(Ctrl+x也可以清屏)
•select选择会话的命令
•?.png用来选择png后缀的图片
•12、Fiddler中设置断点修改Request
•Fiddler最强大的功能莫过设置断点了,设置好断点后,可以修改httpRequest的任何信息包括host, cookie戒者表单中的数据。设置断点有两种方法
•第一种:打开Fiddler点击Rules->
Automatic Breakpoint ->Before Requests(这种方法会中断所有的会话)如何消除命令呢? 点击Rules-> Automatic Breakpoint->Disabled
•第二种:在命令行中输入命令: bpu www.baidu.com
(这种方法只会中断www.baidu.com)
•13、Fiddler中设置断点修改Response
•第一种:打开Fiddler点击Rules->
Automatic Breakpoint ->After Response (这种方法会中断所有的会话)如何消除命令呢? 点击Rules-> Automatic Breakpoint
->Disabled第二种:在命令行中输14入命令: bpuafter www.baidu.com (这种方法只会中断www.baidu.com)
•14、Fiddler中查询会话
•用快捷键Ctrl+F打开Find Sessions的对话框,输入关键字查询你要的会话。查询到的会话会用黄色显示
•15、Fiddler中保存会话
•有些时候我们需要把会话保存下来,以便发给别人去分析。 保存会话的步骤如下: 选择你想保存的会话,然后点击File->Save->SelectedSessions
•16、http请求
•http请求由三部分组成,分别是:请求行、消息报头、请求正文。请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URIHTTP-Version CRLF
•请求方法有多种,各个方法的解释如下:
•GET请求获取Request-URI所标识的资源
•POST在Request-URI所标识的资源后附加新的数据。POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。
•HEAD请求获取由Request-URI所标识的资源的响应消息报头
•PUT请求服务器存储一个资源,并用Request-URI作为其标识
•DELETE请求服务器删除Request-URI所标识的资源
•TRACE请求服务器回送收到的请求信息,主要用于测试或诊断
•CONNECT保留将来使用
•OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求
•(CRLF) //该CRLF表示消息报头已经结束,在此之前为消息报头
•17、http响应
•HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF
•HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述
•
•18、常见的Http数字状态码
•一些常见的状态码为:
•200 OK //客户端请求成功
•400 Bad Request //客户端请求有语法错误,不能被服务器所理解
•401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
•403 Forbidden //服务器收到请求,但是拒绝提供服务
•404 Not Found //请求资源不存在,eg:输入了错误的URL
•500 Internal Server Error //服务器发生不可预期的错误
•503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
•18、数字状态码详解
•1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。
•100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
•101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。
•2xx(成功)表示成功处理了请求的状态代码。
•200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
•201(已创建)请求成功并且服务器创建了新的资源。
•202(已接受)服务器已接受请求,但尚未处理。
•203(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。
•204(无内容)服务器成功处理了请求,但没有返回任何内容。
•205(重置内容)服务器成功处理了请求,但没有返回任何内容。
•206(部分内容)服务器成功处理了部分GET请求。
•3xx(重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
•300(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
•301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
•302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
•303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
•304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
•305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
•307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
•4xx(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
•400(错误请求)服务器不理解请求的语法。
•401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
•403(禁止)服务器拒绝请求。
•404(未找到)服务器找不到请求的网页。
•405(方法禁用)禁用请求中指定的方法。
•406(不接受)无法使用请求的内容特性响应请求的网页。
•407(需要代理授权)此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。
•408(请求超时)服务器等候请求时发生超时。
•409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
•410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。
•411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
•412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
•413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
•414(请求的URI过长)请求的UR(通常为网址)过长,服务器无法处理。
•415(不支持的媒体类型)请求的格式不受请求页面的支持。
•416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。
•417(未满足期望值)服务器未满足"期望"请求标头字段的要求。
•5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
•500(服务器内部错误)服务器遇到错误,无法完成请求。
•501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
•502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
•503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
•504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
•505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本