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扫描, 内容管理系统, 内核监控, 命令控制, 密码管理, 对称加密, 数据抓取, 数据泄露, 数据采集, 漏洞侦查, 漏洞挖掘, 用户枚举, 网站爬虫, 网络安全, 网络安全审计, 自动化审计, 逆向工具, 隐私保护