h8rt3rmin8r/wpspider

GitHub: h8rt3rmin8r/wpspider

一款通过 WordPress REST API 静默抓取站点数据并归档到 SQLite 的命令行侦察工具。

Stars: 1 | Forks: 0

# WPSpider **WPSpider** 是一款功能强大且独立的命令行工具,旨在通过公开的 REST API 抓取 WordPress 网站。它能高效地遍历端点(如文章、页面、媒体等)的分页,并将数据归档到结构化的 SQLite 数据库中,以便进行分析、备份或迁移。 ## 功能特性 - **智能发现**:自动处理从简单域名到 API 路径的构建(例如 `example.com` → `https://example.com/wp-json/wp/v2/`)。 - **智能分页**:使用最大页面大小遍历所有可用页面,确保完整检索数据。 - **稳健抓取**:优雅地处理速率限制、端点缺失和 API 错误,而不会导致程序崩溃。 - **灵活输出**:将所有数据保存为带有元数据跟踪的可移植 SQLite 数据库(`.db`)。 - **独立可执行文件**:作为单个 `.exe` 文件分发,终端用户无需安装 Python。 - **可配置**:完全通过简单的 `config.json` 文件进行控制。 ## 安装说明 ### 普通用户 1. 下载最新的发布二进制文件(`wpspider.exe`)。 2. 确保 `config.json` 位于同一目录中。 ### 开发者 1. 克隆仓库。 2. 初始化环境: python -m venv .venv .venv\Scripts\Activate.ps1 pip install -r requirements.txt ## 使用说明 ### 1. 配置 在应用程序目录中创建或编辑 `config.json` 文件。 **最小示例:** ``` { "target": "https://techcrunch.com", "db_name": null } ``` **完整配置示例:** ``` { "target": "https://example.com", "endpoints": [ "posts", "pages", "media", "categories", "users" ], "db_name": null, "output_directory": null, "user_agent": "WPSpider/1.0 (Nebula Crawler; +https://wpspider.local)", "log_file": "wpspider.log" } ``` | 设置 | 描述 | 默认值 | | :--- | :--- | :--- | | `target` | WordPress 站点的 URL 或域名。 | **必需** | | `endpoints` | 要抓取的 API 端点列表。 | `['posts', 'pages', 'media', ...]` | | `db_name` | 输出的 SQLite 文件。如果为 null,文件名将从目标域名派生。 | `null` | | `output_directory` | 仅当 `db_name` 为 null 时使用的输出目录。 | `null` (PWD) | | `user_agent` | 自定义 User-Agent 字符串。 | `WPSpider/1.0 (Nebula Crawler; +https://wpspider.local)` | | `log_file` | 保存执行日志的路径。 | `wpspider.log` | ### 2. 运行爬虫 从终端运行可执行文件(或 Python 脚本): ``` .\wpspider.exe ``` 或从源码运行: ``` python -m wpspider.main ``` 可选的 CLI 参数: - `--target`, `-t`, `--url`, `--site`, `--domain` - `--output`, `-o`, `--db`, `--database`, `--db-name` - `--directory`, `-d`, `--outdirectory`, `--outputdirectory` - `--useragent`, `--user-agent`, `-u` 该工具将在连接目标、发现端点和获取记录时显示进度。 ## 输出结构 数据保存到配置中指定的 SQLite 数据库中。 ### 元数据表 (`targets`) 跟踪抓取历史。 - `id`:主键 - `url`:使用的完整 API URL。 - `domain`:目标域名。 - `date_crawled`:操作的时间戳。 ### 数据表 每个端点都有自己的表(例如 `posts`, `users`)。 为了确保跨不同 WordPress 版本和插件模式实现 100% 的数据保真度: - `id`:WordPress 对象 ID。 - `data`:以文本形式存储的完整原始 JSON 对象。 - `crawled_at`:特定记录的时间戳。 ## 开发说明 ### 结构 - `src/`:源代码。 - `tests/`:单元测试和集成测试。 - `scripts/`:PowerShell 自动化脚本。 - `docs/`:项目文档和模式。 ### 构建可执行文件 将应用程序打包为独立的 `.exe`: ``` # 安装 build dependencies pip install pyinstaller # 运行 build script .\scripts\build.ps1 ``` 输出将位于 `dist/` 文件夹中。 ## 许可证 [MIT License](LICENSE)
标签:AI合规, API安全, DFIR, ESC4, JSON输出, OSINT, Python开发, SQLite数据库, URL抓取, WordPress扫描, 内容管理系统, 内核监控, 命令控制, 密码管理, 对称加密, 数据抓取, 数据泄露, 数据采集, 漏洞侦查, 漏洞挖掘, 用户枚举, 网站爬虫, 网络安全, 网络安全审计, 自动化审计, 逆向工具, 隐私保护