FOFA API v2.0 资产采集实战:Python 脚本 3 步自动化处理与 Rad 爬虫对接 FOFA API v2.0 资产采集与自动化处理实战指南1. 现代资产采集的技术演进在网络安全领域资产采集已经从传统的手工枚举发展为智能化的自动化流程。作为安全研究员我们需要掌握如何高效获取目标资产信息并将其转化为可操作的扫描目标。FOFA作为领先的网络空间测绘引擎其API v2.0版本提供了更强大的查询能力和更灵活的数据返回格式。资产采集的核心价值在于精准定位通过语法组合锁定特定技术栈的资产批量获取一次性收集数百甚至上千条相关资产数据持续监控定期执行采集任务发现新增暴露面# FOFA基础查询示例 import requests FOFA_EMAIL your_emaildomain.com FOFA_KEY your_api_key_here base_url https://fofa.info/api/v2/search query domainexample.com status_code200 fields host,title,ip,port,server size 100 # 每页结果数 page 1 # 页码 params { email: FOFA_EMAIL, key: FOFA_KEY, qbase64: base64.b64encode(query.encode()).decode(), fields: fields, size: size, page: page } response requests.get(base_url, paramsparams) if response.status_code 200: data response.json() print(f获取到 {len(data[results])} 条结果)2. FOFA API v2.0 深度解析2.1 API核心功能对比功能特性v1.0版本v2.0增强点查询语法基础支持支持更复杂的逻辑组合结果字段固定字段可自定义返回字段分页机制简单分页支持大结果集高效遍历速率限制较严格按账户等级动态调整数据新鲜度延迟更新近实时数据返回2.2 高效查询构建技巧构建优质FOFA查询需要关注三个维度目标特征识别目标的独特标识备案号、特定标题等技术指纹通过组件特征缩小范围中间件、框架等业务场景结合业务逻辑推测可能的资产分布# 高级查询构建示例 def build_fofa_query(target_domain, tech_stackNone): base_query fdomain{target_domain} if tech_stack: if tech_stack Spring: base_query headerX-Application-Context elif tech_stack ThinkPHP: base_query bodyThinkPHP # 排除常见干扰项 base_query !body403 Forbidden return base_query3. Python自动化处理流水线3.1 资产标准化处理采集到的原始数据往往需要经过清洗才能用于后续工具链。典型处理流程包括协议补充为IP或域名添加http/https前缀端口归一化根据服务类型标准化URL格式去重处理消除因CDN等导致的重复资产# URL标准化处理脚本 import re from urllib.parse import urlparse def normalize_assets(raw_assets): processed set() for asset in raw_assets: # 处理IP形式 if re.match(r^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d)?$, asset): if : in asset: ip, port asset.split(:) processed.add(fhttp://{ip}:{port}) processed.add(fhttps://{ip}:{port}) else: processed.add(fhttp://{asset}) processed.add(fhttps://{asset}) # 处理域名形式 else: if not asset.startswith((http://, https://)): processed.add(fhttp://{asset}) processed.add(fhttps://{asset}) else: parsed urlparse(asset) if not parsed.path or parsed.path /: processed.add(asset) return sorted(processed)3.2 与Rad爬虫的高效对接Rad作为现代爬虫工具对输入格式有特定要求。我们需要确保每个URL独立一行支持HTTP/HTTPS协议保留端口号信息非标准端口时# Rad输入文件生成器 def generate_rad_input(fofa_results, output_filerad_input.txt): with open(output_file, w) as f: for result in fofa_results: host result.get(host, ) port str(result.get(port, 80)) if not host: continue if port in [80, 443]: scheme https if port 443 else http f.write(f{scheme}://{host}\n) else: f.write(fhttp://{host}:{port}\n) f.write(fhttps://{host}:{port}\n) print(f生成Rad输入文件{output_file})4. 实战构建端到端自动化流程4.1 完整工作流设计资产采集层FOFA API定时任务数据处理层自动清洗和标准化爬虫调度层并行启动Rad实例结果聚合层合并爬取结果供后续分析# 端到端自动化脚本框架 import json from concurrent.futures import ThreadPoolExecutor class AssetPipeline: def __init__(self, config): self.config config self.raw_assets [] self.processed_assets [] def fetch_from_fofa(self, query): # 实现FOFA API调用 pass def process_assets(self): # 实现资产标准化 pass def run_rad_crawler(self, input_file): # 实现Rad调用 pass def execute(self): print(启动资产采集流水线) self.fetch_from_fofa(self.config[fofa_query]) self.process_assets() self.run_rad_crawler(rad_input.txt) print(流水线执行完成) # 示例配置 config { fofa_query: domainexample.com, concurrency: 5 } pipeline AssetPipeline(config) pipeline.execute()4.2 性能优化技巧异步请求使用aiohttp提升API调用效率结果缓存避免重复查询相同条件智能重试对失败请求实现指数退避重试资源限制根据硬件条件调整并发度# 带重试机制的API调用 import time from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry def setup_session(retries3, backoff_factor0.3): session requests.Session() retry Retry( totalretries, readretries, connectretries, backoff_factorbackoff_factor, status_forcelist(500, 502, 504) ) adapter HTTPAdapter(max_retriesretry) session.mount(http://, adapter) session.mount(https://, adapter) return session # 使用示例 session setup_session() response session.get(https://fofa.info/api/v2/search, paramsparams)5. 高级应用场景5.1 持续监控系统构建通过将FOFA采集与自动化处理结合可以构建资产监控系统基线建立首次全量采集目标资产增量检测定期执行差异分析告警触发发现新暴露面时实时通知# 简易监控系统核心逻辑 class AssetMonitor: def __init__(self, baseline_file): self.baseline self.load_baseline(baseline_file) self.current set() def load_baseline(self, filepath): with open(filepath) as f: return set(line.strip() for line in f) def detect_changes(self, new_assets): new_assets set(new_assets) added new_assets - self.baseline removed self.baseline - new_assets if added: print(f发现 {len(added)} 个新增资产) with open(new_assets.txt, w) as f: f.write(\n.join(added)) if removed: print(f发现 {len(removed)} 个资产下线) return added, removed5.2 多工具链集成现代安全研究需要多种工具协同工作典型集成模式包括FOFA → Rad → Xray全自动化漏洞发现FOFA → Nuclei针对性漏洞检测FOFA → Custom Scanner定制化扫描方案# 工具链集成示例 def run_full_scan(target_domain): # 步骤1FOFA资产采集 fofa_results fetch_from_fofa(fdomain{target_domain}) # 步骤2数据处理 normalized normalize_assets([r[host] for r in fofa_results]) # 步骤3Rad爬虫 generate_rad_input(normalized, rad_input.txt) os.system(rad -t 10 -f rad_input.txt -o rad_output) # 步骤4Xray扫描 os.system(xray webscan --listen 127.0.0.1:7777 --html-output xray_report.html) print(全流程扫描完成结果保存在xray_report.html)在实际项目中这套方法帮助我们将资产收集效率提升了3-5倍同时减少了人为错误。关键在于保持脚本的模块化设计便于针对不同场景调整流程。

