Charles修改Header参数实战指南:从抓包到Mock测试全流程

1次阅读
没有评论

共计 1447 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

背景痛点

在 API 开发和测试过程中,经常需要动态修改请求头(Header)参数,比如:

  • 切换不同环境的鉴权 Token(如测试环境与生产环境)
  • 模拟不同设备或版本的请求(通过修改 User-Agent 或 API 版本头)
  • 调试签名校验逻辑(需要修改 Authorization 或自定义签名头)

直接修改代码或配置文件虽然可行,但效率低下且容易出错。Charles 作为一款强大的抓包工具,提供了动态修改 Header 的能力,极大提升了调试效率。

工具对比

工具 Header 修改优势 局限性
Charles 无需代码、可视化操作、支持条件断点 无法保存修改模板
Postman 可保存请求模板、环境变量管理完善 只能修改发送前的 Header
BurpSuite 功能最强大、支持自动化 学习成本高、适合安全测试

核心操作

1. 启用 Breakpoints 功能

  1. 打开 Charles,确保已开始抓包(Proxy > Recording Settings)
  2. 菜单栏选择 Proxy > Breakpoint Settings
  3. 点击 Enable Breakpoints 开启全局断点
  4. 在下方列表中添加需要拦截的 URL(支持通配符 *)

Charles 修改 Header 参数实战指南:从抓包到 Mock 测试全流程

2. 修改 Header 参数

当请求命中断点时:

  1. 在弹出的 Edit Request 窗口中选择 Headers 标签
  2. 修改或添加 Header 键值对(例如添加 X-API-Version: 2.0)
  3. 勾选 Conditional Breakpoint 可以设置触发条件
  4. 点击 Execute 继续请求

代码级示例

原始请求报文

GET /api/user HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer old_token

修改后报文

GET /api/user HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer new_token
X-Debug-Mode: true  # ← 新增的 Header

避坑指南

签名校验问题

当修改以下 Header 时需特别注意:
– Authorization
– X-Signature
– Date

解决方案 :
1. 先通过 Charles 获取原始签名
2. 使用相同算法重新生成签名
3. 同步更新签名 Header

常见错误

  • 413 错误 :检查是否意外添加了大体积 Header
  • 400 错误 :确认 Header 名称是否符合 API 规范(大小写敏感)

高阶技巧

Map Local 批量修改

  1. 准备包含目标 Header 的本地 JSON 文件
  2. 右键请求 > Map Local > 选择文件
  3. 勾选 Preserve headers from original request

External Proxy 自动化

通过编写脚本(如 Python)实现:

from mitmproxy import http

def request(flow: http.HTTPFlow):
    flow.request.headers["X-Custom-Header"] = "auto_injected"

修改效果验证 checklist

  • [] 修改后的 Header 出现在实际请求中
  • [] 接口返回预期状态码(如 200)
  • [] 签名校验通过(如有)
  • [] 响应内容符合修改后的预期
  • [] 无性能下降或额外延迟

结语

通过 Charles 修改 Header 参数,开发者可以快速验证不同场景下的接口行为。建议结合 Breakpoints 的条件过滤和 Map Local 功能,构建可复用的测试方案。遇到签名问题时,推荐先使用 Charles 观察正常请求的 Header 组合,再逐步调整修改策略。

正文完
 0
评论(没有评论)