5分钟搞定OSINT自动化:用Node-RED串联theHarvester打造情报收集流水线
你是否还在为手动运行开源情报(OSINT)工具而烦恼?安全分析师小张最近遇到了这样的困境:每天需要对多个目标域名执行子域名收集、邮箱挖掘和IP定位,重复的CLI命令输入不仅耗时,还容易遗漏关键步骤。现在,有一种更聪明的方式——通过theHarvester的API接口与Node-RED可视化编程工具结合,无需编写大量代码就能搭建自动化工作流。本文将带你从零开始,用5个步骤完成从环境配置到流程部署的全流程,最终实现"一键启动、自动汇总"的情报收集系统。
为什么选择theHarvester+Node-RED组合?
theHarvester作为一款经典的OSINT工具,能够从百度、Shodan、Censys等200+数据源中批量获取子域名、邮箱和IP信息。其最新版本通过FastAPI构建的RESTful接口,将原本只能通过命令行调用的功能转化为可通过HTTP请求触发的服务。而Node-RED作为低代码编程平台,提供了拖拽式的节点编辑器,让你可以像搭积木一样连接各种服务和功能模块。
这两者的结合带来了三大优势:
- 流程可视化:用流程图直观展示情报收集步骤,替代复杂的Shell脚本
- 定时自动化:设置周期性任务,自动监控目标变化
- 多工具联动:将theHarvester的输出无缝传递给Nmap、Whois等工具进行深度分析
theHarvester的模块化架构设计,使其具备良好的可扩展性和二次开发能力
准备工作:环境搭建与依赖安装
在开始构建工作流前,需要准备以下环境:
1. 部署theHarvester API服务
首先通过GitCode仓库克隆项目代码:
git clone https://link.gitcode.com/i/d4a44ff5bccab5d06e154646bfd86cf5
cd theHarvester
安装Python依赖:
pip install -r requirements.txt
启动API服务(默认端口8000):
python theHarvester/lib/api/api.py
服务启动后,可通过访问http://localhost:8000/docs查看交互式API文档,确认服务正常运行。
2. 安装Node-RED
在Ubuntu系统中可通过APT直接安装:
sudo apt update && sudo apt install nodejs npm
sudo npm install -g --unsafe-perm node-red
启动Node-RED服务:
node-red
访问http://localhost:1880即可打开Node-RED的Web管理界面。
核心步骤:构建自动化工作流
步骤1:配置API请求节点
在Node-RED编辑器中,从左侧面板拖拽一个"HTTP Request"节点到工作区。双击节点进行配置:
- 方法:GET
- URL:
http://localhost:8000/query - 参数:点击"添加参数"按钮,依次添加:
source:crtsh,shodan(指定数据源,多个用逗号分隔)domain:example.com(目标域名)limit:1000(结果数量限制)
这些参数对应theHarvester命令行中的-s、-d和-l选项,但通过API方式可以更灵活地动态调整。
步骤2:解析JSON响应数据
theHarvester API返回的是结构化JSON数据,包含asns、ips、emails等字段。添加一个"JSON"节点连接到HTTP请求节点的输出,它会自动将JSON字符串转换为JavaScript对象,方便后续处理。
为了直观查看数据结构,可以在JSON节点后添加一个"Debug"节点,并勾选"显示完整消息对象"选项。部署流程后,触发请求即可在右侧调试面板看到类似以下的输出:
{
"asns": ["AS15169"],
"ips": ["172.217.16.110"],
"emails": ["contact@example.com"],
"hosts": ["www.example.com", "mail.example.com"]
}
步骤3:数据过滤与清洗
原始API返回可能包含重复或无效数据。添加一个"Function"节点,使用简单的JavaScript代码进行数据处理:
// 去重并过滤私有IP
msg.payload.ips = [...new Set(msg.payload.ips)]
.filter(ip => !ip.startsWith('192.168.') && !ip.startsWith('10.'));
// 提取二级域名
msg.payload.hosts = msg.payload.hosts
.map(host => host.split('.').slice(-2).join('.'))
.filter((v, i, a) => a.indexOf(v) === i);
return msg;
这段代码实现了IP地址去重、私有IP过滤和子域名提取三个常用的数据清洗功能。你可以根据实际需求修改过滤规则。
步骤4:结果存储与通知
处理后的数据可以通过多种方式保存:
- 文件存储:使用"File"节点将结果写入JSON或CSV文件
- 数据库存储:通过"MySQL"或"MongoDB"节点存入数据库
- 邮件通知:配置"Email"节点,任务完成后自动发送结果到指定邮箱
推荐组合使用"File"和"Email"节点:当文件保存成功后,发送包含结果摘要和文件路径的通知邮件。
步骤5:设置定时触发器
最后添加一个"Inject"节点作为工作流的触发器。配置定时规则:
- 重复:每隔24小时
- ** payload**:
{"domain": "example.com"}(动态指定目标域名)
点击"部署"按钮后,工作流将按照设定的时间自动执行。你也可以点击Inject节点的按钮手动触发执行。
高级技巧:优化与扩展
错误处理机制
在HTTP请求节点后添加"Catch"节点,捕获API调用失败的情况。连接到"Function"节点实现重试逻辑:
if (msg.statusCode === 503) {
// 服务不可用时延迟5分钟重试
node.send([null, {payload: msg.payload, delay: 300000}]);
} else {
// 其他错误发送邮件通知
node.send([{payload: `API调用失败: ${msg.statusCode}`}, null]);
}
多数据源并行处理
通过"Split"和"Join"节点实现多数据源并行查询。例如同时查询crtsh和securitytrails:
Inject -> Split -> [HTTP Request(crtsh), HTTP Request(securitytrails)] -> Join -> JSON -> ...
这种方式可以将原本串行执行的多个查询并行化,大幅缩短整体执行时间。
结果可视化展示
使用Node-RED Dashboard插件创建自定义仪表盘:
- 安装插件:
npm install node-red-dashboard - 添加"ui_table"节点展示主机列表
- 添加"ui_chart"节点统计不同数据源的结果数量
- 通过浏览器访问http://localhost:1880/ui查看实时数据面板
部署与维护最佳实践
服务持久化运行
为确保工作流稳定运行,需要将theHarvester API和Node-RED配置为系统服务:
# 配置theHarvester为systemd服务
sudo nano /etc/systemd/system/theharvester-api.service
添加以下内容:
[Unit]
Description=theHarvester API Service
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/data/web/disk1/git_repo/GitHub_Trending/th/theHarvester
ExecStart=/usr/bin/python3 theHarvester/lib/api/api.py
Restart=always
[Install]
WantedBy=multi-user.target
同样的方式配置Node-RED服务,然后启动并设置开机自启:
sudo systemctl start theharvester-api node-red
sudo systemctl enable theharvester-api node-red
API密钥管理
在api-keys.yaml文件中配置各数据源的API密钥,避免将密钥硬编码到Node-RED流程中。对于需要频繁更换密钥的场景,可以通过环境变量注入:
export SHODAN_API_KEY="your_key_here"
python theHarvester/lib/api/api.py
总结与下一步行动
通过本文介绍的方法,你已经掌握了如何利用theHarvester的RESTful API和Node-RED构建低代码自动化工作流。这个方案不仅适用于安全情报收集,还可以扩展到漏洞扫描、资产监控等多种场景。
接下来你可以尝试这些进阶方向:
- 集成Slack/Teams通知,实现即时告警
- 添加Nmap节点对发现的IP进行端口扫描
- 使用机器学习节点对收集的域名进行风险评分
现在就打开你的浏览器,访问项目仓库获取最新代码,开始构建属于你的自动化情报平台吧!如果觉得本文对你有帮助,请点赞收藏,并关注获取更多OSINT自动化技巧。
提示:定期查看theHarvester的更新日志,及时了解新添加的数据源和API功能,持续优化你的工作流。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




