zoukankan      html  css  js  c++  java
  • 抓包工具Fiddler

    抓包工具Fiddler

    一、抓包工具对比

    1、Firebug
    	虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。
    
    2、Wireshark
    	通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。
    
    3、Httpwatch
    	比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。
    

    二、Fiddler介绍

    Fiddler是位于客户端服务器端HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求(http、https请求),可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

    三、Fiddler工作原理

    1、Fiddler以web代理服务器的形式工作,代理地址默认为127.0.0.1,默认端口为8888。它会自动设置代理,退出Fiddler时会自动注销代理,对别的程序不会产生影响。

    2、能支持HTTP代理的任意程序的数据包都能被Fiddler捕获到,Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。

    3、如果浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到HTTP请求的

    使用FIddler以后,请求响应如下图所示:

    四、Fiddler配置

    1、打开Fiddler Tool->Fiddler Options->HTTPS 。 (配置完后记得要重启Fiddler)。HTTPS配置主要针对抓HTTPS的包,HTTP可以不用配置

    情况一:选中Decrpt HTTPS traffic, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾选Actions-> Trust Root Certificate

    另外,如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 Ignore servercertificate errors 勾选上

    情况二:选中Decrpt HTTPS traffic, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示

    点击Yes,留意一下红框里面的内容,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称

    点击“是”

    再点击确定,这样Fiddler证书就已经添加成功了。

    查看证书Actions—>open windows certificate Manager

    证书已经添加进去了,证书名称就是之前留意的,DO_NOT_TRUST_FiddlerRoot

    五、Fiddler使用常用设置

    1、会话显示设置

    六、手机端设置

    1、设置允许远程连接

    2、查询IP

    首先查看电脑的 IP 地址,确保手机和电脑在同一个局域网内

    cmd ---> ipconfig

    3、Android手机配置

    (1)手机安装证书

    将 Fiddler 代理服务器的证书导到手机上才能抓这些 APP 的包。

    导入的过程:打开浏览器,在地址栏中输入代理服务器的 IP 和端口(即电脑的IP加fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装就好了

    下载成功后在设置里面安装,安装步骤:

    在手机-->设置-->WLAN-->WLAN 设置-->高级设置-->安装证书-->选中下载的证书文件“FiddlerRoot.cer”,输入手机锁屏密码,进入到证书安装页面,输入证书名称(我输入的是:FiddlerRoot.cer),凭证用途选择:VPN和应用,点击“确定”按钮,系统提示安装成功。
    

    (2)设置手机网络代理

    打开手机--设置--Wlan,长按WiFi名称-->选择“修改网络”-->“显示高级选项”-->在接下来显示的页面中,点击“代理”,选择“手动”--填写:代理服务器主机名、代理服务器端口(“代理服务器主机名”是第一步获取的ip,“代理服务器端口”默认的是:8888),并保存

    七、Fiddler界面介绍

    1、会话列表内容

    # --  http request的顺序,从1开始加载
    Result -- HTTP响应的状态码
    Protocol -- 请求协议
    Host -- 请求地址的域名
    URL -- 请求数据在服务器中的路径和文件名,包含GET的参数
    Body -- 请求的大小,以Byte为单温
    Caching -- 请求的缓存的过期时间和header等值
    Content-Type -- 请求响应的类型
    Process -- 发出请求的进程及ID
    Comments -- 用户添加的备注信息
    Custom -- 用户设置的自定义值
    
    

    2、#栏 图标说明

    3、右侧栏目说明

    (1)statistics

    关于HTTP请求的性能和其他数据分析。例如可以看到建立TCP/IP的时间消耗等

    (2)Inspectors——检查器

    提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。

    ImageView:JPG 格式使用 ImageView 就可以看到图片。Content-Type是image/jpeg
    TextView:HTML/JS/CSS 使用 TextView 可以看到响应的内容。Content-Type是text/html
    Raw标签:可以查看响应报文和响应正文,但是不包含请求报文
    Auth:可以查看授权Proxy-Authorization 和 Authorization的相关信息
    Cookies:可以看到请求的cookie和响应的set-cookie头信息。
    

    (3)AutoResponder——自动响应器

    AutoResponder tab允许你从本地返回文件,而不用将http request 发送到服务器上。即Fiddler拦截服务器返回的数据,通过Fiddler设置返回数据来将数据放回,人工干预返回数据

    AutoResponder功能是Fiddler最实用的功能之一,Rule可以自由地设定,可以使用搜索(默认)、精确匹配(EXACT)、正则表达式匹配(REGEX)。处理方式可以选择使用文件,也可以选择合适的时间暂停数据流(*bpu、*bpafter),人工干预。通过以上几个步骤,我们演示了怎样将HTTP请求重定向到本地的文件,进行调试,这在我们诊断跟踪一些js文件但却不能修改js文件时非常有用。比 如:在用浏览器测试P页面时,P页面引入了一个js资源文件R.js,由于R.js文件在服务器S上,而我此时又不能登录S服务器(没有S服务器的帐 号),此时我们就可以通过浏览器将R.js文件下载到本地,然后对本地的R.js文件进行调整,最后通过设置Fiddler,将R.js文件的请求使用本 地的R.js文件。
    

    (4)Composer

    Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求

    Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)

    (5)断点请求/响应

    三种状态:

    空白:不设置断点
    箭头向上:断点请求,此时客户端的请求是无法直接到达目标服务器的,需要手动控制
    箭头向下:断点响应,此时目标服务器的响应是无法直接到达客户端的,需要手动控制。
    

    断点请求并修改

    1. 设置断点请求,访问网页
    2. 点击对应的会话
    3. 查看请求报文信息
    4. 修改请求内容
    5. 完成断点,放行,把该请求发送给目标服务器。
    

    Break On Response表示把请求发给服务器,但是服务器的响应被fiddler拦截,此时可以修改响应内容(和断点响应类似)

    (6)Filters

    我们需要排除其他无用的包,只关注我们指定的域名的请求包。

    Fiddler默认是不使用过滤,不会过滤任何请求,要使用过滤,先勾上Use Filters

    三种过滤条件

    设置好了后一定要点击Actions生效

    1. 域名过滤
    2. 类型过滤
    3. 状态码过滤
    

    ①域名过滤

    *.baidu.com表示所有的百度二级域名会话
    *baidu.com表示一级域名+二级域名的会话
    
    

    ②类型过滤

    对于一些不用看的图片,css,js,可以直接过滤掉

     .*.(bmp|css|js|gif|ico|jp?g|png|swf|woff)
    
    

    ③状态码过滤

    只显示指定状态码的会话

    八、Fiddler内置命令介绍

    此处为Fiddler的命令行

    ?   后边跟一个字符串,Fiddler 将Protocol、Host 和 URL存在该字符串匹配的全部高亮显示,如?baidu.com
    >、<、=   后边跟一个数值,表示高亮显示所有尺寸大于或小于或等于该数值的会话
    @  后面跟Host,高亮显示所有改域名的会话
    
    
    bpafter xxx: 中断 URL 包含指定字符的全部 session 响应
    bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应
    bpv xxx: 中断指定请求方式的全部 session 响应
    bpm xxx: 中断指定请求方式的全部 session 响应。等同于bpv xxx
    bpu xxx: 与bpafter类似
    
    
    cls 或 clear:  清除当前的所有会话
    g 或 go:  放行所有中断下来的会话
    start: Fiddler 开始工作
    stop: Fiddler 停止工作
    quit: 关闭 Fiddler
    
    
    select
    select 后边跟响应的类型(Content-Type),表示选中所有匹配的会话
    选中 Fiddler 所有的图片,可以使用 select image
    select css 则选中所有的 css 文件
    select htm 就是选中所有的 html 文件
    
    
    allbut 或 keeponly
    跟 select 类似,不过 allbut 和 keeponly 会将所有无关的会话删除。
    
    
    !dns: 后边跟一个域名,执行 DNS 查找并在右边的 LOG 栏打印结果:
    !listen: 设置其他监听的端口,默认是 8888
    
    
  • 相关阅读:
    搭建strom 的开发环境
    maven 的plugin 的使用
    Maven 的dependency 的 classifier的作用
    Maven中的dependency的scope作用域详解
    Supervisor-进程监控自动重启
    websocket 实战
    vue 监听路由变化
    vux-uploader 图片上传组件
    vue 定义全局函数
    判断对象属性的值是否空,如为空,删除该属性
  • 原文地址:https://www.cnblogs.com/linagcheng/p/11599168.html
Copyright © 2011-2022 走看看