dnsight/dnsight

GitHub: dnsight/dnsight

DNSight 是一个用于审计 DNS 和电子邮件安全配置的 Python SDK 和 CLI 工具,以提升域名安全性和合规性。

Stars: 12 | Forks: 0

# ly known as "SDK" or "软件开发工具包", but in technical documents, "SDK" is often used. | | | | :--- | :--- | | **质量** | [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1805c03f81215741.svg)](https://github.com/dnsight/dnsight/actions/workflows/ci.yaml) [![codecov](https://codecov.io/github/dnsight/dnsight/graph/badge.svg?token=B4BKEX1G8O)](https://codecov.io/github/dnsight/dnsight) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=dnsight_dnsight&metric=alert_status&token=479932a2a9cce01e25841c72ae83c300d5534029)](https://sonarcloud.io/summary/new_code?id=dnsight_dnsight) | | **包** | [![PyPI](https://img.shields.io/pypi/v/dnsight.svg)](https://pypi.org/project/dnsight/) [![Python](https://img.shields.io/pypi/pyversions/dnsight.svg)](https://pypi.org/project/dnsight/) ![PyPI - 每周下载量](https://img.shields.io/pypi/dw/dnsight) ![PyPI - 每月下载量](https://img.shields.io/pypi/dm/dnsight) | | **元数据** | [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![文档](https://img.shields.io/badge/docs-site-blue)](https://dnsight.github.io/dnsight/) | | **技术栈** | [![uv](https://img.shields.io/badge/uv-black?logo=uv)](https://docs.astral.sh/uv/) [![Ruff](https://img.shields.io/badge/ruff-black?logo=ruff)](https://docs.astral.sh/ruff/) [![just](https://img.shields.io/badge/just-black?logo=just)](https://just.systems/) [![SonarCloud](https://img.shields.io/badge/SonarCloud-126ED3?logo=sonarcloud)](https://sonarcloud.io) [![Aikido](https://img.shields.io/badge/Aikido%20Security-645DD7)](https://aikido.dev/) | | **讨论** | [![路线图](https://img.shields.io/badge/Roadmap-purple?logo=github)](https://github.com/dnsight/dnsight/discussions/18) [![想法](https://img.shields.io/badge/Ideas-brightgreen?logo=github)](https://github.com/dnsight/dnsight/discussions/19) | **dnsight** 是一个用于审计 DNS、电子邮件认证(SPF、DKIM、DMARC)及相关信号的 Python SDK 和 CLI。您可以从命令行使用它,也可以将其导入到您自己的工具中。 **Python:** 支持 **3.11+**。如果您正在参与项目开发或想与维护者日常使用的版本保持一致,请使用 **3.14**(这也是我们默认 CI 设置的目标版本)。我们针对 3.11 到 3.14 进行测试。 ## 安装 同一个包既提供了 **`dnsight`** 命令,也提供了可导入的 API。您可以按任何喜欢的方式安装: ``` pip install dnsight uv add dnsight # in a project uv tool install dnsight # standalone tool env pipx install dnsight # optional: isolated CLI app ``` ## 快速入门(CLI) ``` dnsight --help dnsight audit example.com dnsight config example > dnsight.yaml dnsight dmarc generate ``` 全局标志(例如输出格式)位于根命令上——尝试 `dnsight --help` 来查看诸如 `--format` 这样的选项。 ### 日志(CLI) 诊断信息通过 `dnsight` 记录器输出到 **stderr**,使用 **Rich**(级别着色、可选路径和回溯)。审计 **结果在 stdout 上不受** `--quiet` 影响;quiet 只是提高了日志阈值,使 INFO/DEBUG 行消失。 | 标志 | 效果 | | --- | --- | | *(默认)* | INFO 日志,紧凑行(`message · logger.name`) | | `--quiet` / `-q` | 仅在 stderr 上显示 ERROR | | `--verbose` / `-v` | DEBUG,显示调用路径,错误时显示 Rich 回溯 | 如果同时传递了 `--quiet` 和 `--verbose`,**`--quiet` 优先**。 **库使用:** 当您需要可见的日志时,从 `dnsight.core` 调用 `configure()`。关键字选项包括 `detailed_log=True`(在纯文本模式下包含文件/行号或在 Rich 模式下包含路径列),`use_rich=True` 用于彩色输出,`rich_tracebacks=True` 用于异常格式化,以及 `format_string=...` 用于完全自定义的 `logging.Formatter` 布局(这会强制使用纯文本 stderr 流处理器)。 ## 命令 除了 **`version`**、**`docs`**(打印文档站点 URL)、**`audit`** 和 **`config`** 之外,每个检查项都有一个组:**`caa`**、**`dkim`**、**`dmarc`**、**`dnssec`**、**`headers`**、**`mx`**、**`spf`**。传入域名(或依赖配置中的清单模式)来运行检查;一些组添加了 **`generate`** 子命令用于记录输出。请查看 `dnsight --help` 和 `dnsight --help` 了解确切格式。 ## 输出格式 `-f` / `--format` 接受 **rich**(默认)、**json**、**sarif** 或 **markdown**。使用 `-o` / `--output` 将输出写入文件而不是标准输出。 ## Shell 补全 Typer 可以生成补全脚本:`dnsight --install-completion`(如果您只是想查看,则使用 `--show-completion`)。如果您正在修改仓库,`tools/dnsight-completion.zsh` 是一个适用于 zsh 的小型辅助工具。 ## The instruction says "keep in their original English form," so I should keep them as "dnsight" and "SDK". ``` from dnsight import run_check_sync, run_domain_sync audit = run_domain_sync("example.com") print(audit.critical_count, audit.partial) dmarc = run_check_sync("dmarc", "example.com") print(dmarc.passed, len(dmarc.issues)) ``` ## 开发 dnsight 您需要 **[uv](https://docs.astral.sh/uv/)**(我们期望至少 **0.10.7**)和 **[just](https://just.systems/)**。**Python 3.14** 是本地开发的舒适默认版本。 ``` just install # editable install + dev deps just pre-install # pre-commit hooks just check && just test ``` Ruff、mypy 等工具来自开发依赖组——您不需要全局安装它们。流程和期望:[CONTRIBUTING.md](CONTRIBUTING.md)。面向代理和贡献者的架构说明:[AGENTS.md](AGENTS.md)。 ## 文档 **MkDocs** 站点(配置指南、CLI 参考、API 存根)从 **`docs/`** 构建,并在推送到 **`main`** 分支时发布到 **GitHub Pages**([工作流](https://github.com/dnsight/dnsight/actions/workflows/documentation-pages.yaml))。公开 URL 是 **`https://dnsight.github.io/dnsight/`**(参见 `mkdocs.yml` 中的 `site_url`)。首次启用托管时,仓库必须使用 **Settings → Pages → Source: GitHub Actions**。 **本地预览:** 安装文档依赖组,然后启动服务(编辑时实时重载): ``` uv sync --group docs # or: just install # includes all groups just docs-serve # http://127.0.0.1:8000 ``` 使用 **`just docs-build`** 进行严格的、类似生产环境的构建。更改 CLI 树后,运行 **`just docs-generate`** 并提交 **`docs/cli/`** 下的所有内容;[CI](https://github.com/dnsight/dnsight/actions/workflows/ci.yaml) 中的 **文档** 作业会检查该树是否保持同步,并运行 **`mkdocs build --strict`**。 此 README、**AGENTS.md** 和代码仍然是日常行为真相的来源;站点在有用的地方进行总结和提供外部链接。 ## 贡献 有关设置、常规提交和发布说明,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。发布版本:[GitHub Releases](https://github.com/dnsight/dnsight/releases)。安全问题:[SECURITY.md](SECURITY.md)。 ## 许可证 MIT
标签:DKIM审计, DMARC审计, DNS安全, Linux安全, Python SDK, SOC Prime, SPF审计, URL发现, Web安全卫生, 二进制发布, 信号分析, 内核驱动, 命令行界面, 域名安全, 安全合规, 安全扫描, 安全检测, 开发工具, 开源工具, 时序注入, 电子邮件安全, 网络代理, 网络协议, 网络安全, 逆向工具, 邮件安全, 配置检查, 隐私保护