一、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是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求,会先经过fiddler,然后在到服务器;当服务器有返回数据给浏览器显示时,也会先经过fiddler,然后数据才到浏览器中显示,这样一个过程,fiddler就抓取到了请求和响应的整个过程。

正常退出方式:

Fiddler界面

 


三、http协议介绍

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP协议的主要特点

1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。 请求方法常用的有GET、HEAD、POST。 每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单, 使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接: 无连接的含义是限制每次连接只处理一个请求。 服务器处理完客户的请求, 并收到客户的应答后, 即断开连接。 采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP协议之请求

http请求由三部分组成,分别是:请求行、消息报头、请求正文

请求方法有多种, 各个方法的解释如下:

GET请求获取Request-URI所标识的资源

POST在Request-URI所标识的资源后附加新的数据

HEAD请求获取由Request-URI所标识的资源的响应消息报头

PUT请求服务器存储一个资源, 并用Request-URI作为其标识

DELETE请求服务器删除Request-URI所标识的资源

TRACE请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT保留将来使用

OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求

应用举例:

GET方法在浏览器的地址栏中输入网址的方式访问网页时, 浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)

POST方法要求被请求服务器接受附在请求后面的数据, 常用于提交表单。

HTTP协议之响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK //客户端请求成功

400 Bad Request //客户端请求有语法错误, 不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,eg: 输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常


四、Fiddler抓包解析

1.使用Fiddler抓包后,会话列表面板如下图所示:

抓包工具面板功能

# :HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。

Result : HTTP响应的状态 Protocol:请求使用的协议(如HTTP/HTTPS)

HOST:请求地址的域名 URL:请求的服务器路径和文件名,也包含GET参数

BODY:请求的大小,以byte为单位

Content-Type:请求响应的类型

Caching:请求的缓存过期时间或缓存控制header的值

Process:发出此请求的Windows进程及进程ID

Comments :用户通过脚本或者菜单给此session增加的备注

custom:用户可以通过脚本设置的自定义值

2.Fiddler右边面板介绍

Statistics页签

通过该页签, 用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多, 从而对页面的访问进行访问速度优化

inspectors页签

它提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,它分为上下两部分:上部分为HTTP Request(请求)展示,下部分为HTTPResponse(响应)展示

AutoResponse页签

Fiddler最实用的功能, 它可以抓取在线页面保存到本地进行调试, 大大减少了在线调试的困难, 可以让我们修改服务器端返回的数据, 例如让返回都是HTTP404或者读取本地文件作为返回内容。

可设置打开某网页显示自己想要的内容,比如抓取百度链接,点击add rule,设置如下所示:

到百度页面刷新即可显示该图片

composer页签

支持手动构建和发送HTTP, HTTPS和FTP请求, 我们还可以从web session列表中拖曳session, 把它放到composer选项卡中, 当我们点击Execute按钮, 把请求发送到服务器端。操作如下图所示:

这样设置发送的请求,就不是浏览器发出的了,而是fiddler发出的,查看inspectors里面的信息便可看出

log页签: 打印日志

Filters页签

过滤器可以对左侧的数据流列表进行过滤, 我们可以标记、 修改或隐藏某些特征的数据流。

Timeline页签

时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。 在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间

 


五、Fiddler命令行工具

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

常见得命令有:

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

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

select : 选择会话的命令, 选择所有相应类型select image、select css、select html

?sometext : 查找字符串并高亮显示查找到的会话列表的条目,?qq.com

>size : 选择请求响应大小小于size字节的会话

=status/=method/@host:查找状态、方法、主机相对应的session会话,=504,=get,@www.qq.com

quit:退出fiddler

Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置断点

Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应

Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。

Bpv xxx:中断指定请求方式的全部 session 响应

Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx

Bpu xxx:与bpafter类似。

 


六、Fiddler应用

1.手机抓包

①启动Fiddler, 打开菜单栏中的 Tools > Fiddler Options, 打开“FiddlerOptions” 对话框

②在“Fiddler Options”对话框切换到“Connections” 选项卡, 然后勾选“Allowromote computers to connect” 后面的复选框, 然后点击“OK” 按钮

③在本机命令行输入: ipconfig, 找到本机的ip地址。

④打开android设备的“设置” ->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”(不同的手机,设置方法有所不同)

⑤在“代理” 后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888, 然后点击“保存” 按钮

⑥然后启动android设备中的浏览器,访问百度的首页,在fiddler中可以看到完成的请求和响应数据

备注: 如果是Android模拟器中ip要填写10.0.2.2,genymotion模拟器中ip要填写:10.0.3.2,手机实机中ip填电脑的ip,端口就是burp或者fiddler监听的端口 ,要处于同一网络下

2.过滤功能

