BrunoAFK/recon-web

GitHub: BrunoAFK/recon-web

一款可自托管的开源全方位网站侦察工具,能够快速扫描并分析网站的安全配置、DNS、性能及技术栈。

Stars: 0 | Forks: 0

# recon-web 扫描任何网站并在几秒钟内全面了解其安全性、DNS、性能和技术栈。 开源、可自托管、无需账号。 ## 快速开始 ### 单行命令(仅 CLI) ``` docker run --rm ghcr.io/brunoafk/recon-web/cli scan example.com ``` 无需设置,无需克隆 —— 直接扫描。 ### Docker(完整 UI + API) ``` git clone https://github.com/BrunoAFK/recon-web.git cd recon-web cp .env.example .env docker compose up ``` 打开 **http://localhost:8080** 并输入任意 URL。完成。 ### 不用 Docker?从源码运行 需要 Node.js 24+。 ``` git clone https://github.com/BrunoAFK/recon-web.git cd recon-web npm install npm run dev # API on http://localhost:3000 npm run dev:web # UI on http://localhost:5173 (separate terminal) ``` ## 你将获得 输入 URL,recon-web 将在 6 个类别中运行 **39 项检查**。结果实时流式传输 —— 无需等待所有任务完成。 ### 安全(12 项检查) | 检查项 | 作用 | |-------|-------------| | **SSL 证书** | 读取 TLS 证书:颁发者、到期日期、信任链 | | **SSL 评级** | 对 TLS 配置进行 A+ 到 F 的评级(协议、套件、证书、HSTS) | | **TLS 配置** | 协议版本、密码套件、证书有效性 | | **HSTS** | 检查 Strict-Transport-Security 头和预加载状态 | | **HTTP 安全头** | 评分 CSP、X-Frame-Options、X-Content-Type-Options 等 | | **防火墙** | 检测 WAF 提供商(Cloudflare、AWS WAF、Akamai...) | | **security.txt** | 检查漏洞披露策略 | | **威胁** | Google Safe Browsing + 恶意软件数据库 | | **拦截列表** | 检查 17 个 DNS 拦截列表以发现声誉问题 | | **VirusTotal** | 使用 70+ 杀毒引擎扫描(需要 API 密钥) | | **AbuseIPDB** | IP 声誉和滥用历史(需要 API 密钥) | | **WordPress** | 检测 WP 安装、暴露文件、插件/主题版本 | ### DNS(5 项检查) | 检查项 | 作用 | |-------|-------------| | **DNS 记录** | A、AAAA、MX、NS、TXT、CNAME、SOA、SRV、PTR 记录 | | **DNS 提供商** | 识别名称服务器提供商和 DoH 支持 | | **DNSSEC** | 验证 DNSKEY、DS 和 RRSIG 记录 | | **TXT 记录** | 解析 SPF、DKIM、域名验证条目 | | **邮件配置** | MX 记录、邮件提供商、SPF/DMARC 分析 | ### 网络(8 项检查) | 检查项 | 作用 | |-------|-------------| | **HTTP 状态** | 状态码和响应时间 | | **HTTP 头** | 完整的响应头转储 | | **Cookies** | Cookie 名称、标志(Secure、HttpOnly、SameSite) | | **重定向** | 跟随完整的重定向链 | | **开放端口** | 扫描常见端口(SSH、HTTP、HTTPS、MySQL、RDP...) | | **IP 地址** | 解析域名的 IP | | **服务器位置** | GeoIP 查询 —— 国家、城市、坐标 | | **Traceroute** | 从服务器到目标的网络跳数 | ### 内容(5 项检查) | 检查项 | 作用 | |-------|-------------| | **robots.txt** | 解析允许/禁止的路径和爬取指令 | | **站点地图** | 查找并解析 XML 站点地图(首先检查 robots.txt) | | **社交标签** | OpenGraph、Twitter Cards、元描述、预览图 | | **关联页面** | 统计并列出内部和外部链接 | | **SEO 审计** | 标题、标题层级、图片、规范、结构化数据、评分 | ### 元信息(7 项检查) | 检查项 | 作用 | |-------|-------------| | **WHOIS** | 域名注册商、注册日期、到期日期、名称服务器 | | **归档历史** | Wayback Machine 快照计数和日期范围 | | **域名排名** | Tranco 前 100 万热门度排名 | | **旧版排名** | Cisco Umbrella 排名 | | **功能** | BuiltWith 功能检测(需要 API 密钥) | | **技术栈** | 从 HTML 中检测框架、CMS、CDN、分析工具 | | **截图** | 页面视觉捕获(需要 Chromium) | ### 性能(2 项检查) | 检查项 | 作用 | |-------|-------------| | **碳足迹** | 页面权重、CO2 估算、绿色托管检查 | | **PageSpeed** | Google Lighthouse 评分(需要 API 密钥) | ## 如何使用 ### Web UI 1. 输入 URL 并点击 **Scan** 2. 每项检查完成后,结果会实时显示 3. 按 **类别** 过滤 4. 按 **状态** 过滤,以快速发现问题 5. 按 A-Z / Z-A 排序以查找特定检查项 6. 点击任意卡片上的 **info 图标** 查看检查内容的解释 7. 点击 **code 图标** 查看原始 JSON 数据 ### 历史记录与报告 - 所有扫描会自动保存 - 在 **History** 页面浏览过往扫描 - **并排对比** 两次扫描,查看变化 - **下载** HTML 或 PDF 报告,与团队共享 ### REST API 交互式文档位于 **http://localhost:3000/docs** (Swagger UI)。 ``` # 全扫描 curl "http://localhost:3000/api?url=example.com" # 单次检查 curl "http://localhost:3000/api/dns?url=example.com" curl "http://localhost:3000/api/ssl?url=github.com" # 实时流 (SSE) curl "http://localhost:3000/api/stream?url=example.com" # 列出所有可用检查 curl "http://localhost:3000/api/handlers" ``` ### CLI ``` # 带彩色输出的全扫描 npx recon-web scan example.com # JSON 输出 npx recon-web scan --json example.com # 单次检查 npx recon-web dns example.com # 用于 CI/CD 的 JUnit XML npx recon-web scan --format junit example.com # 如果 SSL 过期则使构建失败 npx recon-web scan --fail-on ssl:expired example.com # 与上一次扫描进行比较 npx recon-web scan --json example.com > baseline.json npx recon-web scan --diff baseline.json example.com ``` 或通过 Docker: ``` docker run --rm ghcr.io/brunoafk/recon-web/cli scan example.com ``` ## 安全性 recon-web v1.2.0+ 包含以下特性: - **SSRF 防护** — 所有分析处理程序都会根据 IP 白名单验证 URL(禁止 RFC1918、禁止链路本地、禁止云元数据),并将连接固定到验证后的 IP 以抵御 DNS 重绑定。如果你有意想要扫描内部主机(仅限实验室环境),请设置 `RECON_ALLOW_PRIVATE_IPS=1`。 - **Chromium 沙箱** — 截图处理程序运行启用了 user-namespace 沙箱的 Chromium。容器需要 `SYS_ADMIN` + `seccomp=unconfined`(已包含在配套的 compose 文件中)。 - **非 root 容器** — 所有镜像以非特权用户身份运行,并使用只读 rootfs 和已移除的权限。 - **严格的 CSP** — Web 前端附带严格的 Content-Security-Policy。 - **已签名镜像** — 发布镜像通过 GitHub Actions OIDC 进行 cosign 签名。在生产环境拉取前请验证。 若要报告安全问题,请在 GitHub 上开启私有安全公告,而不是公开 issue。 ## 配置 将 `.env.example` 复制为 `.env`。所有选项均为可选 —— 应用程序无需任何 API 密钥即可开箱即用。 ### API 密钥(可选) 所有检查均可无需密钥运行。添加密钥可启用额外检查或移除速率限制: | 变量 | 解锁功能 | |----------|----------------| | `GOOGLE_CLOUD_API_KEY` | PageSpeed Insights + Google Safe Browsing | | `VIRUSTOTAL_API_KEY` | VirusTotal 扫描(免费:500 次/天) | | `ABUSEIPDB_API_KEY` | AbuseIPDB 声誉(免费:1,000 次/天) | | `CLOUDMERSIVE_API_KEY` | 恶意软件扫描 | | `BUILT_WITH_API_KEY` | BuiltWith 功能检测 | | `TRANCO_API_KEY` | Tranco 域名排名 | ### 身份验证 ``` AUTH_ENABLED=true AUTH_TOKEN=your-secret-token ``` 所有 `/api/*` 路由都需要 `Authorization: Bearer `。Web UI 会显示登录页面。 ### 定时扫描与告警 ``` SCHEDULE_ENABLED=true SCHEDULE_CRON=0 0 * * * SCHEDULE_URLS=https://example.com,https://mysite.com # Telegram (可选) TELEGRAM_BOT_TOKEN=123456:ABC-DEF TELEGRAM_CHAT_ID=987654321 # Email (可选) SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=you@gmail.com SMTP_PASS=app-password NOTIFY_EMAIL=alerts@example.com ``` 调度器按 cron 计划运行扫描,与之前的结果进行比较,并在发生变化时发送告警(SSL 过期、头移除、DNS 变更等)。 请参阅 [`.env.example`](.env.example) 了解包含默认值的所有选项。 ## 部署 | 方式 | 指南 | |--------|-------| | Docker Compose(从源码构建) | [docs/deploy-docker-local.md](docs/deploy-docker-local.md) | | Docker Compose(预构建镜像) | [docs/deploy-docker-remote.md](docs/deploy-docker-remote.md) | | Kubernetes (Helm) | [docs/deploy-kubernetes.md](docs/deploy-kubernetes.md) | | 独立运行(Node.js,无 Docker) | [docs/deploy-standalone.md](docs/deploy-standalone.md) | ## 开发 请参阅[开发指南](docs/DEVELOPMENT.md)了解架构、运行测试和贡献方式。 ## 许可证 [GPL-2.0-only](LICENSE) — 可自由使用、修改和分发。
标签:AbuseIPDB, Ask搜索, C2日志可视化, CDN识别, DNS枚举, DNS查询, Docker, GNU通用公共许可证, HSTS, HTTPS评级, MITM代理, Node.js, Recon, SSL检测, TLS配置, VirusTotal, Web安全, Web界面, WordPress检测, 二进制发布, 信誉检测, 域名黑名单, 安全头检测, 安全扫描, 安全防御评估, 开源工具, 性能监控, 技术栈识别, 指纹识别, 文件查看, 时序注入, 网站速度, 网络安全工具, 自动化攻击, 自托管, 蓝队分析, 请求拦截, 资产测绘, 防火墙识别