logiover/subdomain-finder

GitHub: logiover/subdomain-finder

通过 crt.sh 证书透明度日志实现无需 API key 的被动子域名枚举工具,适用于安全侦察、攻击面映射和资产盘点。

Stars: 0 | Forks: 0

# Subdomain Finder — 通过证书透明度 进行子域名枚举 [![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify&logoColor=white)](https://apify.com/logiover/subdomain-finder) [![无需 API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f)](https://apify.com/logiover/subdomain-finder) [![按结果付费](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6)](https://apify.com/logiover/subdomain-finder) [![被动模式](https://img.shields.io/badge/Method-Passive%20CT%20logs-0EA5E9)](https://apify.com/logiover/subdomain-finder) [![导出](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)](https://apify.com/logiover/subdomain-finder) ### ▶️ [在 Apify 上运行 Subdomain Finder](https://apify.com/logiover/subdomain-finder) 通过公共的 **证书透明度 日志**(经由 [crt.sh](https://crt.sh))发现**任何域名的所有已知子域名** —— 这是一种**被动子域名枚举**方式,完全不会触碰目标自身的基础设施。只需一个根域名,就能返回**成百上千个不重复的子域名**,每一行都清晰列出**子域名**、根**域名**、可直接使用的 **url**、**通配符**标记以及证书的 **firstSeen / lastSeen** 日期。**无需浏览器、无需 API key、无需登录、无需第三方账户。** 这是一款快速、低成本的**攻击面映射**与**子域名发现**工具,适用于安全侦察、Bug Bounty、OSINT 和资产盘点。由于它读取的是组织已经发布到公共 CT 日志中的主机名,它能发掘那些字典永远猜不到的、被遗忘的影子、测试和开发主机 —— 且对目标**零直接接触**。你可以一次性传入整个根域名列表,在单次运行中完成所有枚举,还可以选择仅保留当前存活的主机,并将完整的子域名列表导出为 CSV、JSON 或 Excel 格式。 ## 📊 输出内容(输出字段) 每个**不重复的子域名**占一行: | 字段 | 描述 | |---|---| | `subdomain` | 已发现的完全限定子域名(转换为小写,去除了开头的 `*.`) | | `domain` | 所属的根域名 | | `url` | 方便使用的 `https://` URL —— 可直接接入状态检测器或技术栈探测器 | | `isWildcard` | 如果该名称仅作为通配符证书(`*.x`)出现,则为 `true` | | `resolvable` | 启用存活过滤时为 `true` / `false`;否则为 `null` | | `firstSeen` | 该名称首次出现的证书生效日期(ISO 8601 格式,或为 `null`) | | `lastSeen` | 该名称最新出现的证书生效日期(ISO 8601 格式,或为 `null`) | | `discoveredAt` | 生成该行数据时的 ISO 8601 时间戳 | ## 💡 使用场景 - **安全侦察与渗透测试** — 在授权测试之前,无需探测目标即可映射出组织的完整外部**攻击面**。 - **Bug Bounty 与 OSINT** — 使用零直接接触的被动侦察方式枚举目标范围内的资产,然后将列表接入你的 pipeline。 - **攻击面管理** — 发掘你的团队可能已经遗忘了的、影子、测试或开发子域名。 - **资产发现与盘点** — 为你拥有或监控的任何域名构建并丰富完整的子域名清单。 - **SEO 与站点迁移** — 在重新设计或迁移前后,找到可能托管可索引内容的所有子域名。 - **品牌与威胁监控** — 通过 `firstSeen` 追踪子域名随时间的出现情况,捕捉新增或异常的主机名。 - **持续监控** — 定期重新运行,以便在签发新证书时捕捉到新的主机。 ## 🚀 快速开始 有四种运行方式 —— 全部调用托管的 Actor,无需在本地运行。 ### 1) Apify Console(无需代码) 1. 打开 Actor:**[apify.com/logiover/subdomain-finder](https://apify.com/logiover/subdomain-finder)**。 2. 点击 **Try for free**。 3. 输入一个或多个**根域名**(纯域名,例如 `apify.com`),然后点击 **Start**。 4. 打开 **Output** 标签页,将子域名列表导出为 CSV、JSON 或 Excel。 ### 2) Apify CLI ``` npm i -g apify-cli apify login apify call logiover/subdomain-finder --input '{ "domains": ["apify.com"] }' ``` ### 3) REST API (curl) ``` curl -X POST \ "https://api.apify.com/v2/acts/logiover~subdomain-finder/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "domains": ["apify.com", "example.com"], "maxResults": 2000 }' ``` ### 4) apify-client (JavaScript & Python) ``` import { ApifyClient } from 'apify-client'; const client = new ApifyClient({ token: 'YOUR_API_TOKEN' }); const run = await client.actor('logiover/subdomain-finder').call({ domains: ['apify.com'], onlyResolvable: true }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); console.log(items.map((s) => s.url)); ``` ``` from apify_client import ApifyClient client = ApifyClient("YOUR_API_TOKEN") run = client.actor("logiover/subdomain-finder").call(run_input={"domains": ["apify.com"]}) for s in client.dataset(run["defaultDatasetId"]).iterate_items(): print(s["subdomain"]) ``` 更多详细代码片段:**[examples/cli.md](examples/cli.md)** · **[examples/api-curl.md](examples/api-curl.md)** · **[examples/javascript.md](examples/javascript.md)** · **[examples/python.md](examples/python.md)** ## ⚙️ 输入参数 在 `domains` 中至少为 Actor 提供一个根域名。其他参数均为可选。 | 字段 | 类型 | 默认值 | 描述 | |---|---|---|---| | `domains` | array | `["apify.com"]` | 要枚举的根域名(例如 `apify.com`、`google.com`)。**不要**包含 `http://` 或路径 | | `includeWildcards` | boolean | `false` | 保留仅作为通配符证书(`*.x`)出现的名称,并将其标记为 `isWildcard: true`。无论是否保留,开头的 `*.` 都会被去除 | | `onlyResolvable` | boolean | `false` | 如果为 `true`,会对每个子域名进行 DNS 查询,仅保留当前存活的主机。速度较慢 —— 默认关闭 | | `sortBy` | string (下拉菜单) | `name` | 对结果进行排序:`name` (A–Z)、`firstSeen`(最新证书优先)、`lastSeen`(最新证书优先) | | `maxResults` | integer | `0` | **每个根域名**最多获取的不重复子域名数量。`0` = 不限制 | | `proxyConfiguration` | object | Apify Proxy(自动) | Proxy 配置(已提供默认设置) | **示例 —— 对多个目标进行批量侦察:** ``` { "domains": ["apify.com", "google.com", "cloudflare.com"], "includeWildcards": true, "maxResults": 5000 } ``` ## 📤 输出 结果存储在 Apify 数据集中(每个不重复的子域名占一行),可导出为 CSV、JSON、JSONL、Excel 或 XML,或通过 API 获取。 **数据条目示例:** ``` { "subdomain": "affiliate.apify.com", "domain": "apify.com", "url": "https://affiliate.apify.com", "isWildcard": false, "resolvable": null, "firstSeen": "2025-06-03T07:47:43", "lastSeen": "2026-09-07T01:14:59", "discoveredAt": "2026-07-06T12:00:00.000Z" } ``` ## 🔗 集成与自动化 - **定时任务** — 每日或每周重新枚举你的域名,并在签发证书时捕捉新的子域名。 - **Webhooks** — 在运行完成时向你的 endpoint 或 Slack 发送 POST 请求(例如,对最新发现的主机发出警报)。 - **Google Sheets** — 每次运行后自动将子域名清单同步到电子表格。 - **Zapier / Make / n8n / Pipedream** — 将最新的子域名列表直接接入你的侦察或资产管理工作流。 - **Apify API** — 从你自己的后端启动运行并拉取数据集,然后接入状态检测器或技术栈探测器。 ## 📁 导出格式 CSV · JSON · JSONL · Excel (XLSX) · XML — 在控制台中一键导出,或者在 API 数据集 URL 中附加 `&format=csv`。使用 `&fields=subdomain&skipHeaderRow=1` 可以获取纯净的主机列表,每行一个。 ## ❓ 常见问题解答 ### Subdomain Finder 需要 API key 或登录吗? 不需要。它不需要 API key、无需登录,也不需要任何第三方凭证 —— 只需要一个 Apify 账户。它读取的是组织已经发布到公共证书透明度 日志中的主机名。 ### 这是 crt.sh / CT-log API 的替代方案吗? 是的。它可以作为可靠的 **crt.sh / CT-log API 替代方案**:它会查询证书透明度 日志,清理并去重每一个证书主机名,然后返回结构化的数据行,包含可直接使用的 `url`、通配符标记以及首次/最新出现的日期 —— 无需你自己去构建 endpoint 请求。 ### 通过证书透明度 进行子域名枚举合法吗? 该 Actor 仅读取组织已经发布到公共 CT 日志中的主机名 —— 不会与目标的基础设施发生任何接触。你有责任遵守 crt.sh 的条款和适用法律,并确保只对自己拥有或被授权评估的域名进行枚举。 ### 这与 DNS 暴力破解工具有什么不同? 暴力破解工具是通过字典猜测名称,并主动查询目标的 DNS。而这款工具是**被动的**:它读取的是组织已经发布到公共 CT 日志中的名称,因此绝不会触碰目标 —— 而且它往往能发掘出字典根本猜不到的主机。为了实现完全覆盖,建议将被动 CT 枚举与主动工具结合使用。 ### 它能找到多级子域名和通配符域名吗? 可以。证书中出现的任何深度的主机名(例如 `dev.api.example.com`)都会被返回。通配符证书(`*.example.com`)的开头 `*.` 总是会被去除;启用**包含通配符条目**选项,即可同时保留那些仅以通配符形式出现的名称,并标记为 `isWildcard: true`。 ### 为什么有些子域名无法访问? CT 日志是历史性的 —— 某张证书可能是为主机签发的,但该主机现在已经无法解析了。启用 **Only Resolvable** 即可运行 DNS 检查,仅保留当前可以解析的子域名,相关状态会记录在 `resolvable` 字段中。 ### 我能获取多少个子域名? 这完全取决于目标本身。小型站点可能只返回寥寥几个名称;大型组织则会返回**成百上千个**不重复的子域名。除非你设置了**每个域名的最大结果数**,否则没有硬性上限。 ### 我可以一次性枚举多个域名吗? 可以。在 `domains` 中传入一整个根域名列表,Actor 就会在一次运行中全部完成枚举,每个不重复的子域名占独立的一行。 ### 如何将子域名导出为 CSV 或纯主机列表? 打开运行结果的 **Output** 标签页,点击 **Export → CSV**(或 XLSX/JSON)。如果只需获取纯主机列表,请仅请求 `subdomain` 列 —— 具体参见[示例](examples/api-curl.md)。 ### 我该如何为 Bug Bounty 目标枚举子域名? 输入范围内的根域名,该 Actor 就会被动地从证书透明度 日志中提取所有主机名,在无需触碰目标的情况下为你提供一份资产列表。然后,将 `url` 列接入状态检测器或技术栈探测器,以优先确定存活的主机。 ## 🧩 logiover 的相关 Actor - **[Certificate Transparency Monitor](https://apify.com/logiover/certificate-transparency-monitor)** — 随时间追踪某个域名新签发的 TLS 证书。 - **[Website Tech Stack Detector](https://apify.com/logiover/website-tech-stack-detector)** — 检测主机运行的框架、CMS 和服务器(可将 `url` 列直接传给它)。 浏览完整的安全与侦察套件以及 180 多个 Actor:**[apify.com/logiover](https://apify.com/logiover)**。 📄 **仅限文档** — 本仓库不包含爬虫源代码。该 Actor 运行在 Apify 平台上。 ▶️ **运行地址:** [https://apify.com/logiover/subdomain-finder](https://apify.com/logiover/subdomain-finder) 基于 [MIT License](LICENSE) 授权 · © 2026 logiover
标签:Apify, ESC4, GitHub, OSINT, TShark, 子域名枚举, 实时处理, 攻击面映射, 数据可视化, 系统安全, 证书透明度, 逆向工具