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.
| | |
| :--- | :--- |
| **质量** | [](https://github.com/dnsight/dnsight/actions/workflows/ci.yaml) [](https://codecov.io/github/dnsight/dnsight) [](https://sonarcloud.io/summary/new_code?id=dnsight_dnsight) |
| **包** | [](https://pypi.org/project/dnsight/) [](https://pypi.org/project/dnsight/)   |
| **元数据** | [](LICENSE) [](https://dnsight.github.io/dnsight/) |
| **技术栈** | [](https://docs.astral.sh/uv/) [](https://docs.astral.sh/ruff/) [](https://just.systems/) [](https://sonarcloud.io) [](https://aikido.dev/) |
| **讨论** | [](https://github.com/dnsight/dnsight/discussions/18) [](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安全卫生, 二进制发布, 信号分析, 内核驱动, 命令行界面, 域名安全, 安全合规, 安全扫描, 安全检测, 开发工具, 开源工具, 时序注入, 电子邮件安全, 网络代理, 网络协议, 网络安全, 逆向工具, 邮件安全, 配置检查, 隐私保护