m0b1u3/AssetProbe
GitHub: m0b1u3/AssetProbe
基于 Playwright 的 Web 资产发现与指纹识别工具,支持并发批量探测、动态网页渲染、自动截图和可视化报告生成。
Stars: 2 | Forks: 1
[简体中文](./README_CN.md) | English
# AssetProbe
[](https://www.npmjs.com/package/assetprobe)
[](https://www.npmjs.com/package/assetprobe)
[](https://nodejs.org)
[](LICENSE)
[](https://github.com/m0b1u3/AssetProbe)
Web 资产发现与侦查工具,支持批量处理、截图、HTML 报告生成以及 Web 应用指纹识别。
## 功能
- 🌐 **动态渲染**:由 Playwright 提供支持,可渲染重度依赖 JavaScript 的网站(SPA、React、Vue、Angular)
- 🔄 **并发处理**:使用可配置的并发数批量处理 URL(默认:5,范围:5-100)
- 📸 **截图**:捕获屏幕截图或整页截图
- 📊 **多格式报告**:自动生成 HTML 报告和 JSON 导出
- 🎯 **指纹识别**:识别 Web 应用、中间件和编程语言
## 应用场景
### 1. 资产发现与管理
- **内网扫描**:快速扫描 IP 段或域名列表以识别 Web 服务
- **资产分类**:通过网站标题快速识别系统类型
- **可视化归档**:通过截图直观记录当前网站状态
- **批量验证**:检查大量资产是否存活
### 2. 安全测试辅助
- **信息收集**:快速识别存活站点,收集标题和截图
- **端口扫描验证**:结合端口扫描结果验证 Web 服务
- **代理支持**:通过代理访问和测试不同的网络环境
- **目标筛选**:通过截图筛选高价值目标
### 3. 网站健康检查
- **批量监控**:定期检查关键网站状态
- **可用性报告**:生成展示监控结果的 HTML 报告
- **故障追踪**:统一标记“站点不可达”
**核心价值**:
- ⚡ **高效**:并发处理比顺序处理快 10-50 倍
- 👁️ **可视化**:截图 + 标题比纯文本更易于理解
- 📊 **自动化**:批量处理 + 报告生成
## 安装
### 环境要求
- **Node.js** >= 18.0.0
- **npm** 或 **yarn**
### 方式一:通过 npm 安装(推荐)
```
npm install -g assetprobe
```
安装完成后,直接使用 `assetprobe`:
```
assetprobe -u https://www.example.com
assetprobe -b urls.txt -c 10
```
### 方式二:从源码安装
```
# 克隆项目
git clone https://github.com/m0b1u3/AssetProbe.git
cd AssetProbe
# 安装依赖 (Chromium 浏览器将自动下载)
npm install
# 运行
npm start -- -u https://www.example.com
# 或者
node assetprobe.js -u https://www.example.com
```
**注意**:首次运行时将自动下载 Chromium 浏览器(约 300MB)。
## 使用方法
### 基本用法
```
# 查看帮助
assetprobe --help
# 访问单个网站
assetprobe -u https://www.example.com
# 使用代理访问
assetprobe -u https://www.example.com -p 127.0.0.1:7890
# 截图
assetprobe -u https://www.example.com -s
# 全页截图
assetprobe -u https://www.example.com -s -f
# 导出 JSON 到控制台
assetprobe -u https://www.example.com -j
# 保存 JSON 到文件
assetprobe -u https://www.example.com -j -o results.json
```
### 批量处理
```
# 批量处理 URL 列表
assetprobe -b urls.txt
# 批量处理并截图 (自动生成 HTML 报告)
assetprobe -b urls.txt -s
# 批量处理并导出 JSON
assetprobe -b urls.txt -j
# 保存 JSON 到文件
assetprobe -b urls.txt -j -o results.json
# 调整并发数 (默认 5, 范围 5-100)
assetprobe -b urls.txt -c 20
```
**URL 列表文件格式**:
```
https://www.example.com
https://www.example.org
# 这是注释, 将被忽略
https://192.168.1.1:8080
```
## 报告导出
### HTML 报告
批量处理后,将自动生成包含以下内容的 HTML 报告:
- 📈 统计概览(总数、成功、失败、成功率)
- 📋 结果列表(URL、标题、状态码、Web 应用指纹)
- 🔍 搜索和过滤
- 🖼️ 截图预览(缩略图,点击放大)
- 🎨 现代简约的白色主题,带有平滑动画
### JSON 报告
```
# 单个 URL - 输出到控制台
assetprobe -u https://example.com -j
# 单个 URL - 保存到文件
assetprobe -u https://example.com -j -o results.json
# 批量 - 输出到控制台
assetprobe -b urls.txt -j
```
JSON 报告包含:
- 时间戳
- 结果:URL、状态码、标题
- Web 应用指纹(厂商、产品、置信度)
- 中间件检测
- 编程语言检测
- 失败请求的错误码
## 选项
| 选项 | 描述 | 默认值 |
|--------|-------------|---------|
| `-u, --url ` | 要访问的网站地址 | - |
| `-p, --proxy ` | 代理服务器(格式:`IP:PORT` 或 `http://IP:PORT`) | - |
| `-b, --batch ` | 用于批量处理的 URL 列表文件 | - |
| `-c, --concurrency ` | 并发处理数量 | 5 |
| `-s, --screenshot [file]` | 保存网站截图 | - |
| `-f, --full` | 截取完整页面 | - |
| `-j, --json` | 向控制台输出 JSON | - |
| `-o, --output ` | 将 JSON 保存到文件 | - |
| `-h, --help` | 显示帮助信息 | - |
## 截图说明
### 单 URL 模式
- 自动按域名/IP 保存
- 文件名:`screenshot_timestamp.png`
- 支持自定义文件名
### 批量模式
- 时间戳文件夹:`screenshots/batch/timestamp/`
- 文件名:`domain.png`
- 自动生成 HTML 报告
### 文件夹结构
```
screenshots/
├── www.example.com/ # Single mode
│ └── screenshot_2025-12-31.png
└── batch/ # Batch mode
└── 2025-12-31T10-00-00/
├── report.html # HTML report
├── results.json # JSON report
├── www.example.com.png
└── www.example.org.png
```
## 性能优化
- **默认并发数**:5(性能与稳定性的平衡)
- **可调范围**:5-100
- **批量模式超时**:30 秒
- **批量模式等待**:500ms
**性能对比:**
```
Sequential: 100 URL × 2 sec = 200 sec (3.3 min)
Concurrent 5: 100 URL ÷ 5 × 2 sec = 40 sec
Concurrent 20: 100 URL ÷ 20 × 2 sec = 10 sec
Concurrent 50: 100 URL ÷ 50 × 2 sec = 4 sec
```
## 状态码参考
| 状态码 | 含义 | 示例 |
|-------------|---------|---------|
| 200-299 | 成功 | 200 ✓ |
| 300-399 | 重定向 | 301 ↪ |
| 400-499 | 客户端错误 | 404 ⚠️ |
| 500-599 | 服务器错误 | 500 ❌ |
| 连接失败 | 站点不可达 | 站点不可达 ✗ |
## 开发
### NPM 脚本
```
npm start # Run main program
npm run install-browser # Install browser manually
```
### 全局安装(开发模式)
如果您想从本地源码进行全局安装:
```
# 在项目根目录下
npm link
# 或者使用 npm 全局安装
npm install -g ./
# 测试
assetprobe --help
```
### 卸载
```
# 卸载全局安装
npm uninstall -g assetprobe
```
## 项目结构
```
assetprobe/
├── assetprobe.js # Main program
├── package.json # Project config
├── README.md # Documentation (English)
├── README_CN.md # Documentation (Chinese)
├── LICENSE # License
├── .npmignore # npm ignore rules
├── webapp-fingerprints.json # Web app fingerprint database
├── middleware-fingerprints.json # Middleware fingerprint database
├── language-fingerprints.json # Programming language fingerprint database
└── screenshots/ # Screenshot directory (auto-created)
```
## 注意事项
1. **首次运行**:`npm install` 将自动下载 Chromium(约 300MB)
2. **代理地址**:可以省略 `http://` 前缀,程序会自动处理
3. **超时**:单 URL 模式 60 秒,批量模式 30 秒
4. **防爬机制**:部分网站可能具有防爬机制,请合理设置请求频率
5. **写入权限**:截图保存在当前目录,请确保具有写入权限
6. **并发数**:建议从低并发开始并逐渐增加(5 → 10 → 20)
## 许可证
[ISC 许可证](LICENSE)
## 作者
m0b1u3
## 致谢
- [Playwright](https://playwright.dev/) - 现代化的浏览器自动化工具
- Web 应用指纹数据库整理自开源项目
**由 m0b1u3 用 ❤️ 制作**
标签:C2日志可视化, DNS枚举, GNU通用公共许可证, HTML报告, JavaScript渲染, MITM代理, Node.js, NPM包, OSV-Scalibr, Playwright, SPA渲染, TGT, Web指纹, Web资产, 中间件识别, 二进制发布, 代理支持, 动态网页渲染, 告警, 安全辅助, 实时处理, 密码管理, 开源工具, 批量查询, 指纹识别, 攻防演练, 漏洞扫描前置, 特征检测, 白帽工具, 目标筛选, 端口验证, 网站监控, 网络安全, 网络安全工具, 网页截图, 自动化截图, 自定义脚本, 资产探测, 资产梳理, 隐私保护, 黑盒测试