跳转至

httptap

httptap

PyPI Python Versions CI Coverage

httptap 是一个基于 Rich 的命令行工具,它将一次 HTTP 请求拆解为每个有意义的阶段——DNS 解析、TCP 连接、TLS 握手、服务器等待、以及响应体传输,并以时间线表格、紧凑摘要或机器友好的指标形式呈现结果。它专为交互式故障排查、回归分析 以及性能基线记录而设计。

特别优惠

🎁 GitKraken Pro 立省 50%

将 GitKraken Client、用于 VS Code 的 GitLens 以及强大的 CLI 工具组合在一起,加速每一次仓库工作流。

httptap 社区专享

亮点

  • 分阶段计时 —— 基于 httpcore 的 trace 钩子进行精确测量(当底层数据不可用时提供合理的回退估算)。
  • 全部 HTTP 方法 —— GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS,均支持请求体。
  • 请求体支持 —— 内联或从文件发送 JSON、XML 或任意数据,并自动检测 Content-Type。
  • IPv4/IPv6 感知 —— 解析器与 TLS 检查器会同时报告地址及其地址族。
  • TLS 洞察 —— 证书 CN、SAN、颁发者、序列号、有效期窗口与到期倒计时,以及加密套件和协议版本,均直接从当前连接自动采集(无需额外握手)。
  • 多种输出模式 —— 丰富的瀑布图视图、紧凑的单行摘要,或用于脚本化的 --metrics-only
  • JSON 导出 —— 持久化完整的分步数据(包含重定向链)以便后续处理。
  • 可扩展 —— 为 DNS、TLS、计时、可视化和导出提供清晰的 Protocol 接口,便于插入自定义行为。

快速示例

GET 请求:

httptap https://httpbin.io/get

带 JSON 数据的 POST 请求:

httptap --data '{"name": "John"}' https://httpbin.io/post

Sample Output

核心特性

丰富的瀑布图可视化

借助基于 Rich 的精美终端 UI,查看 HTTP 请求各阶段的详细计时分解。

多种输出格式

  • Rich 模式(默认):带颜色和格式的精美瀑布图表格
  • 紧凑模式--compact):适合日志的单行摘要
  • 指标模式--metrics-only):用于脚本化和自动化的原始指标
  • JSON 导出--json):包含重定向链的完整请求数据

高级网络洞察

  • 带 IP 地址族检测(IPv4/IPv6)的 DNS 解析计时
  • TCP 连接建立计时
  • 带证书信息的 TLS 握手分析
  • 首字节时间(TTFB)测量
  • 响应体传输计时

重定向链支持

使用 --follow 参数跟随 HTTP 重定向,并查看链中每一步的计时分解。

下一步?

环境要求

  • Python 3.10-3.15
  • macOS、Linux 或 Windows
  • 除标准网络能力外无系统依赖

许可证

Apache License 2.0 © Sergei Ozeranskii

联系

关注作者,获取来自真实经验的洞见:

  • Telegram 频道 —— 开发、DevOps、架构与安全。真实经验与务实洞见,绝无废话。
  • GitHub —— 开源项目与贡献

致谢

构建于众多出色的库之上:

  • httpx —— 现代 HTTP 客户端
  • httpcore —— 底层 HTTP 协议实现
  • dnspython —— Python 的 DNS 工具包
  • Rich —— 精美的终端格式化