cyberspacesec/snir-skills

GitHub: cyberspacesec/snir-skills

基于 Chrome DevTools Protocol 的网页截图与情报收集工具,支持 CLI、Go SDK、HTTP API 及 AI Agent 等多种集成方式。

Stars: 0 | Forks: 1

# snir — Web 截图与情报收集器

基于 Chrome DevTools Protocol 的截图工具,支持多模态集成

Release Go Version License CI

## 集成方式 ### 1. 🤖 SKILLS(AI Agent 集成)— 推荐 SKILLS 提供渐进式披露文档,AI Agent 可以利用它自主安装和操作 snir,而无需任何前置的 Go 知识。 **AI Agent 一键安装:** ``` # 自动检测平台并安装最新版本 LATEST=$(curl -s https://api.github.com/repos/cyberspacesec/snir-skills/releases/latest | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') OS=$(uname -s | sed 's/Linux/Linux/;s/Darwin/Darwin/;s/FreeBSD/Freebsd/;s/OpenBSD/Openbsd/;s/NetBSD/Netbsd/') ARCH=$(uname -m | sed 's/x86_64/x86_64/;s/aarch64/arm64/;s/arm64/arm64/') curl -L -o snir.tar.gz "https://github.com/cyberspacesec/snir-skills/releases/download/${LATEST}/snir-skills_${OS}_${ARCH}.tar.gz" tar xzf snir.tar.gz snir && chmod +x snir && sudo mv snir /usr/local/bin/ snir version ``` 📖 **完整的 SKILLS 文档:** [`docs/superpowers/SKILLS.md`](docs/superpowers/SKILLS.md) 带有渐进式披露的逐命令文档(快速入门 → 常用选项 → 高级 → 完整参考): | 命令 | 文档 | |---------|----------| | `scan` | [`scan.md`](docs/superpowers/scan.md) | | `api` | [`api.md`](docs/superpowers/api.md) | | `provider` | [`provider.md`](docs/superpowers/provider.md) | | `report` | [`report.md`](docs/superpowers/report.md) | | `webserve` | [`webserve.md`](docs/superpowers/webserve.md) | | `version` | [`version.md`](docs/superpowers/version.md) | ### 2. 🖥️ CLI ``` # 单个 URL 截图 snir scan example.com # 从文件批量执行 snir scan file -f urls.txt # CIDR 网络扫描 snir scan cidr 192.168.1.0/24 # 带数据收集的 Full-page 截图 snir scan example.com --full-page --save-html --save-headers --save-cookies ``` ### 3. 📦 Go SDK ``` import "github.com/cyberspacesec/snir-skills/pkg/sdk" client, _ := sdk.NewClient(sdk.DefaultClientOptions()) defer client.Close() result, _ := client.Screenshot("https://example.com", nil) fmt.Println(result.Title) ``` 📖 [Go SDK 文档](docs/skills.md#二go-sdk-集成) ### 4. 🌐 HTTP API ``` # 启动 API 服务器 snir api --port 8080 --api-key secret # 通过 API 截图 curl -X POST http://localhost:8080/screenshot \ -H "X-API-Key: secret" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' ``` 📖 [HTTP API 文档](docs/superpowers/api.md) ### 5. 🔌 CDP Provider(跨进程共享 Chrome) ``` snir provider --port 9223 --idle-timeout 5m # 其他工具通过以下方式连接:--wss ws://host:9222/devtools/browser/xxx ``` 📖 [Provider 文档](docs/superpowers/provider.md) ## 功能 - **截图** — 全页、元素级别(CSS 选择器 / XPath)、支持质量控制(PNG/JPEG) - **情报** — HTML 源码、HTTP 头、cookies、控制台日志、网络请求 - **浏览器交互** — JavaScript 执行、表单填充、点击/滚动/输入操作 - **浏览器指纹** — 自定义 User-Agent、WebGL、平台、语言、禁用 WebRTC - **Chrome 复用** — 连接池、单例池、远程连接、自动发现 - **代理轮换** — 代理列表、代理文件(热重载)、代理 API、轮询/随机/顺序策略 - **Cookie 管理** — 持久化 JSON cookie jar、Netscape 格式导入/导出、内联 cookies - **输出** — JSONL、CSV、SQLite 数据库、stdout - **跨平台** — 43 种平台组合(Linux/Windows/macOS/FreeBSD/OpenBSD/NetBSD × amd64/arm64/386/arm/mips/ppc64le/riscv64/s390x) ## 安装 ### 预编译二进制文件(无需 Go) 从 [GitHub Releases](https://github.com/cyberspacesec/snir-skills/releases/latest) 下载: | 平台 | 命令 | |----------|---------| | **Linux x86_64** | `curl -L https://github.com/cyberspacesec/snir-skills/releases/latest/download/snir-skills_Linux_x86_64.tar.gz \| tar xz snir` | | **macOS arm64** | `curl -L https://github.com/cyberspacesec/snir-skills/releases/latest/download/snir-skills_Darwin_arm64.tar.gz \| tar xz snir` | | **Windows x86_64** | 从 [Releases](https://github.com/cyberspacesec/snir-skills/releases/latest) 下载 `snir-skills_Windows_x86_64.zip` | ### Linux 软件包 (deb/rpm/archlinux) 包含在每个 [Release](https://github.com/cyberspacesec/snir-skills/releases/latest) 中: ``` sudo dpkg -i snir_*.deb # Debian/Ubuntu sudo rpm -i snir-*.rpm # RHEL/Fedora sudo pacman -U snir-*.pkg.tar.zst # Arch Linux ``` ### Docker ``` docker pull ghcr.io/cyberspacesec/snir:latest docker run --rm ghcr.io/cyberspacesec/snir:latest scan example.com ``` ### 从源码构建(需要 Go 1.23+) ``` git clone https://github.com/cyberspacesec/snir-skills.git cd snir-skills && make build ``` ### 前置条件 截图需要 Chrome/Chromium。或者使用 `--wss` 连接到远程 Chrome 实例。 ``` sudo apt install chromium-browser # Debian/Ubuntu brew install --cask google-chrome # macOS ``` ## 快速示例 ``` # 单个 URL snir scan example.com # 带 timeout 和 proxy snir scan example.com --timeout 60 --proxy http://127.0.0.1:8080 # Full-page + 收集所有内容 snir scan example.com --full-page --save-html --save-headers --save-cookies --save-network # 元素截图(CSS selector) snir scan example.com --selector "#dashboard-panel" # 截图前执行 JavaScript snir scan example.com --js "document.querySelectorAll('.popup').forEach(el => el.remove());" # 带 proxy 轮换的批量扫描 snir scan file -f urls.txt --threads 10 --proxy-file proxies.txt --proxy-strategy random # 输出到 JSONL + 数据库 snir scan file -f urls.txt --write-jsonl --db --db-path results.db ``` ## 文档 | 文档 | 描述 | |----------|-------------| | [SKILLS 索引](docs/superpowers/SKILLS.md) | AI Agent 集成 — 安装、命令、全部 70 个 CLI flag | | [完整功能](docs/skills.md) | CLI + Go SDK + HTTP API + Provider 完整参考 | | [快速示例](docs/quick_examples.md) | 针对常见场景的可直接复制粘贴的示例 | | [使用示例](docs/usage_examples.md) | 带有详细说明的示例 | ## License [MIT](LICENSE) ## 简体中文 [点击查看中文文档](README.zh-CN.md)
标签:Chrome DevTools Protocol, EVTX分析, Go语言, HTTP API, 无服务器架构, 日志审计, 正则表达式, 程序破解, 网页截图, 请求拦截