开发者和系统管理员的必备技能:调试工具
对于开发者和系统管理员来说,调试应用程序、API或服务是一项基础技能。掌握正确的工具,能在关键时刻起到救命的作用。
什么是调试?
如果你看过犯罪剧,那么调试的概念对你来说应该不陌生。调试是一个涉及多种技巧的过程,它有系统地找出并解决程序中的问题和错误。
此外,调试还会排除所有可能妨碍软件正常运行的问题,或者在 Web 应用程序的情况下,解决其运行障碍。调试 API 或 Web 应用程序的过程主要涉及尝试重现问题。
因此,需要发送 API 请求。问题在于,大多数浏览器会阻止您更改原始标头,甚至限制 URL 的大小。
换句话说,要重现该问题,您可能需要执行一些 HTTP 操作。这就需要一些强大的调试工具。
调试过程包含多种组件或策略,包括:
- 交互式调试
- 控制流分析
- 单元测试
- 集成测试
- 日志文件分析
- 监控
- 内存转储
- 性能分析
有趣的是,某些 HTTP 客户端(例如 Web 浏览器)具有内置的 Web 开发者工具。 这些工具可以用来调试 API,因此无需编写专门的调试工具。
什么是 HTTP 客户端?
假设您正在考虑构建一个利用 HTTP 协议进行分布式通信或 HTTP 感知的系统,例如 Web 应用程序。那么,您可能需要了解 HTTP 客户端组件。
HTTP,即超文本传输协议,是您每次输入 URL 时在 Web 上进行通信或传输数据的基础。它是一种使浏览互联网成为可能的应用层协议。
现在,HTTP 客户端是一个系统,它以 HTTP 文本格式向服务器发送请求,并从同一服务器接收响应。
理解 HTTP 客户端和 HTTP 服务器之间的区别至关重要。
HTTP 客户端与服务器的区别
虽然 HTTP 客户端通常是 Web 浏览器或实用程序,但 HTTP 服务器充当应用程序服务器的代理。
简而言之,您的智能手机、电视、PlayStation,实际上任何可以连接到互联网的设备,都可能使用 HTTP 客户端。
同样,HTTP 服务器是 HTTP 客户端连接到的网络计算机。它们之间的关系更像是一种对话:HTTP 客户端发送请求,HTTP 服务器做出响应。
HTTP 请求示例
请求方法 | 作用 |
GET | 请求整个资源 |
HEAD | 请求没有正文的资源 |
POST | 将内容添加到现有 Web 资源 |
PUT | 修改现有的 Web 资源 |
DELETE | 移除指定的资源 |
TRACE | 显示对 Web 资源的更改 |
OPTIONS | 显示 URL 的可用 HTTP 方法 |
CONNECT | 将请求连接转换为透明 TCP/IP 隧道 |
PATCH | 部分修改 Web 资源 |
调试网络从未如此简单。有了这些工具,您可以更轻松地进行开发工作。
HTTPie
HTTPie 的主要目的是使命令行界面 (CLI) 与 Web 服务交互更加友好。该工具提供了一个用于发送请求的 HTTP 命令,使用自然易懂的语法。
HTTPie 可用于调试、测试和连接 HTTP 服务器。 它支持 HTTP、HTTPS 和代理。
主要特点:
- 内置 JSON 支持系统
- 可安装在 Windows、macOS 和 Linux 上
- 自定义 HTTP 标头和方法
- 提交表单
- 离线模式
- 基本和摘要式身份验证
- 直观的语法
不想在本地安装 HTTPie?
不用担心,您现在可以在线运行它。
Fiddler
Fiddler 是一个跨平台的网络调试代理。它可以帮助您操纵 Web 会话、检查 HTTPS 流量并监控计算机和互联网之间的流量。
您可以在 Windows、macOS 和 Linux 上安装 Fiddler。它可能是最流行的流量调试工具。
RESTer
RESTer 可作为 Google Chrome 和 Firefox 的扩展程序使用。
主要特点:
- 支持基本或 OAuth2 身份验证的授权标头
- 查看请求历史
- 使用任何方法、URL、正文和自定义标头执行请求
- 测试和调试 API
Paw
Paw 是一个功能齐全的 HTTP 客户端,允许您发送各种 HTTP 请求。使用 Paw,您可以测试您的 API 并探索新的 API。
Paw 专为 macOS 构建,具有易于使用的功能。您可以导入和生成 swagger、RAML 等,它支持 JSON 模式。
主要特点:
- 支持基本、OAuth、Hawk、摘要等多种身份验证
- 动态值
- 环境
- 可通过基于 JavaScript 的扩展进行扩展
- Cookies 和会话操作
Requester
Requester 是一个强大的客户端,它结合了 HTTPie、Postman 和 Paw 的特性。它仅适用于 Sublime Text 编辑器。
主要特点:
- 支持 JSON Schema
- 请求集合和历史
- 带有语法突出显示的彩色输出
- 现代用户体验
- 易于设置 Cookie、自定义标头、请求正文和查询参数
- GraphQL 支持
Postman
经常使用 API?
你会喜欢上 Postman。
Postman 无疑是用于调试 Web 应用程序的更流行的 HTTP 客户端之一。它能加速并简化 API 开发。
主要特点:
- 强大的 GUI,具有用户友好的界面
- 请求历史
- 使用集合运行器进行自动化测试
- 灵活的 API 监控
- 支持 REST、GraphQL、SOAP
- 多种负载支持,包括 JSON 和 HTML
cURL
cURL 是一个命令行工具,用于使用 URL 语法发送数据。
好消息是,cURL 默认安装在大多数 UNIX 风格的操作系统上。它支持多种协议,包括 FTP、LDAP、POP3、SMTP、GOPHER、IMAP、HTTP、HTTPS 和 SCP。
Charles Proxy
顾名思义,Charles Proxy 是一个 HTTP 和反向代理。它通过路由本地流量来工作。
您可以将 Charles 用于 SSL 代理、带宽限制、AJAX 调试、断点等。
Whistle
Whistle 是一个基于 NodeJS 的跨平台调试工具,用于捕获和操作 HTTP、HTTPS、WebSocket 和 TCP 流量。
首先,您需要安装 NodeJS,然后使用 npm 安装 Whistle。
npm install -g whistle
如果默认功能不能满足您的需求,您始终可以使用插件扩展其功能。
mitmproxy
mitmproxy 是安全研究人员中流行的开源 HTTPS 代理。它可以作为 CLI、Web 或 Python API 使用。
Web 界面为您提供类似于 Chrome 开发者工具的外观和感觉。 它还支持 HTTP/2。
Proxyman
与上面提到的 Paw 类似,Proxyman 是一款优质的原生 macOS Web 调试代理应用程序。
它充当网络流量的中间人,并提供许多功能,包括以下功能:
- SSL 代理
- 重复请求
- 原型缓冲区
- 重写脚本
- 本地和远程映射
- 内容过滤
- 语法高亮
Proxyman UI 非常直观。
HTTP Toolkit
HTTP Toolkit 是一个开源的 HTTP 调试器。它是一个适用于 Windows、Mac 和 Linux 的桌面应用程序。
与其他 HTTP 调试器不同,HTTP Toolkit 为特定客户端提供自动定向拦截,包括 HTTPS 设置。它不会拦截计算机中的所有流量,从而避免捕获不相关的流量或干扰其他应用程序。
只需点击一下,即可拦截浏览器窗口(包括 Chrome、Firefox 等)、后端/脚本语言(如 Node.js、Python 和 PHP)、任何命令行工具、Electron 应用程序或 Android 设备和模拟器(包括系统级的 HTTPS 拦截)。
HTTP 工具包支持标准的 HTTP 调试器功能,包括断点和重写 HTTP(S) 流量、过滤和搜索收集到的流量,以及为许多流行的请求和响应正文格式提供突出显示和自动格式化。 拦截、检查和重写 HTTP(S) 的核心功能都是免费提供的,而一些高级功能(如导入/导出和自动模拟规则)需要付费帐户。
总结
上面列出的 HTTP 客户端和 Web 调试代理在许多方面都能为您提供帮助。它们中的大多数都是免费的,或者提供试用版,所以请尝试一些,看看哪些对您有用。
祝您调试愉快!