新闻详情

新闻详情

首页 / 资讯中心 / 详情

subfinder的crtsh数据源实现深度剖析:PostgreSQL直连+HTTP API双通道回退设计

发布时间:2026/9/19 22:28:59来源:尧图网络
subfinder的crtsh数据源实现深度剖析:PostgreSQL直连+HTTP API双通道回退设计
subfinder的crtsh数据源实现深度剖析PostgreSQL直连HTTP API双通道回退设计【免费下载链接】subfinderFast passive subdomain enumeration tool.项目地址: https://gitcode.com/gh_mirrors/su/subfindersubfinder是一款快速被动子域名枚举工具它通过聚合各类在线被动数据源无需发送任何探测流量即可挖掘出目标域名的有效子域名。本文将深入剖析其内置的crtsh数据源基于证书透明度日志 crt.sh为什么它要同时实现PostgreSQL 直连与HTTP API两条通道回退逻辑又是如何保证结果稳定性的一、先认识 subfinder 的数据源体系subfinder 采用高度模块化的架构每个数据源都是一个独立的 Go 包只要实现统一的Source接口见 pkg/subscraping/types.go就能被枚举引擎无缝接入。一个数据源需要回答几个核心问题接口方法作用Run拉取该源的子域名结果Name/IsDefault数据源名称是否默认启用HasRecursiveSupport是否支持递归查询子域名的子域名KeyRequirement是否需要 API Key无需/可选/必需crtsh 数据源的完整实现位于 pkg/subscraping/sources/crtsh/crtsh.go并被注册进全部 52 个数据源的清单中pkg/passive/sources.go。它的三个自我声明很关键默认启用IsDefault返回true无需 API KeyNoKey支持递归查询HasRecursiveSupport返回true因此能配合-recursive参数对已有子域名继续挖零配置即可工作是新手上手 subfinder 时的主力数据源二、双通道回退设计为什么要有两条路crt.sh 是全球最大的证书透明度Certificate Transparency查询服务所有公开签发的 TLS 证书都会记录在案因此是被动子域名挖掘的宝库。但它的官方入口只有 HTTP 接口查询量大、稳定性一般。聪明的做法是crt.sh 本身把证书数据暴露在公共 PostgreSQL 数据库库名certwatch上任何人都可以用只读账号guest直连查询。于是 subfinder 设计了SQL 优先、HTTP 兜底的双通道策略Run() ──▶ ① getSubdomainsFromSQLPostgreSQL 直连 │ 有结果── 是 ──▶ 直接返回省掉 HTTP 请求 │ 否 └──▶ ② getSubdomainsFromHTTPcrt.sh JSON API核心调度逻辑非常简洁crtsh.go先执行 SQL 查询只要返回了至少一条数据就立即结束只有 SQL 通道颗粒无收比如网络不通、数据库访问被限制时才会回落到 HTTP API 通道。三、通道一PostgreSQL 直连这是 crtsh 数据源最快的一条路实现了几个值得一提的工程细节crtsh.go1. 连接参数即防御连接串中把connect_timeout设为全局超时进入会话后再执行SET statement_timeout从建连到查询两个环节都锁死耗时上限防止慢查询拖垮整个枚举流程。2. 全文检索 模糊匹配双保险查询语句同时使用 PostgreSQL 的plainto_tsquery全文检索与ILIKE模糊匹配直接在certificate_and_identities表上取NAME_VALUE字段。注释中特别说明下游只需要NAME_VALUE所以不再去联表解析每个证书对象的 x509 结构——这是针对大查询的性能优化大幅降低了数据库侧的解析开销。3. 默认 10000 条上限如果没有指定-all参数该开关通过 context 透传见 pkg/runner/runner.goSQL 会自动追加LIMIT 10000。对于常见域名一万条证书记录通常已足够覆盖其子域名而大站点在默认模式下也能避免一次拉回百万行数据。四、通道二HTTP API 回退当 SQL 通道失败或无结果时回退逻辑crtsh.go会向 crt.sh 发起一次标准 JSON 查询请求格式https://crt.sh/?q%.域名outputjson即按任意前缀 域名模糊搜索响应是[{id, name_value}, ...]数组name_value中可能包含换行分隔的多个子域名一张证书可同时关联多个名称因此代码会逐行拆分处理走的是 subfinder 统一的Session.SimpleGet自动继承全局超时、代理与限速配置pkg/subscraping/agent.go两条通道殊途同归产出的都是subscraping.Result结果流通过 Go channel 异步交给上游互不阻塞。五、结果加工提取、去噪与统计无论结果来自哪条通道都会经过同一套流水线正则提取pkg/subscraping/extractor.go 按目标域名编译正则从原始文本中精准切出子域名并过滤掉形如foo.example.com.evil.org这类长主机名前缀的误报小写化与去重统一转小写后进入全局去重集合统计上报源结构体记录了errors/results/requests/timeTaken四项指标crtsh.gosubfinder 结束时会汇总展示各数据源的产出情况——如果 SQL 通道生效你会看到 crtsh 的requests计数为 0这正是双通道设计的直观证据六、快速上手只用 crtsh 数据源# 仅使用 crtsh 数据源枚举 subfinder -d example.com -s crtsh # 对已有子域名递归继续挖crtsh 支持递归 subfinder -d api.example.com -s crtsh -recursive # 使用全部数据源含更多源更慢 subfinder -d example.com -all七、小结维度PostgreSQL 直连HTTP API 回退速度⭐⭐⭐ 全文检索毫秒级⭐⭐ 受接口限流影响稳定性依赖网络能直连 DB更普适的兜底方案数据量默认 LIMIT 10000接口默认返回额外依赖无需 API Key无需 API Keycrtsh 数据源用一份不到 230 行的代码演示了一个数据源设计的教科书级思路主通道追求性能备用通道保证可用两条通道的产出统一收敛到同一个结果管道。这种双通道回退模式值得任何需要对接不稳定上游服务的开发者借鉴。 相关源码导航数据源实现pkg/subscraping/sources/crtsh/crtsh.go数据源接口定义pkg/subscraping/types.go全量数据源注册表pkg/passive/sources.goHTTP 会话与限速pkg/subscraping/agent.go子域名提取器pkg/subscraping/extractor.go【免费下载链接】subfinderFast passive subdomain enumeration tool.项目地址: https://gitcode.com/gh_mirrors/su/subfinder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

