Burp Extender API快速索引:如何在burp-api-drops的40+个接口中10秒找到正确的API
【免费下载链接】burp-api-dropsburp插件开发指南项目地址: https://gitcode.com/gh_mirrors/bu/burp-api-drops
burp-api-drops 是一个 Burp Suite 插件开发教程项目,核心是一份覆盖 40 多个 Burp Extender 接口的API 快速索引表:把每个接口关联到对应的课程章节和示例代码,让你只需输入需求关键词,就能在 10 秒内定位到正确的 Burp API。
一、burp-api-drops 是什么?
一句话概括:Burp 插件开发指南 + Burp Extender API 速查手册。
仓库结构非常清晰,找资料前建议先认识这三个位置:
| 位置 | 内容 |
|---|---|
src/burp/ | 12 个课程示例代码(Lession2.java~Lession11.java)及插件入口 BurpExtender.java |
src/custom/ | 加密/编码工具类(AES、MD5、Base64、Unicode 等),插件开发常用的"百宝箱" |
pom.xml | Maven 工程配置,已内置burp-extender-api1.7.22 依赖,拿来即可编译 |
Burp 插件的本质就是扩展 Burp 功能:修改请求/响应包、添加自定义 Tab 界面、开发自定义扫描插件、访问 Proxy 历史记录等。加载方式主要有两种:从 BApp Store 加载安装,或加载外部插件文件。
📌 需要源码时可以克隆仓库:git clone https://gitcode.com/gh_mirrors/bu/burp-api-drops
二、10秒定位正确API的三步法
这是整个项目最实用的工作方法,记住它就能摆脱"翻 API 文档找半天"的窘境:
第 1 步:把需求转成一个关键词。比如"我要获取请求包里某个 header 的值",关键词就是header;"要监听代理流量",关键词是proxy或listener。
第 2 步:在 API 文档的接口列表中搜索关键词。Burp 自带的 Extender API 文档左侧就列出了全部接口,直接用文档搜索框过滤:
第 3 步:回到 burp-api-drops 的 API 快速索引表反查。在 README.md 文件顶部的索引表中,找到接口名对应的"相关课程"和"示例代码",直接打开对应 Lession 源码看实现,比看抽象文档快得多。
小技巧:如果接口在索引表中没有课程,说明它较冷门,直接看接口上的 Javadoc 注释即可;有课程标注的接口,跟着示例代码走是最快的路径。
三、40+个Burp Extender接口分类速查表
原索引表按字母序排列,初学容易看花眼。这里按使用场景重新归类,10 秒找到该用哪组接口:
| 分类 | 常用接口 | 典型场景 |
|---|---|---|
| 🚪 插件入口 | IBurpExtender、IBurpExtenderCallbacks | 插件必备入口,几乎所有能力都从 callbacks 出发 |
| 📦 数据包处理 | IExtensionHelpers、IHttpRequestResponse、IRequestInfo、IResponseInfo、IParameter、IHttpService | 解析、增删改 HTTP 请求/响应包 |
| 👂 事件监听 | IHttpListener、IProxyListener、IScannerListener、IExtensionStateListener | 监听流量、扫描事件、插件启停 |
| 🎨 UI 扩展 | ITab、IContextMenuFactory、IMessageEditorTabFactory、IMenuItemHandler、ITextEditor | 自定义 Tab 页、右键菜单、消息编辑器页签 |
| 🔍 自定义扫描 | IScannerCheck、IScanIssue、IScannerInsertionPointProvider、IBurpCollaboratorClientContext | 编写漏洞扫描插件、与 Burp DNSlog 交互 |
| 💥 Intruder 载荷 | IIntruderPayloadGeneratorFactory、IIntruderPayloadProcessor、IIntruderAttack | 自定义爆破 Payload 与处理器 |
| 🔑 会话处理 | ISessionHandlingAction、IInterceptedProxyMessage | 扫描过程中自动维护 Session Token |
| 💾 配置持久化 | ITempFile、callbacks.saveExtensionSetting() | 插件配置保存与读取 |
Burp 插件的核心调用逻辑
定位接口之前,先理解一张图——【Burp 主程序】与【插件程序】的三步调用关系:插件通过registerExtenderCallbacks注册监听器 → 主程序在组件产生流量时主动通知监听器 → 插件在回调函数(如processHttpMessage)中执行业务逻辑。这也是为什么"需要被 Burp 主动调用的对象(Listener、Factory、Check 等)必须显式注册":
而所有 API 操作最终都围绕 Burp 的核心对象HTTP 数据包展开,一张思维导图理清IHttpRequestResponse的结构:
四、课程章节与示例代码对照表
索引表里"相关课程"一列指向的就是下面这套示例代码,按章节顺序学习即可:
| 课程章节 | 核心 API | 示例代码 |
|---|---|---|
| 二、环境准备与 Hello World | IBurpExtender、IBurpExtenderCallbacks | src/burp/Lession2.java |
| 四、学习思路和核心逻辑 | IHttpListener | src/burp/Lession4.java |
| 五、HTTP 数据包的处理 | IHttpRequestResponse、IExtensionHelpers | src/burp/Lession5.java |
| 六、访问 Burp 关键数据 | IContextMenuFactory、IContextMenuInvocation | src/burp/Lession6.java |
| 七、Session 处理 | ISessionHandlingAction | src/burp/Lession7.java、src/burp/Lession7FromPortSwigger.java |
| 八、编辑器 Tab | IMessageEditorTab、IMessageEditorTabFactory | src/burp/Lession8.java |
| 九、自定义 UI 界面 | ITab、IMessageEditorController | src/burp/Lession9.java、src/burp/GUI.java |
| 十、自定义扫描插件 | IScannerCheck、IScannerInsertionPoint | src/burp/Lession10.java、src/burp/Lession10CustomInsertpoint.java |
| 十一、自定义 Intruder Payloads | IIntruderPayloadGeneratorFactory、IIntruderPayloadProcessor | src/burp/Lession11.java |
每个 Lession 都是一个可直接替换为 BurpExtender.java 运行的完整插件,建议"先看索引表定位接口 → 再读对应 Lession 源码",效率最高。
五、查API时最容易踩的3个坑
✅坑 1:别用已废弃的方法。索引表对应课程里的代码若出现getParameters()、getHeaders()(直接作用于请求包的方法),文档已标注@Deprecated,应改用IExtensionHelpers.analyzeRequest()/analyzeResponse()先解析成IRequestInfo/IResponseInfo再取信息(见src/burp/Lession5.java)。
✅坑 2:buildRequest()是"替换"不是"追加"。自定义扫描中insertionPoint.buildRequest(payload)会用 payload 替换原始值;想在原值后追加需自己拼接getBaseValue() + payload。
✅坑 3:500 状态码不触发主动扫描。响应状态为 500 时,Burp 默认不会调用doActiveScan(),写扫描插件时要考虑这种漏报情况;另外插件里千万不要用System.exit(0),否则会直接导致整个 Burp 退出。
六、验证与调试:确认你调对了API
找到了正确的 API 之后,验证效果离不开两个调试利器:
1. 用 Logger++ 查看修改后的数据包。在 Logger++ 的 Options 中勾选Extender,即可实时观察插件对流量做了什么修改:
2. 用 Java 断点动态调试。用 IDEA 加载工程,Burp 以远程调试参数启动即可下断点——这也是项目选择 Java 而非 Python 开发插件的三大理由之一(兼容性、可调试、可打包成独立 Jar)。
总结一下:打开 README.md 顶部的 API 快速索引表 → 按场景分类表锁定接口 → 在src/burp/下找到对应 Lession 看实现,三步走完,10 秒找到正确的 Burp API 并不夸张。祝开发顺利 🚀
【免费下载链接】burp-api-dropsburp插件开发指南项目地址: https://gitcode.com/gh_mirrors/bu/burp-api-drops
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考