①选择Filters页签,勾选use Filters勾选 Request Headers 中的 Hide if url contains 过滤项

②在里面输入:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$

REGEX: 表示启用正则表达式(?insx) 设置正则解释的规则,忽略大小写等。

此表达式表示过滤掉 url 中包括 css、ico、jpg 等后缀的请求

③勾选 Request Headers中的show only if URL contains,在里面输入

REGEX:(?insx).*\.?baidu.com/home.* 只显示: baidu.com/Home

Fiddler过滤指定域名

第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上www.baidu.com

“No Host Filter”不设置hosts过滤

“Hide The Following Hosts”隐藏过滤到的域名

“Show Only The Following Hosts”只显示过滤到的域名

“Flag The Following Hosts”标记过滤到的域名

玩转Fiddler抓包工具的更多相关文章

  1. Charles是Mac的Fiddler抓包工具

    windows下面我们经常使用 Fiddler 抓包工具进行代理等一系列操作.然而,在 Mac 下的 Fiddler 勉强能运行,但是其挫的都不想说它了.今天看到朋友推荐这款 Charles Mac下 ...

  2. Python+Requests接口测试教程(1):Fiddler抓包工具

    本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...

  3. Mac 下安装Fiddler抓包工具

    需求 我们都知道在Mac电脑下面有一个非常好的抓包工具:Charles.但是这个只能抓代理的数据包.但是有时候想要调试本地网卡的数据库 Charles 就没办法了.就想到了在windows下面的一个F ...

  4. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  5. fiddler抓包工具总结

    Fiddler 抓包工具总结 Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也 ...

  6. Python3,x:Fiddler抓包工具如何进行手机APP的数据爬取

    示例一:苹果手机抓取教程 https://www.cnblogs.com/lizm166/p/8693085.html https://blog.csdn.net/cui130/article/det ...

  7. 移动端测试接口--Fiddler抓包工具

    Fiddler抓包工具是一款免费且功能强大的数据包抓取软件.它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视.设置断 ...

  8. 【前端开发】利用Fiddler抓包工具进行本地调试

    解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...

  9. Fiddler 抓包工具总结-bpafter

    转摘https://www.cnblogs.com/shy1766IT/p/5199334.html Fiddler 抓包工具总结   名称 含义 # 抓取HTTP Request的顺序,从1开始,以 ...

随机推荐

  1. 【视频开发】ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)

    转载地址:http://blog.csdn.net/gubenpeiyuan/article/details/25618177 概要:           目前ONVIF协议家族设备已占据数字监控行业 ...

  2. 在Django中显示操作数据库的语句

    需要在配置中加上这个 LOGGING = { 'version':1, 'disable_existing_loggers':False, 'handlers':{ 'console':{ 'leve ...

  3. ChecklistForTest

    相关字段内容较长时,页面显示是否正确(包括各主页面.明细页面.打印预览页面) 数据量较多时,页面显示是否正确(包括各主页面.明细页面.打印预览页面) 各字段为空校验(都为空,部分为空,都不为空)是否正 ...

  4. 027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作

    1.product-list.jsp页面制作 (1)创建一个product-list1.jsp文件,清空,只保留 <%@ page contentType="text/html;cha ...

  5. 浅谈MVC、MVVM的区别

    一.概述 MVC,MVP,MVVM是三种常见的前端架构模式(Architectural Pattern),它通过分离关注点来改进代码组织方式.不同于设计模式(Design Pattern),只是为了解 ...

  6. Java集合框架(Java总结五)

    ”https://www.runoob.com/java/” 集合接口区别 List 接口存储一组不唯一,有序(插入顺序)的对象,允许有相同的元素. Set 接口存储一组唯一,无序的对象,不保存重复的 ...

  7. Java开发笔记(一百四十九)引入预报告的好处

    前面介绍了各种SQL语句的调用过程,虽然例子代码写死了每个SQL串,但是完全可以把查询条件作为方法参数传进来.比如现在想删除某个课程的教师记录,那么在编写删除方法时,就把课程名称作为该方法的一个输入参 ...

  8. 长乐国庆集训Day5

    T1 方阵 题目 [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑是有一定规律的.兵马俑阵总共有n ...

  9. delphi xe6 JSON 测试

    System.JSON   ISuperJSOn   mORMETJSON   QJSON  测试 我在测试时发现系统自带的JSON  占用内存大一但多了就会出现内存泄漏的问题 我用的Flst< ...

  10. (十)pdf的构成之交叉引用表

    交叉引用表(xref) 其中包含对文档中所有对象的引用.交叉引用表的目的是允许随机访问文件中的对象,因此我们不需要读取整个PDF文档来定位特定对象.每个对象由交叉​​引用表中的一个条目表示.(该表保存 ...