BurpSuite API 测试插件
这是一个为BurpSuite设计的API测试插件,可以自动解析OpenAPI/Swagger文档并测试其中的API接口。
🌟 功能特性
- 🔍 智能解析: 支持OpenAPI 2.0/3.0和Swagger JSON/YAML格式
- 🚀 自动测试: 自动发送GET和POST请求(过滤PUT和DELETE请求)
- 📊 结果展示: 以表格形式展示测试结果,支持排序功能
- 🔗 BurpSuite集成: 测试结果自动记录到BurpSuite历史记录
- 🖱️ 右键菜单: 支持Send to Repeater和Copy URL功能
- ⏹️ 停止控制: 可随时停止正在进行的测试
- 📈 进度显示: 准确的进度条和状态显示
- 📋 批量请求头: 支持输入自定义请求头,可选择性启用
- 🎯 参数生成: 自动生成示例参数值进行测试
- ⚡ 并发控制: 合理控制请求频率,避免对目标服务器造成压力
📦 安装方法
方法一:使用预编译JAR包
- 下载
target/api-tester-1.0.0.jar
文件 - 在BurpSuite中,进入
Extender
->Extensions
- 点击
Add
按钮 - 选择
Java
作为扩展类型 - 选择下载的JAR文件
- 点击
Next
完成安装
方法二:从源码编译
Windows用户:
build.bat
Linux/Mac用户:
chmod +x build.sh
./build.sh
手动构建:
mvn clean package
🚀 使用方法
界面布局
输入字段说明
API文档地址
- 用途: 用于获取和解析OpenAPI/Swagger文档
- 格式: 完整的URL地址
- 示例:
https://xxx.com/api.json
https://api.example.com/swagger.json
https://petstore.swagger.io/v2/swagger.json
请求Host地址
- 用途: 实际发送API请求时使用的协议和Host
- 格式: 协议 + 主机名 + 端口(可选)
- 示例:
https://xxx.com
https://api.example.com
http://localhost:8080
批量请求头
- 用途: 为所有API请求添加自定义HTTP请求头
- 格式: 每行一个请求头,格式为
Header-Name: Header-Value
- 示例:
User-Agent: PostmanRuntime/7.46.1 Authorization: YWRtaW4= Postman-Token: a9ca212d-e1ae-4291-8ba2-95d9db439a15 X-API-Key: your-api-key-here Content-Type: application/json
- 使用控制: 通过勾选框控制是否启用自定义请求头
- 优先级: 自定义请求头会覆盖默认请求头(除Host头外)
基本使用步骤
- 安装插件后,在BurpSuite中找到
API 测试工具
标签页 - 在
API文档地址
输入框中输入OpenAPI/Swagger文档的完整URL - 在
请求Host地址
输入框中输入实际要测试的API服务器地址 - (可选) 在
批量请求头
区域输入需要的自定义请求头 - (可选) 勾选或取消勾选
使用上述请求头
来控制是否启用自定义请求头 - 点击
开始测试
按钮 - 插件会自动解析API文档并开始测试
- 测试结果会实时显示在下方的表格中,包含自定义请求头信息
- 可随时点击
停止测试
按钮终止测试 - 测试完成后,所有请求都会记录到BurpSuite的历史记录中
📊 工作流程
解析阶段
API文档地址: https://xxx.com/api.json
↓
插件从此地址下载并解析OpenAPI文档
↓
获取所有API接口的路径信息,如: /api-v2/account/list
请求阶段
解析得到的路径: /api-v2/account/list
请求Host地址: https://xxx.com
↓
组合成实际请求URL: https://xxx.com/api-v2/account/list
↓
发送实际的API请求
📋 功能详解
批量请求头功能
功能介绍
批量请求头功能允许您为所有API请求添加自定义的HTTP请求头,这对于需要认证、特殊User-Agent或其他自定义头的API测试非常有用。
使用方法
- 输入请求头: 在"批量请求头"文本区域中,每行输入一个请求头
- 格式要求: 每行格式为
Header-Name: Header-Value
- 启用控制: 勾选"使用上述请求头"复选框来启用自定义请求头
- 测试应用: 启用后,所有API测试请求都会携带这些请求头
示例场景
API认证:
Authorization: Bearer your-jwt-token
X-API-Key: your-api-key-12345
模拟特定客户端:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
X-Requested-With: XMLHttpRequest
Referer: https://example.com
调试和追踪:
X-Debug: true
X-Trace-ID: test-session-001
X-Request-Source: burp-api-tester
注意事项
- Host头保护: 系统会自动忽略自定义的Host头,避免请求错误
- 优先级: 自定义请求头会覆盖默认的User-Agent和Accept头
- 实时切换: 可以随时勾选/取消勾选来启用/禁用自定义请求头
- 格式检查: 系统会自动过滤空行和格式不正确的行
支持的API文档格式
- OpenAPI 3.0: JSON和YAML格式
- OpenAPI 2.0 (Swagger): JSON和YAML格式
- 自动检测文档格式并使用相应的解析器
支持的HTTP方法
- ✅ GET: 自动测试,生成查询参数
- ✅ POST: 自动测试,生成请求体和参数
- ❌ PUT: 跳过测试(避免修改数据)
- ❌ DELETE: 跳过测试(避免删除数据)
- ❌ PATCH: 跳过测试(避免修改数据)
参数生成规则
路径参数(Path Parameters):
- 字符串类型:生成 "test"
- 数字类型:生成 1
- 布尔类型:生成 true
查询参数(Query Parameters):
- 根据参数类型自动生成示例值
- 支持字符串、数字、布尔值、数组
请求体(Request Body):
- 自动解析JSON Schema
- 生成符合结构的示例数据
- 支持嵌套对象和数组
📊 结果展示功能
表格列说明
列名 | 说明 |
---|---|
URL | 完整的请求URL(包含路径参数) |
请求方式 | HTTP方法(GET/POST) |
请求参数 | 自定义请求头、路径参数、查询参数和请求体的详情 |
状态码 | HTTP响应状态码 |
响应时间(ms) | 请求响应时间,单位毫秒 |
响应结果 | 服务器返回的响应内容(截取前200字符) |
表格排序功能
排序规则
- 状态码列: 数字排序(200 < 404 < 500)
- 响应时间列: 数字排序(5ms < 10ms < 100ms)
- 其他列: 字符串排序
使用方法
- 点击列头: 点击任意列头进行排序
- 升序/降序: 再次点击同一列头切换排序方向
- 多列排序: 按住Ctrl键点击多个列头
右键菜单功能
选项 | 功能 | 说明 |
---|---|---|
Send to Repeater | 发送到Repeater | 构建完整HTTP请求并发送到Repeater模块 |
Copy URL | 复制URL | 复制选中行的完整URL到系统剪贴板 |
使用方法
- 在测试结果表格中选择任意行
- 右键点击选中行
- 选择相应的菜单项
自动构建请求示例
GET请求:
GET /api-v2/users HTTP/1.1
Host: api.example.com
User-Agent: BurpSuite-API-Tester/1.0
Accept: application/json, */*
POST请求:
POST /api-v2/users HTTP/1.1
Host: api.example.com
User-Agent: BurpSuite-API-Tester/1.0
Accept: application/json, */*
Content-Type: application/json
Content-Length: 45
{"test":"value","name":"example","id":123}
状态码含义
200-299
: 成功响应400-499
: 客户端错误(参数问题、认证问题等)500-599
: 服务器错误-1
: 网络错误或连接失败
🎯 使用场景
企业开发环境
- 文档服务器:
https://docs.company.com/api.json
- 测试环境:
https://test-api.company.com
- 生产环境:
https://api.company.com
本地开发测试
- 文档来源:
https://api.example.com/swagger.json
- 本地服务:
http://localhost:3000
- 测试不同版本:
http://localhost:8080
跨环境测试
- 使用线上文档结构
- 测试不同环境的API实现
- 验证API兼容性
📖 示例
示例API文档地址
公开测试API:
- Swagger Petstore:
http://petstore.swagger.io/v2/swagger.json
- JSONPlaceholder:
https://jsonplaceholder.typicode.com/
- ReqRes:
https://reqres.in/
常见路径格式:
/api-docs
- Spring Boot默认路径/swagger.json
- Swagger JSON格式/swagger.yaml
- Swagger YAML格式/v2/api-docs
- Swagger 2.0格式/v3/api-docs
- OpenAPI 3.0格式/openapi.json
- OpenAPI JSON格式
使用示例
示例1: 标准情况
API文档地址: https://api.example.com/swagger.json
请求Host地址: https://api.example.com
解析得到路径: /v1/users
最终请求URL: https://api.example.com/v1/users
示例2: 不同环境
API文档地址: https://api-docs.example.com/swagger.json (文档服务器)
请求Host地址: https://api-prod.example.com (生产环境API)
解析得到路径: /v1/users
最终请求URL: https://api-prod.example.com/v1/users
示例3: 本地开发
API文档地址: https://api.example.com/swagger.json (线上文档)
请求Host地址: http://localhost:8080 (本地开发)
解析得到路径: /v1/users
最终请求URL: http://localhost:8080/v1/users
🔧 高级配置
批量请求头配置
插件提供了图形化的批量请求头配置功能,无需修改代码:
通过界面配置:
- 在"批量请求头"文本区域输入所需的请求头
- 勾选"使用上述请求头"复选框
- 开始测试时会自动应用这些请求头
常用请求头模板:
# 基础认证
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
X-API-Key: your-api-key-here
# 内容类型
Content-Type: application/json
Accept: application/json
# 用户代理
User-Agent: CustomClient/1.0
# 调试头
X-Debug: true
X-Environment: testing
修改请求间隔
在 ApiTesterPanel.java
中修改:
Thread.sleep(500); // 改为你需要的间隔时间(毫秒)
代码级自定义请求头(高级用户)
在 ApiRequester.java
中硬编码添加:
connection.setRequestProperty("Authorization", "Bearer your-token");
connection.setRequestProperty("X-API-Key", "your-api-key");
添加代理支持
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
🛠️ 开发信息
技术栈
- 开发语言: Java 11
- 构建工具: Maven
- 主要依赖:
- BurpSuite Extender API
- Jackson (JSON/YAML处理)
- Swagger Parser
- Apache HttpClient
源码结构
src/main/java/burp/
├── BurpExtender.java # 插件入口
├── ApiTesterPanel.java # 主界面
├── OpenApiParser.java # API文档解析器
├── ApiRequester.java # HTTP请求发送器
├── ApiEndpoint.java # API接口数据模型
└── ApiTestResult.java # 测试结果数据模型
编译要求
- Java 11+
- Maven 3.6+
- BurpSuite Professional
⚠️ 注意事项
安全注意事项
- 生产环境警告: 插件会发送真实的HTTP请求,请勿在生产环境使用
- 数据安全: 测试数据可能被发送到目标服务器,注意敏感信息
- 频率控制: 插件已内置请求间隔,避免对服务器造成压力
- 权限检查: 确保有权限测试目标API接口
使用建议
- 请确保目标API服务器允许自动化测试
- 插件会生成示例数据进行测试,请注意对生产环境的影响
- 建议在测试环境中使用,避免对生产数据造成影响
- 插件会控制请求频率(每个请求间隔500ms),避免对服务器造成过大压力
🔍 常见问题排查
1. 插件加载失败
- 检查Java版本(需要Java 11+)
- 查看BurpSuite错误标签页的详细错误信息
- 确保JAR文件完整且未损坏
2. API文档解析失败
无法解析OpenAPI文档
解决方法:
- 检查URL是否正确可访问
- 确认文档格式为有效的JSON或YAML
- 检查网络连接和防火墙设置
3. 接口测试失败
连接超时 / 网络错误
解决方法:
- 检查目标服务器是否在线
- 确认API接口地址正确
- 检查是否需要认证或特殊请求头
4. 部分接口未测试
- 插件只测试GET和POST方法
- 检查API文档中是否包含这些方法
- 某些接口可能需要特殊参数或认证
5. 表格排序问题
- 确保选择正确的行进行右键操作
- 排序后的右键菜单功能会自动处理行索引转换
6. 进度条显示问题
- 进度条基于实际测试的接口数量(GET/POST)
- 跳过的接口(PUT/DELETE/PATCH)不计入进度
7. Logger记录问题
- 所有插件发送的请求都会自动记录到BurpSuite的HTTP History中
- 如果没有看到记录,请检查BurpSuite的Logger设置
- 请求也会同时记录到Site Map中
🐛 调试和技术支持
启用详细日志
在BurpSuite的 Extensions
-> Errors
标签页可以查看详细错误信息。
技术支持
如遇到问题,请提供以下信息:
- BurpSuite版本
- Java版本
- 错误信息截图
- API文档示例URL(如果可公开)
📄 许可证
本项目采用Apache License 2.0许可证。
🤝 贡献
欢迎提交Issue和Pull Request来改进这个插件!
📁 文件信息
- 插件文件:
target/api-tester-1.0.0.jar
- 文件大小: \~12.5 MB
- Java要求: Java 11+
- 兼容性: BurpSuite Professional
- 最新功能: 批量请求头支持
🎉 最新更新 - 批量请求头功能 + Logger记录修复
✨ 新增功能
- 📋 批量请求头输入: 支持在界面中输入多行自定义请求头
- ☑️ 可选启用: 通过勾选框控制是否使用自定义请求头
- 🔄 实时切换: 可以随时启用或禁用自定义请求头
- 🛡️ 智能保护: 自动过滤Host头,避免请求错误
- 📊 完整记录: 自定义请求头会显示在测试结果中
🔧 修复内容
- 📝 Logger记录: 修复了请求没有记录到BurpSuite Logger中的问题
- 🔄 API优化: 使用BurpSuite的
makeHttpRequest
API发送请求,确保自动记录 - 📊 双重记录: 请求现在同时记录到Site Map和HTTP History中
🎯 使用场景
- API认证: 添加Authorization、X-API-Key等认证头
- 客户端模拟: 自定义User-Agent、Referer等头
- 调试追踪: 添加X-Debug、X-Trace-ID等调试头
- 环境标识: 添加X-Environment等环境标识头
现在您可以享受完整的API测试功能,包括智能解析、表格排序、右键菜单、进度控制、批量请求头等所有特性!