无公开文档情况下如何获取公共API的全部endpoint端点
无公开文档情况下获取公共API全量端点的可行方案
没有100%能获取到所有端点的方法,但可以通过以下几种常规手段尽可能覆盖所有对外暴露的可用端点:
路径模糊测试
- 使用通用API路径字典对主入口URL进行遍历测试,注意控制请求速率避免触发服务端的IP封禁规则。
- 优先测试通用调试/文档路径:
/swagger,/docs,/openapi.json,/v1/api-docs,/graphql,/health等,大量后端会遗漏关闭开发环境的接口文档入口,只要能访问到以上任意路径,基本可以直接导出全量端点定义。
注意:对未授权的公共API进行爆破测试可能违反服务提供方的用户使用协议,操作前请确认相关行为符合合规要求。
关联业务端资源提取
- 如果该API服务对应有官方Web、App、小程序等前端产品,可以抓包正常使用全量功能过程中的所有请求,直接收集到官方客户端实际调用的所有可用端点。
- 爬取对应Web端的压缩JS代码,通过正则匹配提取代码中硬编码的API路径,绝大多数前端混淆方案不会完全加密API路径明文,可批量提取到大量有效端点。
规则推导枚举
- 如果已经通过上述方法拿到少量有效端点,可以结合RESTful API的通用命名规则推导同业务域的其他端点,比如拿到
/api/v1/order/list后,可以尝试枚举/api/v1/order/detail,/api/v1/order/create,/api/v1/order/delete等同业务路径。 - 优先枚举用户、商品、订单、文件、权限等通用业务模块的常见命名,可覆盖大部分常规业务端点。
以上方法仅能获取服务端对外暴露的公开端点,需要鉴权或者未对外发布的私有端点无法通过上述手段探测到。
内容的提问来源于stack exchange,提问作者Sowam
相关产品推荐
相关产品推荐

