自动化与脚本
需要查询域名/IP的 WHOIS、DNS、邮件、TLS…
用 quien 进行交互式 TUI 或 JSON 脚本化的域名、IP、DNS、邮件配置、SSL/TLS、HTTP 头和技术栈查询。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要查询域名/IP的 WHOIS、DNS特定
解决思路
- 通过 Homebrew 安装(macOS/Linux):先运行 `brew tap retlehs/tap`,再运行 `brew install retlehs/tap/quien`。
- 通过 Ubuntu/Debian 安装:运行 `curl -fsSL https://apt.quien.dev/install.sh | sudo sh`。
- 通过 Go 安装:运行 `go install github.com/retlehs/quien@latest`。
- 验证安装:运行 `quien --version`。
- 可选替换系统 whois:在 `~/.bashrc` 或 `~/.zshrc` 中添加 `alias whois=quien`。
- 启动交互式 TUI:直接运行 `quien`。
- 为指定域名打开 TUI:运行 `quien example.com`。
- 为指定 IP 打开 TUI:运行 `quien 8.8.8.8`。
- 获取域名所有标签的 JSON 输出:运行 `quien --json example.com`。
- 使用子命令获取 JSON 输出:`quien dns example.com`、`quien mail example.com`、`quien tls example.com`、`quien http example.com`、`quien stack example.com`。
- 获取所有数据为单个 JSON 对象:运行 `quien all example.com`。
- 在 TUI 的 WHOIS 标签查看 RDAP 优先的注册数据、注册商、日期、名称服务器。
- 在 TUI 的 DNS 标签查看 A、AAAA、MX、TXT、NS、CNAME、SOA 记录。
- 在 TUI 的 Mail 标签查看 MX、SPF、DMARC、DKIM、BIMI + VMC 链验证。
- 在 TUI 的 TLS 标签查看证书链、有效期、SAN、加密套件信息。
- 在 TUI 的 HTTP 标签查看响应头、重定向、状态码。
- 在 TUI 的 Stack 标签查看 WordPress 插件、JS/CSS 框架、外部服务。
- 在 TUI 的 IP 标签查看反向 DNS、网络信息、滥用联系人、通过 RDAP/BGP 获取 ASN。
- 查询 DNS 记录:运行 `quien dns github.com`,输出 JSON 包含 domain、a、aaaa、mx、ns、txt 等。
- 审计邮件配置:运行 `quien mail example.com`,返回 SPF 记录、DMARC 策略、发现的 DKIM selector、BIMI 记录、VMC 证书链验证。
- 检查 TLS/SSL:运行 `quien tls example.com`,返回证书 subject、issuer、有效期、SAN、链深度、协议版本、加密套件。
- 检查 HTTP 头:运行 `quien http example.com`,返回状态码、重定向链、所有响应头(Content-Security-Policy、HSTS、X-Frame-Options 等)。
- 检测技术栈:运行 `quien stack example.com`,解析 HTML 得到 WordPress 版本+活动插件、JavaScript 框架(React、Vue、Angular、Next.js 等)、CSS 框架(Tailwind、Bootstrap 等)、外部服务(分析、CDN、支付提供商)。
- 查询 IP:运行 `quien 8.8.8.8` 或 `quien --json 8.8.8.8`,返回反向 DNS(PTR)、RDAP 网络块信息、滥用联系人、Origin ASN + prefix(RDAP 回退 BGP)、PeeringDB 丰富信息(组织、对等策略、IX/设施数量、流量概况、对等位置)。
- 用 jq 从全量 JSON 中提取:`quien all example.com | jq '.dns.a'`、`quien all example.com | jq '.mail.spf'`、`quien all example.com | jq '.tls.valid_until'`。
- 用 jq 管道处理 JSON:获取所有 A 记录 `quien dns example.com | jq '.a[]'`。
- 用 jq 检查 DMARC 策略是否为 reject:`quien mail example.com | jq '.dmarc.policy == "reject"'`。
- 用 jq 获取证书到期时间:`quien tls example.com | jq '.certificates[0].not_after'`。
- 用 jq 列出检测到的 JS 框架:`quien stack example.com | jq '.javascript_frameworks[]'`。
- 用 jq 获取 IP 的 ASN 编号:`quien --json 1.1.1.1 | jq '.asn.number'`。
- 批量域名审计 shell 脚本:定义 `domains=("example.com" "github.com" "golang.org")`,循环每个域名,用 `quien mail "$domain" | jq -r '.spf.record // "MISSING"'` 获取 SPF,用 `quien mail "$domain" | jq -r '.dmarc.policy // "MISSING"'` 获取 DMARC,用 `quien tls "$domain" | jq -r '.certificates[0].not_after // "N/A"'` 获取 TLS 到期,并输出。
- 检查域名过期 shell 脚本:运行 `quien --json "$DOMAIN" | jq -r '.whois.expires // .rdap.expires // empty'`,若结果为空则报错退出。
- Go 集成:将 quien 作为子进程运行,定义 DNSResult 结构体,使用 `exec.Command("quien", "dns", domain).Output()` 获取输出并用 `json.Unmarshal` 解析。
- Go 集成完整审计:定义 FullAudit 结构体,使用 `exec.Command("quien", "all", domain).Output()` 获取输出并解析 JSON。
- 安装为 AI agent skill:运行 `npx skills add retlehs/quien`。
- 依赖 RDAP-first 行为:quien 先使用 RDAP 协议,再回退到原始 WHOIS,通过 IANA referral 获得更广 TLD 覆盖。
- 依赖自动重试行为:所有网络查询使用指数退避,瞬时失败自动重试。
- 依赖 BGP 回退行为:如果 RDAP 未返回 IP 的 ASN 数据,quien 查询 BGP 路由表获取 Origin ASN/prefix。
- 依赖 PeeringDB 丰富行为:ASN 查询会附加 PeeringDB 数据(对等策略、IX 存在、流量概况)。
- 依赖 VMC 验证行为:BIMI 查询验证完整 VMC 证书链,而不仅是记录存在。
- 依赖技术栈从 HTML 检测行为:Stack 检测会获取并解析目标实际 HTML,而不仅是 HTTP 头。
- 排错 `quien: command not found`:如果通过 go install 安装,确保 GOPATH/bin 在 PATH 中:`export PATH="$PATH:$(go env GOPATH)/bin"`。
- 排错 TUI 渲染不正确:确保终端支持 true color 和 UTF-8,`echo $TERM` 应为 xterm-256color 等,`echo $LANG` 应包含 UTF-8。
- 排错限流/查询失败:RDAP 和 WHOIS 服务器可能限流,quien 自动退避重试;批量脚本中在调用之间添加 `sleep 1` 以避免命中限流。
- 排错无 DKIM 结果:DKIM 需要知道 selector;quien 探测常见 selector(google、default、mail 等),但自定义 selector 不会自动发现。
- 排错 IP 查询无 ASN:某些 IP 块不在 RDAP 中;quien 回退到 BGP;若都失败,可能未路由或私有。
- 排错 JSON 输出为空/格式错误:确认子命令语法——子命令总是输出 JSON;`quien dns example.com` 正确,`quien --json dns example.com` 错误,`--json` 仅用于顶层。
适用边界 · 注意事项
- 未安装 quien 且无法安装该 CLI 工具的环境。
- 需要自动发现自定义 DKIM selector 的场景,quien 只会探测常见 selector。
- 无法访问 RDAP、WHOIS、BGP 或 PeeringDB 等外部服务的受限网络环境。