HTTPie 是什么
HTTPie 是面向人的命令行 HTTP 客户端,语法接近自然语言:方法加 URL,字段直接写成 key=value 即自动转为 JSON,请求头照写而不必拼引号。相比 curl,它默认彩色输出与格式化 JSON,适合在评估中快速验证接口行为,并把命令原样写进报告作为复现步骤。
基本信息
| 安装 | pip install httpie(或各系统包管理器) |
|---|---|
| 基本语法 | http [METHOD] URL [ITEM ...] |
| 字段写法 | key=value 字符串;key:=value 原始 JSON;key@file 从文件读取 |
| 请求头 | 以冒号结尾形式写,如 'Authorization: Bearer xxx' |
| 认证 | -a 用户名:口令(基本认证) |
| 会话 | --session=名称 保存并复用 Cookie |
典型使用场景
- 接口连通性验证:确认未授权访问、方法限制与响应结构
- 越权验证:用两个不同权限的会话对比同一接口的返回
- 复现步骤留存:命令可直接粘贴进报告,客户能照着验证
- 参数边界试探:快速替换字段值,观察校验与报错信息
- 文件上传验证:用表单字段提交测试文件,确认上传限制
验证示例
验证示例
http GET https://app.example.com/api/items 'Authorization: Bearer test-token'
http POST https://app.example.com/api/login username=audit password=@pw.txt
http --session=audit GET https://app.example.com/api/me # 复用登录态
http --session=audit PUT https://app.example.com/api/me role=admin # 越权检查
http -f POST https://app.example.com/upload file@sample.pdf # 表单上传
http --print=hH GET https://app.example.com/api/items # 只看头常用选项速查
| 选项 | 作用 | 使用提示 |
|---|---|---|
| --session=名字 | 持久化 Cookie 与头部 | 文件按凭据对待,用完清理 |
| --print=hb | 只显示头与响应体 | 报告截图更干净 |
| --verify=no | 跳过证书校验 | 仅用于自签证书测试环境 |
| -v | 显示完整请求与响应 | 写入报告时避免暴露令牌 |
| --offline | 只构造请求不发送 | 演示请求结构时使用 |
不要把口令直接写在命令行:它会留在 shell 历史、进程列表与屏幕录像里。可以用 @文件、环境变量或会话文件传递,并确保这些文件不进版本库。
HTTPie 与 curl 的取舍:批量脚本与需要精细控制底层连接时用 curl,人工验证与写报告复现步骤时 HTTPie 更省事。
写法细节:key=value 提交 JSON 字符串,key:=value 提交布尔或数字等原始类型,JSON 与表单不可混用,上传文件时加 -f 并写成 file@路径;版本上 3.x 后主命令为 http,旧版为 httpie,脚本里写清所用版本避免复现失败。