热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

fiddler使用笔记1

转载地址:写得很不错的fildder教程http:kb.cnblogs.compage130367Fiddler的基本介绍Fiddler的官方网站:www.fiddler2.com

转载地址:写得很不错的fildder教程   http://kb.cnblogs.com/page/130367/

Fiddler的基本介绍

  Fiddler的官方网站:  www.fiddler2.com

      Fiddler的官方帮助:http://docs.telerik.com/fiddler/knowledgebase/quickexec

  Fiddler官方网站提供了大量的帮助文档和视频教程, 这是学习Fiddler的最好资料。

  Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展

  你对HTTP 协议越了解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。

  Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。

  Fiddler的工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

技术分享图片

技术分享图片

Fiddler 如何捕获Firefox的会话

  能支持HTTP代理的任意程序的数据包都能被Fiddler嗅探到,Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。 Fiddler2启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以将Firefox的代理改为 127.0.0.1:8888就可以监听数据了。

  Firefox 上通过如下步骤设置代理

  点击: Tools -> Options,  在Options 对话框上点击Advanced tab - > network tab -> setting.

Fiddler如何捕获HTTPS会话

  默认下,Fiddler不会捕获HTTPS会话,需要你设置下, 打开Fiddler  Tool->Fiddler Options->HTTPS tab

技术分享图片

  选中checkbox, 弹出如下的对话框,点击"YES"

  

技术分享图片

技术分享图片

点击"Yes" 后,就设置好了。

  Fiddler的基本界面

  看看Fiddler的基本界面

技术分享图片

  Fiddler的HTTP统计视图

  通过陈列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您当前请求的页面。使用Statistics页签,用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。

  选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间(Ctrl+shift一起选择开头和结尾)从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化

技术分享图片

QuickExec命令行的使用

  Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。

  常见得命令有:

  help  打开官方的使用页面介绍,所有的命令都会列出来

  cls    清屏  (Ctrl+x 也可以清屏)

  select  选择会话的命令

  ?.png  用来选择png后缀的图片

  bpu  截获request

技术分享图片

Fiddler中设置断点修改Request

  Fiddler最强大的功能莫过于设置断点了,设置好断点后,你可以修改httpRequest的任何信息包括host, COOKIE或者表单中的数据。设置断点有两种方法:

  第一种:打开Fiddler 点击Rules-> Automatic Breakpoint  ->Before Requests(这种方法会中断所有的会话)——    F11

  如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled                   ——shift+F11  

  第二种:  在命令行中输入命令:  bpu www.baidu.com   (这种方法只会中断www.baidu.com)

  如何消除命令呢?  在命令行中输入命令 bpu

技术分享图片

(截图工具:Windows 端好用的截图工具当然要算上 当然要算上 Snipaste!——  https://www.zhihu.com/question/19593742

动态图查看)

看个实例,模拟博客园的登录, 在IE中打开博客园的登录页面,输入错误的用户名和密码,用Fiddler中断会话,修改成正确的用户名密码。这样就能成功登录:

  1. 用IE 打开博客园的登录界面  http://passport.cnblogs.com/login.aspx

  2. 打开Fiddler,  在命令行中输入bpu http://passport.cnblogs.com/login.aspx

  3. 输入错误的用户名和密码,点击登录

  4. Fiddler 能中断这次会话,选择被中断的会话,点击Inspectors tab下的WebForms tab 修改用户名密码,然后点击Run to Completion 如下图所示。

  5. 结果是正确地登录了博客园

技术分享图片

Fiddler中设置断点修改Response

  当然Fiddler中也能修改Response:

  第一种:打开Fiddler 点击Rules-> Automatic Breakpoint  ->After Response  (这种方法会中断所有的会话)

  如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled

  第二种:  在命令行中输入命令:  bpuafter www.baidu.com   (这种方法只会中断www.baidu.com)

  如何消除命令呢?  在命令行中输入命令 bpuafter,

技术分享图片

Fiddler中创建AutoResponder规则

  Fiddler 的AutoResponder tab允许你从本地返回文件,而不用将http request 发送到服务器上。

  看个实例:

  1. 打开博客园首页,把博客园的logo图片保存到本地,并且对图片做些修改。

  2. 打开Fiddler 找到logo图片的会话, http://static.cnblogs.com/images/logo_2012_lantern_festival.gif,  把这个会话拖到AutoResponer Tab下

  3. 选择Enable automatic reaponses 和Unmatched requests passthrough

  4. 在下面的Rule Editor 下面选择 Find a file... 选择本地保存的图片.  最后点击Save 保存下。

  5.   再用IE博客园首页, 你会看到首页的图片用的是本地的。

技术分享图片

技术分享图片

  Fiddler中如何过滤会话

HTTP Request header

  使用Fiddler 能很方便的查看Reques header, 点击Inspectors tab -> Request tab -> headers  如下图所示.

