OoO7ce/AssetProbe

GitHub: OoO7ce/AssetProbe

基于Playwright的Web资产发现与指纹识别工具,支持动态渲染、并发探测、自动截图和可视化报告生成。

Stars: 2 | Forks: 1

[简体中文](./README_CN.md) | English # AssetProbe [![npm version](https://img.shields.io/npm/v/assetprobe)](https://www.npmjs.com/package/assetprobe) [![npm downloads](https://img.shields.io/npm/dm/assetprobe)](https://www.npmjs.com/package/assetprobe) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org) [![License](https://img.shields.io/npm/l/assetprobe)](LICENSE) [![GitHub stars](https://img.shields.io/github/stars/OoO7ce/AssetProbe?style=social)](https://github.com/OoO7ce/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** ### 方式 1:通过 npm 安装(推荐) ``` npm install -g assetprobe ``` 安装完成后,直接使用 `assetprobe`: ``` assetprobe -u https://www.example.com assetprobe -b urls.txt -c 10 ``` ### 方式 2:从源码安装 ``` # 克隆项目 git clone https://github.com/OoO7ce/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 列表文件格式 (urls.txt)**: ``` 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. **超时时间**:单次模式 60 秒,批量模式 30 秒 4. **反爬虫**:部分网站可能具有反爬虫机制,请合理设置请求频率 5. **写入权限**:截图保存在当前目录,请确保具有写入权限 6. **并发数**:建议从低并发开始逐步增加(5 → 10 → 20) ## 许可证 [ISC License](LICENSE) ## 作者 Ark ## 致谢 - [Playwright](https://playwright.dev/) - 现代化的浏览器自动化工具 - Web 应用指纹数据库整理自开源项目 **Made with ❤️ by Ark**
标签:C2日志可视化, GNU通用公共许可证, HTML报告, MITM代理, Node.js, Playwright, SPA渲染, Web安全, Web应用指纹, 中间件识别, 动态渲染, 密码管理, 批量探测, 指纹识别, 暗色界面, 特征检测, 站点扫描, 端口扫描验证, 网络安全, 自动化截图, 自定义脚本, 蓝队分析, 资产测绘, 隐私保护