相关新闻

最新新闻

SMUDebugTool 实战指南:5 步完成 Ryzen 超频、SMU 命令与寄存器调试

SMUDebugTool 实战指南:5 步完成 Ryzen 超频、SMU 命令与寄存器调试

SMUDebugTool 实战指南:5 步完成 Ryzen 超频、SMU 命令与寄存器调试 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…

2026/8/27 9:32:59
AI数据中心遭社区反对?从电力预算到DCIM的工程化解法

AI数据中心遭社区反对?从电力预算到DCIM的工程化解法

最近有则新闻:美国得州州长阿博特在回应 AI 数据中心遭到当地居民反对时,用了一个很重的词——“咎由自取”。这则消息本质上是公共政策话题,我不在这里做价值判断。但作为长期关注数据中心基础设施的从业者,我更在意的是它背后暴…

2026/8/27 9:32:59
unlock-music:ncm / qmc 本地批量转换的 3 条命令

unlock-music:ncm / qmc 本地批量转换的 3 条命令

unlock-music:ncm / qmc 本地批量转换的 3 条命令 【免费下载链接】unlock-music 音乐解锁:移除已购音乐的加密保护。 目前支持网易云音乐(ncm)、QQ音乐(qmc, mflac, tkm, ogg) 。此版本为预构建版本。 项目地址: https://gitcode.com/gh_mirrors/unl/…

2026/8/27 9:32:59
基于SpringBoot的膳食搭配营养学知识智能问答小程序的实现(源码+讲解视频+LW)

基于SpringBoot的膳食搭配营养学知识智能问答小程序的实现(源码+讲解视频+LW)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/27 9:32:59
沉浸式展馆全链路技术实践:从序厅氛围营造到全域智能体验升级

沉浸式展馆全链路技术实践:从序厅氛围营造到全域智能体验升级

摘要:本文系统梳理沉浸式展馆从序厅氛围营造、声场优化、自动化播控、互动投影校准、长距离信号传输到集中管控与应急切换的全链路技术实践,并结合重庆优沃科技真实项目案例,为系统集成商与场馆技术主管提供可落地的调试技巧与硬件选型逻辑&a…

2026/8/27 9:32:59
Input Leap:让一套键盘鼠标同时操作多台电脑的实操教程

Input Leap:让一套键盘鼠标同时操作多台电脑的实操教程

Input Leap:让一套键盘鼠标同时操作多台电脑的实操教程 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap Input Leap 是一款开源的 KVM(键盘、视频、鼠标共享)软件。它…

2026/8/27 9:27:59