BrewUI:为Homebrew套上图形界面,让macOS包管理更直观 2026/9/19 23:20:07

BrewUI:为Homebrew套上图形界面,让macOS包管理更直观

提到 macOS 上的开发环境,Homebrew 是绕不开的一个词。装了它,装 Node、装 Redis、装各种命令行工具,基本就是一行 brew install 的事。但问题也出在这"一行命令"上——用久了你会发现,自己的终端里积累了一大堆不知道干…

阅读更多 →
Meteor 源码文档自动化:doctool.js 从 JS 注释生成 Markdown 文档的完整指南 2026/9/19 23:20:07

Meteor 源码文档自动化:doctool.js 从 JS 注释生成 Markdown 文档的完整指南

Meteor 源码文档自动化:doctool.js 从 JS 注释生成 Markdown 文档的完整指南 【免费下载链接】meteor Meteor, the JavaScript App Platform 项目地址: https://gitcode.com/gh_mirrors/me/meteor 导读 Meteor 仓库(Meteor, the JavaScript App …

阅读更多 →
2026年国内GitHub镜像站清单:加速clone、release下载与AI大模型部署 2026/9/19 23:20:07

2026年国内GitHub镜像站清单:加速clone、release下载与AI大模型部署

1. 为什么国内开发者需要一个靠谱的镜像站清单搞开发的人都有过这种体验:急着拉一个开源项目跑通验证,结果浏览器转了半天,最后甩给你一个连接超时的页面。尤其是做AI大模型本地部署、Docker镜像拉取、Python依赖安装这些活儿的时候&#xff…

阅读更多 →
BrewUI:Homebrew的SwiftUI原生图形界面 2026/9/19 23:20:07

BrewUI:Homebrew的SwiftUI原生图形界面

1. BrewUI:当Homebrew遇上SwiftUI,macOS终端工具终于有了“人样”你有没有在Mac上敲过几十遍brew install,只为装一个依赖?有没有盯着终端里滚动的编译日志发呆,等它跑完去干别的事,结果回来发现卡在某个co…

阅读更多 →
Hugo 模板函数 templates.Inner 详解:用 partial decorator 实现内容块注入与组合式布局 2026/9/19 23:20:07

Hugo 模板函数 templates.Inner 详解:用 partial decorator 实现内容块注入与组合式布局

Hugo 模板函数 templates.Inner 详解:用 partial decorator 实现内容块注入与组合式布局 【免费下载链接】hugo The world’s fastest framework for building websites. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo templates.Inner 是 Hugo 0.154.0…

阅读更多 →
地下管廊智能照明节能控制系统设备配置、场景应用解析 2026/9/19 23:17:06

地下管廊智能照明节能控制系统设备配置、场景应用解析

一、概述 地下管廊空间结构复杂,涵盖综合舱、电力舱、燃气舱、变电所、设备间、监控中心等多种功能区域,各区域对照明控制方式的要求各不相同。传统管廊照明多采用“常亮模式”,照明能耗占管廊总运营能耗的近四成,电费占运营费用三…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