willygoid/fofa-grabber

GitHub: willygoid/fofa-grabber

一款基于 Go 语言的 FOFA API 搜索结果批量抓取与多格式导出工具,支持并发请求与实时数据保存。

Stars: 0 | Forks: 0

# FOFA Grabber 一个强大且高效的 Go 工具,用于从 FOFA(网络空间搜索引擎)获取并保存搜索结果,支持实时数据保存、并发请求和速率限制。 ## 功能 ✨ **交互式查询输入** - 在运行工具时直接输入你的 FOFA 查询语句 🚀 **并发请求** - 可配置的并发获取以加快获取结果的速度 ⏱️ **速率限制** - 可自定义请求间的延迟以避免触发 API 速率限制 💾 **实时保存** - 数据在获取后立即保存(中断也不会丢失数据) 📁 **多种输出格式** - 域名列表、JSON、CSV 和摘要文件 🔧 **模拟浏览器 Headers** - 模拟真实浏览器请求以避免被屏蔽 📊 **进度跟踪** - 实时进度显示,带有完成百分比 🗂️ **结构化输出** - 所有结果均保存在 `results/` 文件夹下带有时间戳的文件中 ## 前置条件 - Go 1.16 或更高版本 - FOFA API Key(从 [FOFA 用户信息](https://fofa.info/userInfo) 获取) ## 安装说明 1. 克隆此仓库: ``` git clone https://github.com/willygoid/fofa-grabber.git cd fofa-grabber ``` 2. 运行程序(它将创建一个默认的 `.env` 文件): ``` go run main.go ``` 3. 在 `.env` 文件中编辑你的 FOFA API key: ``` FOFA_API_KEY=your_api_key_here DELAY_SECONDS=5 CONCURRENT_REQUESTS=1 ``` ## 用法 ### 基本用法 ``` go run main.go ``` 出现提示时,输入你的 FOFA 查询语句: ``` Input Query: app="Apache-Tomcat" && country="ID" ``` ### 构建二进制文件 创建一个独立的可执行文件: ``` go build -o fofa-grabber main.go ``` 然后运行: ``` ./fofa-grabber ``` ## 配置 编辑 `.env` 文件以自定义行为: | 变量 | 描述 | 默认值 | |----------|-------------|---------| | `FOFA_API_KEY` | 你的 FOFA API key | - | | `DELAY_SECONDS` | 请求之间的延迟(秒) | 2 | | `CONCURRENT_REQUESTS` | 并发请求的数量 | 3 | ### 推荐设置 - **安全/慢速**:`DELAY_SECONDS=3-5`, `CONCURRENT_REQUESTS=1-2` - **普通**:`DELAY_SECONDS=2`, `CONCURRENT_REQUESTS=3` - **快速**(有风险):`DELAY_SECONDS=1`, `CONCURRENT_REQUESTS=5` ⚠️ **警告**:过于激进的设置可能会触发速率限制 (HTTP 429) ## 查询示例 FOFA 使用强大的查询语法。以下是一些示例: ``` # 在印度尼西亚搜索 Livewire 应用 (body="wire:id" || body="wire:click=") && country="ID" # 搜索 Apache Tomcat 服务器 app="Apache-Tomcat" && country="ID" # 搜索特定端口 port="8080" && country="ID" # 按 IP 范围搜索 ip="103.0.0.0/8" && country="ID" # 按 domain 搜索 domain="example.com" # 组合多个条件 app="nginx" && port="443" && country="ID" ``` 如需了解更多查询语法,请访问 [FOFA 查询语法](https://fofa.info/api)。 ## 输出文件 所有文件均保存在 `results/` 目录中,并带有时间戳: ``` results/ ├── fofa_domain_20260123_143045.txt # List of domains/URLs (one per line) ├── fofa_json_20260123_143045.txt # Raw JSON results (one per line) ├── fofa_results_20260123_143045.csv # CSV format (URL, IP, Port) └── summary_20260123_143045.json # Complete summary with metadata ``` ### 文件说明 - **fofa_domain_*.txt**: 包含所有发现的域名/URL 的干净列表 - **fofa_json_*.txt**: 每个结果的原始 JSON 数据 - **fofa_results_*.csv**: 易于处理的 CSV 格式 - **summary_*.json**: 包含查询信息和时间戳的完整数据 ## 输出示例 ``` Configuration loaded: - Delay: 2s - Concurrent requests: 3 - Results will be saved to: results/ Input Query: app="Apache-Tomcat" && country="ID" Query (Base64): YXBwPSJBcGFjaGUtVG9tY2F0IiAmJiBjb3VudHJ5PSJJRCI= Fetching first page to determine total size... Total size: 1500 Total pages to fetch: 15 Query: app="Apache-Tomcat" && country="ID" Starting to fetch 15 pages with 3 concurrent requests and 2s delay... ✓ Progress: 3/15 pages completed (20.0%) - 100 results saved ✓ Progress: 6/15 pages completed (40.0%) - 100 results saved ✓ Progress: 9/15 pages completed (60.0%) - 100 results saved ✓ Progress: 12/15 pages completed (80.0%) - 100 results saved ✓ Progress: 15/15 pages completed (100.0%) - 100 results saved ✓ All pages fetched successfully! Total results collected: 1500 ✓ Summary saved to results/summary_20260123_143045.json All files saved in results/ directory: - fofa_domain_20260123_143045.txt (all domains) - fofa_json_20260123_143045.txt (raw JSON results) - fofa_results_20260123_143045.csv (CSV format) - summary_20260123_143045.json (complete summary) ``` ## 错误处理 ### 速率限制 (HTTP 429) 如果你遇到速率限制: ``` ❌ Error fetching page X: rate limit exceeded (429) - increase delay time ``` **解决方案**:在 `.env` 中增加 `DELAY_SECONDS` 或减少 `CONCURRENT_REQUESTS` ### 无效的 API Key ``` Error fetching first page: API returned error: Invalid API key ``` **解决方案**:检查你 `.env` 中的 `FOFA_API_KEY` ### 空查询 ``` Error: Query cannot be empty ``` **解决方案**:在出现提示时输入有效的 FOFA 查询语句 ## 高级功能 ### 实时保存 数据在获取后会立即保存。如果程序被中断: - 所有已获取的数据都已经保存 - 你可以安全地中断(Ctrl+C)并保留部分结果 - 通过使用不同的查询再次运行来恢复 ### 线程安全操作 - 使用 mutex 锁进行并发文件写入 - 对于高并发请求设置是安全的 - 没有数据损坏或竞态条件 ### GZIP 支持 自动处理 GZIP 压缩的 API 响应,以实现高效的数据传输。 ## 许可证 本项目基于 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ## 免责声明 此工具仅供教育和研究目的使用。请始终: - 遵守 FOFA 的服务条款 - 使用适当的速率限制 - 不要使 API 过载 - 负责任地使用数据 ## 作者 Willy The Great - [@willygoid](https://github.com/willygoid) ## 鸣谢 - [FOFA](https://fofa.info) - 网络空间搜索引擎 - Go 社区提供的优秀库 ## 支持 如果你觉得这个工具有用,请在 GitHub 上给它点个 ⭐! 如有问题或疑问,请[提交一个 issue](https://github.com/willygoid/fofa-grabber/issues)。
标签:EVTX分析, Golang, 安全编程, 实时处理, 日志审计