• Fiddler抓包工具使用详解


    Fiddler抓包工具

    一.Fiddler的作用

    1.能够监听http/https的流量,可以截获从浏览器或者客户端软件向服务器发送的http/https请求;
    2.对已截获之后的请求,还能够查看请求中的内容;
    3.能够方便进行前后端的调试,既能够伪造客户端的请求,还能够与伪造服务器的响应
    4.能够去测试网站的性能
    5.解密https的外部会话,因为https本身是一种加密的协议,可以通过fiddler进行解密操作
    6.提供第三方的插件使用
    

    二:Fiddler的工作原理

    Fiddler相当于一个代理服务器(proxy)
    '''两种代理模式'''
    流模式:fiddler会实时把服务器返回给客户端的数据进行返回。
    缓冲模式:fiddler会等待所有的请求都准备好了以后才返回给客户端
    
    区别:缓冲模式下可以控制最后的服务器响应;而流模式不能控制,更贴近于浏览器本身的真实行为
    
    根据具体的情况去选择
    '''使用场景'''
    1.开发环境的host配置
    2.前后端接口连调,composer
    3.定位线上bug,将发布文件代理到本地,快速定位线上bug
    4.性能分析和优化,inspectors, timeline
    

    三:界面介绍及使用

    第一列:菜单栏
    第二列:工具栏
    (1)气泡:备注。添加之后在会话栏的Comment列中显示备注内容
    (2)Replay:回放常用,重播一个会话;快捷键:“选中会话+R”
    (3)清除会话面板:清除请求,过滤请求×
    (4)Go:断点调试。配合状态栏上的断点工具。功能类似于debug
    具体步骤:
    	1.选中请求
        2.点击断点调试
        3.一会之后,选中的会话进入调试状态
        4.点击go进行下一步
    (5)Stream:代理模式。默认:缓冲模式,可以点击进行切换
    (6)Decode:解压请求。解压http请求里面的东西,帮助查看
    (7)Keep:指示fiddler的保持会话数目
    (8)AnyProcess:捕获请求,只看需要的请求
    (9)Find:查找请求。用颜色标注查找的请求
    (10)Save:保存会话
    (11)截图:默认5秒后截图
    (12)计时器:第一次点击-开始计时;第二次点击-返回计时结果;第三次点击,清零,重新计时。使用右键点击将不计时 
    (13)Browser:启动浏览器
    (14)Clear Cache:清除缓存
    (15)TextWizard:编码解码文本内容
    (16)Tearoff:浮窗
    第三列:会话面板和详情和数据统计面板
    '''会话面板'''
    Server Ip:需要配置
    点击rules,选择Customize Rules...
    Ctrl+F : 搜索"static function Main()", 添加代码:
     FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP",120,"X-HostIP"); 
    然后重新启动fiddler即可
    
    '''详情和数据统计面板'''
    (1)Statistics:数据统计面板,性能分析
    # 参数详解:
    ClientConnected:客户端创建连接时间
    ClientBeginRequest:客户端开始请求时间
    GotRequestHeaders:获取请求头时间
    ClientDoneRequest:客户端完成请求时间
    ServerConnected:服务器创建连接时间
    FiddlerBeginRequest:Fiddler代理服务器开始请求时间
    ServerGotRequest:服务器获得请求时间
    ServerBeginResponse:服务器开始响应时间
    GotResponseHeaders:获取响应头时间
    ServerDoneResponse:服务器完成响应时间
    ClientBeginResponse:客户端开始响应时间
    ClientDoneResponse:客户端完成响应时间
    
    '''分为Modem与DSL两种传输介质评估'''
    评估内容为:
    RTT:往返时延
    该数据体现了一个请求从发送到返回响应的时间,通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化
    
    Elapsed:运行时间
    
    '''提示世界范围内评估'''
    美国西海岸地区
    日本/北欧地区
    中国地区
    (2)Inspectors:对抓到的请求进行解包,查看具体的内容
    上边是:清秋头
    下边是服务器返回的信息
    (3)AutoResponder: 文件代理,例如将一个需要服务端返回的文件,使用本地文件做代理
    '''具体步骤'''
    	1.在decode中选中要代理的线上的文件
        2.拖拽至右边
        3.再次点击选中线上文件+R,进行回放,此时加载的是本地文件
    (4)Composer:前后端接口连调,伪造请求。可以实现不写任何js代码的情况下实现与服务端的接口调试
    '''具体步骤'''
    	1.选中请求拖拽
        2.获取信息,可对内容进行更改,伪造成一个请求,Excute执行
    (5)Timeline:性能分析,对选择多个请求有意义
    '''控制面板'''
    (1)命令行工具:执行一些快捷操作
    常见的命令有:
    help 打开官方的使用页面介绍,所有的命令都会列出来
    cls 清屏(ctrl+x也可以清屏)
    select 选择会话的命令
    ?.png 用来选择png后缀的图片
    bpu 截获request
    
    (2)状态栏:
    Capturing:开启/关闭fiddler的监听
    Web Browsers:股票率会话选择
    

    四:常用功能

    1.AutoResponder:文件替换线上bug调试
    (1)可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。 
    因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。
    (2)不仅是单个url,Fiddler支持多种url匹配的方式:
    I. 字符匹配 如 example可以匹配 http://www.example.com和http://example.com.cn 
    II.完全匹配 以EXACT开头表示完全匹配,如上边的例子 EXACT:http://blog.csdn.net/ohmygirl 
    III. 正则表达式匹配 
    以regex: 开头,使用正则表达式来匹配URL 
    如:regex:(?insx).*.(css|js|php)$ 
    表示匹配所有以css,js,php结尾的请求url
    (3)操作——模拟 
    2.Composer:前后端接口连调
    选中一个接口——>拖拽到Composer面板; 
    '''准备工作:''' 
    接口请求方式、请求参数; 
    Get请求:参数直接写在接口里面
    Post请求:参数写在Request Body里面
    3.FiddlerScript: 网络限速,测试在不同网络下的请求运行状况
    将请求代码话
    为使用方便不去编写c#代码,可以去使用图形化插件
    
    手机端监听参考网址
    '''
    https://blog.csdn.net/yue549433330/article/details/82745760
    '''
    
    

    五:web session的常用快捷键

    CTRL+A: 选中所有的session;
    ESC: 取消选中所有的session;
    CTRL+I 反向选中;如果session已选中,则取消,否则选中;
    CTRL+X 删除所有的session;
    Delete: 删除选中的session;
    Shift+Delete 删除所有未选中的session;
    R 重新执行当前请求;
    SHIFT+R 多次重复执行当前请求
    U: 无条件重新执行当前请求,发送不包含If-Modified-Since 和 If-None– Match的请求头;
    SHIFT+U 无条件地多次重复执行当前请求;
    ALT+Enter 查看当前session的属性;
    Insert:切换是否用红色粗体标记选中的session;
    M 给选中的session添加描述
    
  • 相关阅读:
    autocad.net 利用linq获取矩形框内的块参照
    autocad.net 只在图纸空间遍历块的方法
    autocad.net中判断当前被激活的空间
    计划搞一个程序来应对客户的修改标记问题
    条件编译解决AutoCAD多版本问题
    初学者往往不知道怎么获得断点,请看下面的链接应该可以解决你的问题!
    2014年3月9日正式入住博客园
    学习:SpringCloud(一)
    简单使用:SpringBoot整合Redis
    Redis 使用过程中遇到的具体问题
  • 原文地址:https://www.cnblogs.com/godlover/p/13495530.html
Copyright © 2020-2023  润新知