一 Fiddler 与其他抓包工具的区别
1Firebug 虽然可以抓包, 但是对于分析 http 请求的详细信息, 不够强大模拟 http 请求的功能也不够, 且 firebug 常常是需要无刷新修改, 如果刷新了页面, 所有的修改都不会保存;
2Wireshark 是通用的抓包工具, 能获取 HTTP, 也能获取 HTTPS, 但是不能解密 HTTPS, 所以 wireshark 看不懂 HTTPS 中的内容, 但如果是 TCPUDP 协议可以用 wireshark;
3Httpwatch 也是比较常用的 http 抓包工具, 但是只支持 IE 和 firefox 浏览器(其他浏览器可能会有相应的插件);
而 Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理, 任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler
二 Fiddler 的工作原理
Fiddler 是位于客户端和服务器端的 HTTP 代理, 也是目前最常用的 http 抓包工具之一 它能够记录客户端和服务器之间的所有 HTTP 请求, 可以针对特定的 HTTP 请求, 分析请求数据设置断点调试 web 应用修改请求的数据, 甚至可以修改服务器返回的数据
既然是代理, 也就是说: 客户端的所有请求都要先经过 Fiddler, 然后转发到相应的服务器, 反之, 服务器端的所有响应, 也都会先经过 Fiddler 然后发送到客户端, 所以 web 客户端和服务器的请求如图所示:
注: 使用 Fiddler 的话, 需要先设置浏览器的代理地址, 才可以抓取到浏览器的数据包而很方便的是在你启动该工具后, 它就已经自动帮你设置好了浏览器的代理了, 当关闭后, 它又将浏览器代理还原了当然如果发现没有自动设置浏览器代理的话, 那就得自己动手去浏览器进行设置代理操作了(可自行百度每个浏览器是如何设置代理的), 反正一定要设置相应的代理, 否则 fiddler 是无法捕获到 HTTP 请求的
三 Fiddler 的使用界面介绍
1 主界面如图所示:
2 左边 web session 面板的字段及图标含义如下:
3 右边是详情和数据统计面板
1)Statistics 关于 HTTP 请求的性能 (例如发送 / 接受字节数, 发送 / 接收时间, 还有粗略统计世界各地访问该服务器所花费的时间) 以及数据分析如图所示:
2)Inspectors 是用于查看会话的内容, 上半部分是请求的内容, 下半部分是响应的内容, 提供 headerstextviewhexview,Raw 等多种方式查看单条 http 请求的请求报文的信息, 如图所示:
3)AutoResponder 可用于拦截某一请求, 即按自己添加的指定规则重定向到本地的资源或 Fiddler 资源, 从而代替服务器响应
举例: 将 baidu 这个关键字跟本地电脑的一张图片绑定了, 再访问带有 baidu 关键字的地址, 就会被劫持, 具体步骤如图所示:
启用规则后(勾选 enable rules), 在浏览器输入 pan.baidu.com, 会发现被劫持了, 显示的是绑定的本地图片, 而不是 pan.baidu.com 的页面
4)Composer 自定义请求发送服务器, Parsed 模式下你只需要提供简单的 URLS 地址即可, 如图所示
5)Filters 即过滤规则, 通过设置过滤规则来过滤所需的 http 请求, 如图 8 所示, 勾选左上角的 Use Filters 开启过滤器:
而这里有两个最常用的过滤条件: Zone 和 Host
a.Zone 指定只显示内网 (Intranet) 或互联网 (Internet) 的内容, 如图所示:
b.Host 指定显示某个域名下的会话, 如图所示, 如果框框为黄色, 表示修改未生效, 点击红圈里的文字即可:
6)timeline 请求响应时间, 在左侧会话窗口点击一个或多个请求, Timeline 便会显示指定内容从服务端传输到客户端的时间, 如图所示:
四 Fiddler 的其他功能介绍
1Fiddler 设置解密 HTTPS 的网络数据
Fiddler 可以通过伪造 CA 证书来欺骗浏览器和服务器大概原理就是在浏览器面前 Fiddler 伪装成一个 HTTPS 服务器, 而在真正的 HTTPS 服务器面前 Fiddler 又装成浏览器, 从而实现解密 HTTPS 数据包的目的
解密 HTTPS 需要手动开启, 依次点击: Tools > Fiddler Options > HTTPS ->勾选 Decrypt HTTPS traffic -> 点击 Yes, 在弹出的对话框中选择是即可, 如图所示
2Fiddler 内置命令与断点
FIddler 断点功能就是将请求截获下来, 直接点击 Fiddler 下图的图标位置, 就可以设置全部请求的断点, 也可以在命令栏输入断点命令进行截获, 如图所示
而断点的命令则可以精确设置需要截获那些请求, 如下表所示:
注: 1 如 bpafter 断点命令使用方法为: bpafter 后边跟字符串 ->表示中断所有包含该字符串的请求; bpafter ->表示解除刚刚的中断断点;
3 中断会话后修改表单内容
不知道什么原因捕获不了登录界面的会话 (除了博客园网站外, 其他很多网站的会话都捕获不到 -> 解决方法: 按上面 Fiddler 设置解密 HTTPS 的网络数据所写的步骤设置一下), 所以下面的实例是来自小坦克的, 详细博客地址在图片正文贴着
l 看个实例, 模拟博客园的登录, 在 IE 中打开博客园的登录页面, 输入错误的用户名和密码, 用 Fiddler 中断会话, 修改成正确的用户名密码这样就能成功登录:
1. 用 IE 打开博客园的登录界面 https://passport.cnblogs.com/login.aspx
2. 打开 Fiddler, 在命令行中输入 bpu https://passport.cnblogs.com/login.aspx
3. 输入错误的用户名和密码, 点击登录
4. Fiddler 能中断这次会话, 选择被中断的会话, 点击 Inspectors tab 下的 WebForms tab 修改用户名密码, 然后点击 Run to Completion 如图 14 所示
5. 结果是正确地登录了博客园(当然 Fiddler 中也能修改 Response)
4Fiddler 中会话比较功能
选中 2 个会话, 右键然后点击 Compare, 就可以用 WinDiff 来比较两个会话的不同了(注: 需要安装 WinDiff, 自行百度安装就可以了, 这里就不细说安装步骤), 如图所示
5Fiddler 中提供的编码工具
点击 Fiddler 工具栏上的 TextWizard, 这个工具可以 Encode 和 Decode string, 如图所示
6Fiddler 中的查询会话
Edit->Find Sessions(或 Ctrl+F)打开 Find Sessions 的对话框, 输入关键字查询你要的会话 查询到的会话会用黄色显示, 如图所示
7Fiddler 中的保存会话
有些时候我们需要把会话保存下来, 以便发给别人或者以后去分析 保存会话的步骤如下: File->Save->Selected Sessions
8Fiddler 中的 script 系统
首先先安装 SyntaxView 插件, Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now 如图所示
安装成功后 Fiddler 就会多了一个 Fiddler Script tab, 如图所示:
在里面我们就可以编写脚本了, 看个实例让所有 cnblogs 的会话都显示红色把这段脚本放在 OnBeforeRequest(oSession: Session) 方法下, 并且点击 Save script
- if (oSession.HostnameIs("www.cnblogs.com")) {
- oSession["ui-color"] = "red";
- }
这样所有的 cnblogs 的会话都会显示红色
9 如何在 VS 调试网站的时候使用 Fiddler
我们在用 visual stuido 开发 ASP.NET 网站的时候也需要用 Fiddler 来分析 HTTP, 默认的时候 Fiddler 是不能嗅探到 localhost 的网站不过只要在 localhost 后面加个点号, Fiddler 就能嗅探到
例如: 原本 ASP.NET 的地址是 https://localhost:9999/Default.aspx, 加个点号后, 变成 https://localhost.:9999/Default.aspx 就可以了
关于 Fiddler 的详细介绍就到这里了, 其他数据抓包分析和手机抓包分析下次再操作
来源: https://www.2cto.com/kf/201803/727300.html