monstabravo/eagle_eyes
GitHub: monstabravo/eagle_eyes
鹰眼:快速记录网站流量,自动生成爬虫和报告。
Stars: 0 | Forks: 0
# 鹰眼 — API 分析器
**按 `Alt+R`,浏览一个网站,再按 `Alt+R`。获取其私有 API 的工作 Python 爬虫。**
[](https://github.com/monstabravo/eagle_eyes/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
[](manifest.json)
[](#system-requirements)
[-brightgreen)](#system-requirements)
## 返回内容
记录一个会话,获取一个干净的 Python 爬虫类 — 生成,而非脚手架:
```
# 运行 Naabu
class EagleEyesScraper:
def __init__(self):
self.session = requests.Session()
self.base_headers = {
"user-agent": "...",
"accept": "application/json",
}
self.session.headers.update(self.base_headers)
def get_users(self, id, **kwargs) -> Dict[str, Any]:
"""
GET https://example.com/api/users/{id}
Path / URL params:
- id (required): str - Example: 123
"""
url = f'https://example.com/api/users/{id}'
try:
params = kwargs.get("params", {})
response = self.session.get(url, params=params, timeout=30)
response.raise_for_status()
ctype = response.headers.get("content-type", "")
return response.json() if ctype.startswith("application/json") else {"text": response.text}
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return {}
def post_orders(self, *, customer_id, items, **kwargs) -> Dict[str, Any]:
"""
POST https://example.com/api/orders
JSON body params:
- customer_id (required): int - Example: 1
- items (required): list - Example: [1, 2]
"""
url = 'https://example.com/api/orders'
try:
payload = {'customer_id': customer_id, 'items': items, **kwargs}
response = self.session.post(url, json=payload, timeout=30)
response.raise_for_status()
ctype = response.headers.get("content-type", "")
return response.json() if ctype.startswith("application/json") else {"text": response.text}
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return {}
```
以及一个伴随的 `(AI).json` 文件,包含每个捕获的请求、端点模式、参数分析、响应树和 Postman 收集 — 设计用于通过一行提示直接放入 Claude / GPT:
## 下午即可审计,而非冲刺
每个具有 `` 权限的浏览器扩展都是一个合理的信任请求。因此:
- **2,000 行以下的纯 JavaScript** 涵盖 8 个文件。无打包器,无构建步骤,无 `npm install`。
- **零外部运行时依赖。** 安装时无任何内容被拉取。
- **Manifest V3,无远程代码。** 您加载的内容就是运行的内容。
在加载之前,您可以在一个下午内阅读整个内容。这就是交易。
## 与其他工具的比较
| | **鹰眼** | DevTools "复制为 cURL" | Charles / mitmproxy | Postman 记录器 |
|---|---|---|---|---|
| 安装足迹 | **一个解包的扩展** | 内置 | 系统代理 + 证书安装 | 桌面应用程序 + 插件 |
| 捕获完整的原始请求 **和** 响应体 | ✅ | 请求仅 | ✅ | ✅ |
| 自动检测路由模板 (`/users/123` → `/users/{id}`) | ✅ | ❌ | ❌ | ❌ |
| 从真实流量中推断所需参数与可选参数 | ✅ | ❌ | ❌ | ❌ |
| 生成可运行的 Python 爬虫类 | ✅ | ❌ | ❌ | ❌ |
| 导出 Postman 收集 | ✅ | ❌ | ✅ | ✅ |
| 为 LLM 消费构建 (一个大 JSON) | ✅ | ❌ | ❌ | ❌ |
| 安全嗅探 (HTTP、弱认证、SQLi 提示) | ✅ | ❌ | ❌ | ❌ |
| 提取 cookies + localStorage + sessionStorage | ✅ | ❌ | 部分提取 | ❌ |
DevTools 显示您每个请求。Charles 在监视实时流量方面很出色。Postman 组织收集。它们都没有将 60 个捕获的请求转换成一个 LLM 可以读取并从中编写工作爬虫的报告。这就是这个工具填补的空白。
## AI JSON 中的内容
```
{
"summary": {
"total_apis": 42,
"unique_endpoints": 15,
"method_distribution": { "GET": 28, "POST": 11, "DELETE": 3 },
"security_score": { "score": 72, "rating": "B — Good" }
},
"analysis": {
"endpoint_analysis": { "/api/users/{id}": { ... } },
"parameter_analysis": { "/api/users/{id}": { "url_params": {...}, "json_params": {...}, "form_params": {...} } },
"response_structures": { "JSON tree + extraction paths": ... },
"detector_analysis": { "auth": 4, "crm": 12, "financial": 2, ... },
"security_issues": [ { "severity": "high", "type": "...", "evidence": ... } ],
"recommendations": [ ... ]
},
"code_generation": {
"python_requests_snippets": [...],
"curl_commands": [...],
"complete_scraper_code": "class EagleEyesScraper: ...",
"postman_collection": {...},
"auth_info": "Bearer Token, Cookie"
},
"raw_requests": [ /* every request with full headers + body + response */ ]
}
```
伴随的 `(HU).txt` 是相同的数据,以适合人类阅读的方式扁平化 — 端点列表、参数表、安全发现,60 秒内快速浏览。
## 安装
1. 克隆此存储库
2. Chrome / Edge → `chrome://extensions` → 切换 **开发者模式**
3. 点击 **加载未打包** 并选择 `eagle_eyes/` 文件夹
4. 锁定扩展(可选,使弹出窗口更容易访问)
无需构建步骤,无需 `npm install`,无需本地二进制文件。
## 使用方法
1. 打开目标网站(最好在隔离的浏览器配置文件中)
2. 按 **`Alt+R`** 开始录制
3. 像真实用户一样驱动网站 — 登录、导航、提交表单、分页
4. 再次按 **`Alt+R`** 停止并下载两个报告
提示:
- **突出 UI 区域** — 按住 `Alt` 并拖动以标记感兴趣的区域;高亮显示与时间轴一起记录,以便您记得每个请求来自哪个屏幕。
- **自动捕获** — 每个 `fetch` / `XMLHttpRequest` 都会捕获,无需额外设置。
## 分析内容
- **端点模式提取** — `/users/123` 和 `/users/456` 会折叠到 `/users/{id}`,因此您只看到一个行,而不是 200 个。
- **参数推断** — 观察到请求中,标记字段为必需(始终存在)或可选。
- **响应结构解析** — 每个响应的 JSON 树,以及您可以复制的提取路径。
- **10 个内置 API 类别检测器** — 认证、CRM、金融、用户管理、报告、通知、文件上传、搜索、管理员、票务。
- **覆盖率指标** — 调用频率、唯一端点计数、方法分布。
- **安全嗅探(7 条规则)** — URL 中的敏感数据、纯 HTTP、缺少认证头、弱密码、CORS 配置错误、可能的 SQL 注入模式、敏感数据泄露。输出 A-F 级别,并优先修复。
## 代码生成
| 输出 | 用例 |
|---|---|
| **完整的 `EagleEyesScraper` Python 类** | 将其放入项目;每个端点生成方法,带有类型注解的参数和文档字符串 |
| **每个端点的 `requests` 片段** | 将单个端点复制到现有脚本中 |
| **`curl` 一行命令** | 交给 QA / ops,粘贴到 shell 中 |
| **Postman 2.1 收集** | 导入以进行手动探索/与团队共享 |
## 适用对象
✅ 您作为工作的一部分逆向工程内部/未记录的 API
✅ 您构建爬虫并希望跳过“DevTools 钓鱼”阶段
✅ 您将代码馈送到 LLM 并希望有一个单一的丰富 JSON 来支撑它
✅ 您审计自己的应用程序并希望快速了解客户端泄漏了什么
❌ 您需要系统范围的 MITM 代理(使用 Charles / mitmproxy)
❌ 您想要一个完全管理的服务,带有团队账户(这只是一个解包的扩展)
## 架构(所有存在的内容)
```
page (fetch / XHR)
|
v
recorder.js --> background.js --> analyzer.js (endpoints / params / response)
--> detector.js (10 category labels)
--> security-analyzer.js (7 smell checks)
--> code-generator.js (python / curl / postman)
|
v
AI JSON + Human TXT
```
它是一个 Manifest V3 服务工作者和一个注入的记录器。每个模块都是一个文件。无框架,无路由器,无状态管理库。如果您想跟踪数据流,请首先打开 `background.js`。
## 系统要求
- Chrome 或 Edge(Manifest V3)
- 无额外依赖项 — 纯 JavaScript,无编译步骤
## 关于安全的直白说明
此工具 **不会掩盖任何内容**。AI JSON 和人类 TXT 包含原始密码、令牌、cookies 和存储值。这是故意的 — 生成的爬虫需要重现确切的会话 — 但这也带来了后果:
- 在 **专用浏览器配置文件** 中运行,不要登录其他内容。
- 将输出文件视为凭证。除非您已删除机密,否则不要将它们粘贴到公共 LLM 中。
- 不要在打开其他人的账户的会话上启用它。
内置的安全嗅探仅提供信息 — 它 **不会** 从捕获的数据中删除任何内容。
## 免责声明
仅限合法的 API 逆向工程、内部系统测试和教育用途。因为此扩展声明了 `` 主机权限,在录制时它捕获了活动选项卡中的每个 fetch / XHR、cookie、存储值和认证令牌。您负责遵守目标网站的条款和适用法律。作者不对滥用承担任何责任。
## 版本历史
查看 [CHANGELOG.md](CHANGELOG.md).
## 许可证
MIT — 查看 [LICENSE](LICENSE).
标签:API 分析, Chrome 扩展, JSON 报告, LLM 集成, Postman, Python 爬虫, SOC Prime, URL抓取, 代码生成, 开发工具, 数据可视化, 数据抓取, 渗透测试工具, 自定义脚本, 逆向工具, 零依赖