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倍同时减少了人为错误。关键在于保持脚本的模块化设计便于针对不同场景调整流程。

相关新闻

51单片机定时器2 3种工作模式对比:自动重装、捕获与波特率发生器

51单片机定时器2 3种工作模式对比:自动重装、捕获与波特率发生器

51单片机定时器2的三种工作模式深度解析与应用实战在嵌入式系统开发中,精确的时间控制往往是项目成败的关键。作为51单片机中最强大的定时器资源,定时器2凭借其灵活的三种工作模式——16位自动重装模式、捕获模式和波特率发生器模式,成为工程…

2026/7/10 8:10:25 阅读更多 →
STM32C542定时器输入捕获频率测量:配置要点与工程实践

STM32C542定时器输入捕获频率测量:配置要点与工程实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 在嵌入式开发中,频率测量是一个常见但容易出错的任务。很多开发者在使用STM32进行频率测量时,往往只关注代码实…

2026/7/10 8:06:24 阅读更多 →
Python Requests + XPath 爬取六只脚轨迹数据:30页/870条实战与反爬策略

Python Requests + XPath 爬取六只脚轨迹数据:30页/870条实战与反爬策略

Python Requests XPath 实战:高效爬取户外轨迹数据与反爬策略1. 项目背景与目标户外运动爱好者经常会在六只脚等平台分享他们的GPS轨迹数据,这些数据包含丰富的时空信息,如经纬度、海拔、速度等。对于研究人员和数据分析师来说,这…

2026/7/10 8:04:24 阅读更多 →

最新新闻

如何在现代电脑上通过Xenia Canary重温Xbox 360经典游戏?实用安装与优化指南

如何在现代电脑上通过Xenia Canary重温Xbox 360经典游戏?实用安装与优化指南

如何在现代电脑上通过Xenia Canary重温Xbox 360经典游戏?实用安装与优化指南 【免费下载链接】xenia-canary Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia-canary Xenia Canary是一款开源免费的Xbox 360模拟器研…

2026/7/10 9:02:39 阅读更多 →
SVPWM 空间矢量调制:从 MATLAB/Simulink 仿真到 STM32 实现,谐波降低 15%

SVPWM 空间矢量调制:从 MATLAB/Simulink 仿真到 STM32 实现,谐波降低 15%

SVPWM空间矢量调制技术:从MATLAB仿真到STM32嵌入式实现的工程实践引言:电力电子调制的技术演进在工业电机控制领域,如何高效精确地驱动三相电机一直是核心技术挑战。传统SPWM(正弦脉宽调制)技术虽然简单易实现&#xf…

2026/7/10 9:00:39 阅读更多 →
从自动化到主动智治:迈克生物携手华为推动医学检验智慧化实验室升级

从自动化到主动智治:迈克生物携手华为推动医学检验智慧化实验室升级

2026年7月8日,迈克生物股份有限公司与华为技术有限公司在华为松山湖园区签署深化合作协议。双方将聚焦数智技术与体外诊断产业深度融合,围绕智慧化实验室、集团全球一朵云、智能制造平台建设及鸿蒙IVD设备联合创新等领域展开深度协作,推动医学…

2026/7/10 8:58:38 阅读更多 →
基于AI Agent与MCP协议的渗透测试辅助工具VulnClaw实战指南

基于AI Agent与MCP协议的渗透测试辅助工具VulnClaw实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. VulnClaw 是什么?它能解决什么实际问题? 如果你正在学习或从事网络安全、渗透测试,或者对 AI A…

2026/7/10 8:56:38 阅读更多 →
STM32F429ZI与CMT-8540S-SMT嵌入式音频开发实战

STM32F429ZI与CMT-8540S-SMT嵌入式音频开发实战

1. 为什么选择STM32F429ZI与CMT-8540S-SMT组合 在嵌入式音频开发领域,硬件选型往往决定了项目的上限。STM32F429ZI这颗基于ARM Cortex-M4内核的微控制器,内置了2个专用音频PLL和全双工IS接口,时钟精度可达0.5%。这意味着它能够直接输出符合IS…

2026/7/10 8:52:36 阅读更多 →
C++17 元编程状态机 fsm-cxx 实战:5分钟构建线程安全事件驱动模型

C++17 元编程状态机 fsm-cxx 实战:5分钟构建线程安全事件驱动模型

C17 元编程状态机 fsm-cxx 实战:5分钟构建线程安全事件驱动模型 在嵌入式系统、游戏开发和网络协议栈中,状态机(Finite State Machine, FSM)是管理复杂逻辑的利器。传统实现常伴随冗长的switch-case语句和脆弱的状态转移表&#x…

2026/7/10 8:48:35 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