编辑推荐
Fiddler Web调试工具之父倾力撰写的指南
测试专业人员鼎力推荐
内容简介
Fiddler是一种流行的Web调试代理。它功能强大,界面友好,简单易用,无论对开发人员或者测试人员来说,都是非常有用的工具。本书是Fiddler的开发者EricLawrence编写的一本参考指南。全书分为10章和4个附录,从认识Fiddler开始,介绍了基本技巧和概念、配置选项、Inspectors、扩展、数据流导入导出、FiddlerScript和FiddlerCore等主题;附录部分还给出了故障排除和命令行等有用的参考信息。本书适合Web开发人员和Web测试人员阅读参考,也适合想要学习和掌握Fiddler的读者阅读。通过本书,你将学会如何利用Fiddler调试Web相关的应用,掌握如何调试HTTPS数据流,学会如何在流行的设备上使用Fiddler,甚至掌握更多高级的扩展功能。
作者简介
Eric Lawrence是Fiddler Web调试平台的创始人,目前是微软的IE浏览器组的Program Manager,他从1999年一直在开发Web应用和浏览器。除了Fiddler之外,他还开发和维护其他的免费工具。
内页插图
目录
第1章 引言
1.1 起源
关于本书
1.2 快速入门
1.2.1 基本概念
1.2.2 使用场景
第2章 探索Fiddler
2.1 入门
2.1.1 系统需求
2.1.2 安装Fiddler
2.1.3 更新Fiddler
2.1.4 卸载Fiddler
2.2 FIDDLER用户界面
2.2.1 Web Sessions列表
2.2.2 Web Session上下文菜单
2.3 FIDDLER的主菜单
2.3.1 File菜单
2.3.2 Edit菜单
2.3.3 Rules菜单
2.3.4 Tools菜单
2.3.5 View菜单
2.3.6 Help菜单
2.4 FIDDLER的工具栏
Fiddler的状态栏
2.5 QUICKEXEC
2.6 应用热键
2.7 统计选项卡
2.8 FILTERS选项卡
2.9 TIMELINE时间轴选项卡
2.9.1 模式:Timeline(时间轴)
2.9.2 模式:Client Pipe Map(客户端管道映射)
2.9.3 模式:Server Pipe Map(服务端管道映射)
2.9.4 使用时间轴进行性能分析
2.10 自动响应(AUTORESPONDER)选项卡
2.10.1 指定匹配条件
2.10.2 指定Action Text
2.10.3 对Action Text应用正则表达式
2.10.4 拖放支持
2.10.5 FARX文件
2.11 TEXTWIZARD
字符编码
2.12 COMPOSER选项卡
2.13 Log选项卡
2.14 Find Session窗口
2.15 Hosts Remapping工具
第3章 技巧和概念
3.1 使用Fiddler重定向数据流
重定向请求的功能
3.2 Session比较
3.3 断点调试
第4章 配置Fiddler和客户端
4.1 Fiddler选项
4.1.1 常用选项
4.1.2 HTTPS选项
4.1.3 扩展选项
4.1.4 连接选项
4.1.5 外观选项
4.2 HEADER编码设置
4.3 PREFERENCES(偏好)
4.4 配置客户端
4.4.1 捕获浏览器的数据流
4.4.2 从其他应用中捕获数据流
4.4.3 通过服务捕获数据流
4.4.4 捕捉“回路”数据流
4.4.5 在Max OSX上运行Fiddler
4.4.6 从其他计算机捕捉数据流
4.4.7 从设备捕捉数据流
4.4.8 使用Fiddler作为反向代理
4.4.9 挂接到上游代理服务器
4.4.10 挂接到SOCKS/TOR
4.4.11 VPN、Modem和网络共享
4.4.12 DirectAccess
4.5 内存使用和Fiddler的“位数”
4.6 缓存和流式数据流
4.6.1 请求缓存
4.6.2 响应缓存
4.6.3 COMET
4.7 HTML5 WEBSOCKETS
4.8 Fiddler和HTTPS
信任Fiddler根证书
4.9 为HTTPS解密配置客户端
4.9.1 浏览器
4.9.2 HTTPS和设备
4.9.3 HTTPS服务器有Bug
4.9.4 证书生效
4.9.5 Certificate Pinning
4.10 Fiddler和FTP
4.11 Fiddler和Web认证
4.11.1 HTTP身份认证
4.11.2 Fiddler中的自动身份认证
4.11.3 身份认证问题
4.11.4 HTTPS客户端证书
第5章 Inspectors
5.1 概览
5.2 授权和认证(AUTH)
5.3 缓存(CACHING)
5.4 COOKIES
5.5 HEADERS
5.5.1 上下文菜单
5.5.2 快捷键
5.5.3 编辑
5.6 HEXVIEW
5.7 IMAGEVIEW
5.8 JSON
5.9 RAW
5.10 SYNTAXVIEW
5.11 TEXTVIEW
5.12 TRANSFORMER
5.12.1 响应的编码的一些背景知识
5.12.2 使用Transformer添加或删除编码方式
5.12.3 删除编码的其他方式
5.13 WEBFORMS
5.14 WEBVIEW
5.15 XML
第6章 扩展
6.1 概览
6.1.1 流行的第三方扩展
6.1.2 我创建的扩展
6.2 JAVASCRIPT FORMATTER
6.3 GALLERY
全屏视图
6.4 CONTENT BLOCKER
6.5 TRAFFIC DIFFER
6.6 FIDDLERSCRIPT编辑器
6.6.1 FiddlerScript选项卡
6.6.2 ClassView侧边栏
6.6.3 Fiddler2 ScriptEditor
6.7 SAZCLIPBOARD
6.8 ANYWHERE
第7章 保存、导入和导出数据流
7.1 Session的ARCHIVE ZIP(SAZ)文件
保护SAZ文件
7.2 FIDDLERCAP
7.2.1 Capture窗口
7.2.2 Capture Options窗口
7.2.3 Tools窗口
7.3 Fiddler的Viewer模式
7.4 导出和导出Session
7.4.1 导入格式
7.4.2 导出格式
第8章 FiddlerScript
8.1 使用FiddlerScript扩展Fiddler
8.1.1 关于FiddlerScript
8.1.2 编辑FiddlerScript
8.2 FIDDLERSCRIPT函数
8.2.1 Session处理函数
8.2.2 常用函数
8.3 FIDDLERSCRIPT及自动化工具
8.4 扩展Fiddler的UI菜单
8.4.1 扩展Tools菜单
8.4.2 扩展Web Session的上下文菜单
8.4.3 扩展Rules菜单
8.4.4 创建一个顶级菜单
8.5 扩展Fiddler UI——在Web Session列表中添加列
8.5.1 使用属性绑定列
8.5.2 通过AddBoundColumn绑定列
8.6 FIDDLEROBJECT函数
8.7 引用程序集ASSEMBLIES
8.8 示例脚本
8.8.1 请求脚本
8.8.2 响应脚本
8.8.3 更多例子
第9章 通过.NET代码扩展Fiddler
9.1 通过.NET扩展Fiddler
9.1.1 项目需求和设置
9.1.2 调试扩展
9.1.3 扩展的最佳实践
9.2 和Fiddler对象交互
9.2.1 Web Session列表
9.2.2 Session对象
9.2.3 向TextWizard发送字符串
9.2.4 记录日志
9.2.5 和FiddlerScript引擎交互
9.3 Preferences编程
9.3.1 Preference命名
9.3.2 IFiddlerPreferences接口
9.3.3 保存和删除Preferences
9.3.4 检索Preferences
9.3.5 观察Preference变化
9.4 构建扩展安装程序
9.5 构建Inspectors
监测Session对象
9.6 处理HTTP压缩和分块传输
9.6.1 对响应体副本解码
9.6.2 使用GetRe*BodyAsString方法
9.6.3 使用utilDecode*方法
9.6.4 Inspector程序集
9.7 构建扩展
9.7.1 理解线程
9.7.2 集成到QuickExec
9.7.3 示例扩展
9.7.4 扩展的程序集
9.8 构建导入导出转换器(TRANSCODERS)
9.8.1 处理选项
9.8.2 不止是文件
9.8.3 示例Transcoder
第10章 FiddlerCore
10.1 概述
10.1.1 合法性
10.1.2 FiddlerCore入门
10.1.3 编译示例应用
10.2 FIDDLERAPPLICATION类
10.2.1 FiddlerApplication事件
10.2.2 FiddlerApplication提供的方法
10.2.3 FiddlerApplication的属性和变量
10.2.4 Fiddler API的其余部分
10.3 FIDDLERCORE的常见任务
附录A 故障排除
A.1 缺失数据流
A.2 安全软件的干扰
A.3 代理设置被破坏
A.4 重新设置Fiddler
A.5 解决证书问题
A.6 清除Fiddler所有运行痕迹
A.7 Fiddler崩溃信息提示关于“Configuration System”
A.8 Fiddler会随机停止捕捉数据流
A.9 Fiddler在流式发送RPC-over-HTTPS的数据流时“抛锚”
附录B 命令行语义
B.1 选项标志
B.2 实例
附录C Session标志位
C.1 Session显示标志位
C.2 断点和编辑标志位
C.3 网络标志位
C.4 认证标志位
C.5 客户端信息标志位
C.6 性能模拟标志位
C.7 HTTPS标志位
C.8 Request Composer标志位
C.9 其他标志位
附录D Preferences
D.1 网络Preferences
D.2 HTTPS Preferences
D.3 Fiddler UI Preferences
D.4 FiddlerScript Preferences
D.5 TextWizard Preferences
D.6 Request Composer Preferences
D.7 路径配置
D.8 其他标志位
D.9 扩展Preferences
D.10 Raw Inspector
D.11 JavaScript Formatter
D.12 证书生成器(Certificate Maker)
前言/序言
深入透视网络通信的利器:Fiddler调试权威指南 网络通信的复杂性日益增加,无论是Web应用程序的开发、移动端的测试,还是API的集成,都离不开对网络流量的深入理解和精确控制。在众多网络调试工具中,Fiddler以其强大的功能、灵活的配置和友好的界面,成为全球开发者和测试人员不可或缺的利器。本书——《Fiddler调试权威指南》,将为您开启一段系统、深入的学习之旅,让您能够充分掌握Fiddler的各项精髓,轻松驾驭复杂的网络调试场景。 为何选择Fiddler? 在数字化时代,网络通信扮演着至关重要的角色。任何涉及网络交互的应用,都可能隐藏着难以察觉的性能瓶颈、功能缺陷,甚至是安全漏洞。传统的调试方法,如日志分析,往往滞后且不够直观。而Fiddler,则提供了一个实时、可交互的视角,让您能够“看到”数据在客户端和服务器之间流动,从而快速定位问题,优化性能,提升用户体验。 Fiddler之所以备受推崇,主要体现在以下几个方面: 全面的流量捕获与可视化: Fiddler能够捕获几乎所有通过本地计算机的网络流量,包括HTTP、HTTPS、FTP等协议。它以清晰直观的列表形式展示请求和响应,让您可以逐一检查每一个细节,包括请求头、请求体、响应头、响应体、Cookie、查询参数等等。 强大的请求修改能力: 许多问题并非直接由服务器产生,而是由于错误的请求造成的。Fiddler允许您在请求发送之前或响应返回之后对其进行修改,这为模拟各种异常场景、测试服务器对特定请求的响应提供了极大的便利。您可以篡改URL、修改请求头、编辑请求体,甚至模拟网络延迟和错误。 灵活的断点调试: 断点功能是Fiddler最核心的调试能力之一。通过设置断点,您可以让Fiddler在请求发送前或响应返回前暂停,从而有充足的时间检查和修改数据。这对于理解应用程序的逻辑流程、调试复杂的交互过程至关重要。 丰富的脚本扩展能力: Fiddler强大的脚本引擎(支持JScript.NET)允许您编写自定义脚本,实现更高级的自动化任务和定制化调试逻辑。无论是自动化的性能测试、复杂的请求校验,还是生成模拟数据,都可以通过脚本轻松实现。 跨平台支持与易用性: 虽然Fiddler最初是为Windows平台设计的,但通过Wine等工具,它也能在macOS和Linux上运行。其直观的用户界面,即使是初学者也能快速上手。 本书的目标读者 《Fiddler调试权威指南》旨在为以下人群提供一套系统、深入的学习方案: Web开发者: 无论您是前端工程师还是后端工程师,都需要深刻理解HTTP协议的工作原理,以及应用程序如何与服务器进行交互。Fiddler将帮助您分析前端发送的请求,排查后端响应的问题,优化页面加载速度,调试AJAX请求。 移动应用开发者(iOS/Android): 移动应用的开发离不开网络通信。本书将指导您如何配置Fiddler捕获移动设备上的网络流量,分析API请求,排查网络错误,确保移动应用与后端服务的顺畅交互。 API开发者与测试人员: 在微服务架构日益普及的今天,API的设计与测试至关重要。Fiddler是您调试API、验证接口功能、分析数据格式、模拟各种API调用场景的得力助手。 网络安全工程师: 了解网络通信的细节是进行安全审计和漏洞分析的基础。Fiddler可以帮助您识别潜在的安全隐患,例如敏感信息泄露、不安全的API接口等。 系统管理员与运维工程师: 在排查网络故障、监控应用程序性能时,Fiddler可以提供宝贵的网络流量信息,帮助您快速定位问题根源。 对网络通信感兴趣的技术爱好者: 无论您的技术背景如何,如果您对网络通信的工作原理感到好奇,并希望掌握一门强大的调试工具,本书都将为您提供一套清晰的学习路径。 本书的独特价值 不同于市面上零散的Fiddler教程,《Fiddler调试权威指南》将为您提供一套系统、全面、深入、实战的学习体验。我们不仅仅会介绍Fiddler的功能,更会深入讲解其背后的原理,以及如何在实际工作中灵活运用这些功能解决复杂问题。 本书的独特价值体现在: 循序渐进的学习曲线: 从Fiddler的安装与基本使用,到高级功能的详解,本书设计了严谨的学习顺序,确保您能够逐步掌握各项技能,避免“知其然不知其所以然”。 丰富详实的实战案例: 我们将提供大量来自真实开发场景的案例,涵盖Web开发、移动开发、API测试等多个领域。通过这些案例,您将学会如何将Fiddler的应用技巧与具体工作相结合,解决实际问题。 深入的原理剖析: 对于Fiddler的核心功能,如请求/响应结构、断点机制、HTTPS解密等,本书将进行深入的原理剖析,帮助您从根本上理解Fiddler的工作原理,从而更好地掌握和运用它。 高级技巧与最佳实践: 除了基础功能,本书还将探索Fiddler的高级用法,如编写自定义脚本、集成第三方工具、性能优化技巧等,帮助您成为Fiddler的真正专家。 问题导向的讲解: 我们将围绕开发者和测试人员在实际工作中遇到的常见问题,展开讲解,让您能够学以致用,快速提升工作效率。 本书内容概览(非具体章节标题,而是内容方向的介绍) 本书将涵盖Fiddler的方方面面,为您构建起完整的知识体系: 第一部分: Fiddler入门与核心功能 安装与配置: 详细介绍Fiddler的下载、安装流程,以及基本的网络配置,确保您能够顺利启动并开始使用。 用户界面导览: 全面解析Fiddler的各个窗口、面板和工具栏,让您熟悉其操作界面。 流量捕获原理与设置: 深入理解Fiddler如何捕获网络流量,以及各种代理设置的含义和应用场景。 请求与响应详解: 详细解读HTTP请求和响应的组成部分,包括URL、方法、头部、体、状态码等,并指导您如何利用Fiddler查看和分析这些信息。 会话管理与过滤: 学习如何有效地管理和过滤大量的会话,快速定位您关心的网络请求。 第二部分: Fiddler的强大调试能力 断点调试: 深入讲解Fiddler的断点设置,包括URL断点、头断点、体断点等,并演示如何利用断点修改请求和响应,实现精确的调试。 请求修改与模拟: 学习如何修改请求头、请求体、URL等,模拟各种客户端行为,测试服务器响应。 响应修改与模拟: 演示如何修改响应头、响应体,模拟服务器返回错误、异常数据,以测试应用程序的健壮性。 HTTPS通信的解密与调试: 详细讲解Fiddler如何解密HTTPS流量,以及在安全通信场景下的调试技巧。 Cookie与缓存管理: 分析Cookie的作用,学习如何利用Fiddler查看、修改和删除Cookie,以及理解和调试浏览器缓存。 第三部分: Fiddler的高级应用与扩展 FiddlerScript详解: 深入学习Fiddler的脚本语言JScript.NET,掌握如何编写自定义脚本来实现自动化任务,如批量修改请求、生成测试数据、执行自定义校验等。 Composer与Replay功能: 学习如何使用Composer手动构建和发送HTTP请求,以及利用Replay功能重放请求,进行API测试和性能分析。 Composer与Replay的自动化结合: 探索如何将Composer和Replay与脚本结合,实现更复杂的自动化测试场景。 性能分析与优化: 利用Fiddler的统计信息、计时器等功能,分析应用程序的网络性能瓶颈,并提供优化建议。 移动设备流量捕获与调试: 详细指导如何配置Fiddler捕获iOS和Android设备的网络流量,并进行相应的调试。 集成第三方工具与插件: 介绍Fiddler与其他常用工具的集成方式,以及如何利用第三方插件扩展Fiddler的功能。 安全方面应用: 探讨Fiddler在网络安全审计、漏洞分析方面的应用,帮助您识别潜在的安全风险。 第四部分: 实战案例与最佳实践 Web应用程序调试案例: 针对常见的Web开发问题,提供详细的Fiddler调试解决方案。 移动应用API调试案例: 演示如何利用Fiddler调试移动应用的API请求,排查网络错误。 RESTful API测试案例: 学习如何使用Fiddler进行RESTful API的测试,验证接口功能和数据交互。 性能优化实战: 通过实际案例,展示如何利用Fiddler分析并解决应用程序的网络性能问题。 常见问题解答与疑难排查: 收集和解答Fiddler使用过程中遇到的常见问题,提供实用的排查技巧。 结语 《Fiddler调试权威指南》将不仅仅是一本工具手册,更是一本助您提升网络通信调试能力的“武功秘籍”。通过本书的学习,您将能够自信地驾驭Fiddler,深入透视网络世界的每一个细节,快速定位和解决棘手的网络问题,从而极大地提升您的开发效率和产品质量。无论您是资深开发者还是技术新手,本书都将为您提供一份宝贵的学习资源,开启您在网络调试领域的精进之旅。 踏上这段旅程,让我们一同探索Fiddler的无限可能,成为一名真正意义上的网络通信调试大师!