一个强大的多线程 Python 工具,用于查询 FOFA (Fofa.so) API、提取选定字段,并以智能格式保存唯一结果。
ip、port、title、cert.*、tls.* 等)domains_*.txt、ips_*.txt)list 命令显示所有有效字段)raw_input,易于移植到 Python 3)requests 库安装依赖:
pip install requests
🔧 配置
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 使用方法
运行脚本:
python fofa_searcher.py
你会收到交互式提示:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
每页最多返回 SIZE_DEFAULT 条结果。
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
输入 list 可查看所有有效字段(basic、certificate、TLS)。
所有结果都会保存到 OUTPUT_DIR 中,并使用描述性文件名,例如: results/domains_example_com_20250315_143022.txt
📂 输出示例
单字段 – 带清晰标签:
IP: 93.184.216.34
Port: 443
Title: Example Domain
多字段 – 紧凑格式:
93.184.216.34 | Port:443 | [Example Domain] | {US}
证书 / TLS 字段 – 清晰标签:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 有效字段
该工具支持所有常见 FOFA 字段,以及证书(cert.)和 TLS(tls.)字段。
基本字段 (部分列表)
ip, port, protocol, base_protocol, host, domain, title, server, country, region, city, os, asn, org, banner, header, body, cname, icp, jarm, icon, fid, status_code, product
证书字段
cert, cert.sn, cert.not_after, cert.not_before, cert.domain, cert.subject.org, cert.subject.cn, cert.issuer.org, cert.issuer.cn, cert.is_valid, cert.is_match, cert.is_equal
TLS 字段
tls.version, tls.ja3s
在字段提示时输入 list 可查看全部字段。
⚙️ 配置变量 (脚本内)
变量 默认值 描述 CONCURRENT_THREADS 10 并行页请求数量 SIZE_DEFAULT 100 每页结果数(FOFA 允许的最大值) OUTPUT_DIR results 输出文件保存目录
📝 重要说明
· 脚本使用 en.fofa.info 作为 API 端点。 · 去重基于第一个字段的值(例如 IP 或域名),且不区分大小写。 · 长字符串(标题、横幅、响应头)在输出中会被截断,以便阅读。 · 如果你中断脚本(Ctrl+C),脚本会优雅退出。 · 脚本目前使用 Python 2 的 raw_input。若要使用 Python 3 运行,请将 raw_input 替换为 input,并调整 print 语句。
❗ 故障排除
问题 解决方案 API_KEY 未设置 编辑脚本并添加你的密钥。 无效字段 运行脚本并输入 list 查看允许的字段。 没有结果 检查你的 FOFA 查询语法和 API 额度。 ImportError: No module named requests 使用 pip install requests 安装 requests。 UnicodeEncodeError 脚本已处理 UTF‑8 编码;请确保你的终端支持它。
📄 许可证
MIT 许可证 – 可自由使用和修改,以满足你自己的侦察需求。 注意:FOFA API 的使用须遵守 FOFA 的服务条款。
🙌 致谢
专为 FOFA 搜索引擎构建——一个强大的物联网和资产搜索平台。
祝狩猎愉快!🔍