技术分享图片

  header 有很多,比较难以记忆,我们也按照Fiddler那样把header 进行分类,这样比较清晰也容易记忆。

  Cache 头域

  If-Modified-Since

  作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端 就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

  例如:If-Modified-Since: Thu, 09 Feb 2012 09:07:57 GMT

技术分享图片

If-None-Match

  作用: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用 本地缓存文件。否则将返回200状态和新的资源和Etag.  使用这样的机制将提高网站的性能

  例如: If-None-Match: "03f2b33c0bfcc1:0"

  实例如下图

技术分享图片技术分享图片

 

  Pragma

 

Pragma

  作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样

  Pargma只有一个用法, 例如: Pragma: no-cache

  注意: 在HTTP/1.0版本中,只实现了Pragema:no-cache, 没有实现Cache-Control

  Cache-Control

  作用: 这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下

  Cache-Control:Public   可以被任何缓存所缓存()

  Cache-Control:Private     内容只缓存到私有缓存中

  Cache-Control:no-cache  所有内容都不会被缓存

  还有其他的一些用法, 我没搞懂其中的意思, 请大家参考其他的资料

  Client 头域

  Accept

  作用: 浏览器端可以接受的媒体类型,

  例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档,

  如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)

  通配符 * 代表任意类型

  例如  Accept: */*  代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)

  Accept-Encoding:

  作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

  例如: Accept-Encoding: gzip, deflate

  Accept-Language

  作用: 浏览器申明自己接收的语言。 

  语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

  例如: Accept-Language: en-us

  User-Agent

  作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

  我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很 神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览 器和其它属性告诉服务器。

  例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

  Accept-Charset

  作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

  例如:

  COOKIE/Login 头域

  COOKIE:

  作用: 最重要的header, 将COOKIE的值发送给HTTP 服务器

  Entity头域

  Content-Length

  作用:发送给HTTP服务器数据的长度。

  例如: Content-Length: 38

  Content-Type

  作用:

  例如:Content-Type: application/x-www-form-urlencoded

  Miscellaneous 头域

  Referer:

  作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

  例如: Referer:http://translate.google.cn/?hl=zh-cn&tab=wT

 

 Transport 头域

  Connection

  例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

  例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

  Host(发送请求时,该报头域是必需的)

  作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

  例如: 我们在浏览器中输入:http://www.guet.edu.cn/index.html

  浏览器发送的请求消息中,就会包含Host请求报头域,如下:

  Host:http://www.guet.edu.cn

  此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

HTTP Response header

  同样使用Fiddler 查看Response header, 点击Inspectors tab ->Response tab-> headers  如下图所示

技术分享图片

 

我们也按照Fiddler那样把header 进行分类,这样比较清晰也容易记忆。

  Cache头域

  Date

  作用:  生成消息的具体时间和日期

  例如: Date: Sat, 11 Feb 2012 11:35:14 GMT 

  Expires

  作用: 浏览器会在指定过期时间内使用本地缓存

  例如: Expires: Tue, 08 Feb 2022 11:35:14 GMT

  Vary

  作用:

  例如: Vary: Accept-Encoding

  COOKIE/Login 头域

  P3P

  作用: 用于跨域设置COOKIE, 这样可以解决iframe跨域访问COOKIE的问题

  例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

  Set-COOKIE

  作用: 非常重要的header, 用于把COOKIE 发送到客户端浏览器, 每一个写入COOKIE都会生成一个Set-COOKIE.

  例如: Set-COOKIE: sc=4c31523a; path=/; domain=.aCOOKIE.taobao.com

技术分享图片

  Entity头域

  ETag

  作用:  和If-None-Match 配合使用。 (实例请看上节中If-None-Match的实例)

  例如: ETag: "03f2b33c0bfcc1:0"

  Last-Modified:

  作用: 用于指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)

  例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT

  Content-Type

  作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,

  例如:

  Content-Type: text/html; charset=utf-8

  Content-Type:text/html;charset=GB2312

  Content-Type: image/jpeg

  Content-Length

  指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。

  例如: Content-Length: 19847

  Content-Encoding

  WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。

  例如:Content-Encoding:gzip

  Content-Language

  作用: WEB服务器告诉浏览器自己响应的对象的语言者

  例如: Content-Language:da

  Miscellaneous 头域

  Server:

  作用:指明HTTP服务器的软件信息

  例如:Server: Microsoft-IIS/7.5

  X-AspNet-Version:

  作用:如果网站是用ASP.NET开发的,这个header用来表示ASP.NET的版本

  例如: X-AspNet-Version: 4.0.30319

  X-Powered-By:

  作用:表示网站是用什么技术开发的

  例如: X-Powered-By: ASP.NET

  Transport头域

  Connection

  例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

  例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

  Location头域

  Location

  作用: 用于重定向一个新的位置, 包含新的URL地址

 

多次发送请求:

先设置断点F11-捕获请求-修改请求-设置单用户并发-shift+R—然后在点击GO按钮

 技术分享图片技术分享图片

 

 F12停止抓包

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
author-avatar
生活碎事_780
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有