处理用户提供的 DNS 解析记录,逐条解析每条正常状态的记录,并输出 443 可用性、SSL 证书有效性和证书到期时间分析结果。适用于 腾讯云DNSPod 导出表、阿里云解析记录导出表、手工粘贴的解析记录表、可直接查询域名解析记录的skills等,对 A / CNAME 记录逐条解析并对解析出的 IP 做证书检查的场景。
在以下场景触发:
要求用户提供以下两类信息:
example.com
优先接受 UTF-8 的 TSV 文本。若用户直接把表格贴进对话,先将原始内容写入工作区文件,再调用脚本。若用户提供的是 .xlsx 文件,先读取目标工作表并导出为 UTF-8 TSV/CSV,再调用脚本。
确认输入中至少包含以下必填列:
主机记录
记录类型
记录值
记录状态
记录ID 不是必填列;没有这一列也可以执行分析,缺失时按空值处理。
线路类型 不是必填列;如果输入里带了这一列,也只保留原始数据,不参与解析决策。
需要更多格式细节时,读取 references/input-format.md。
调用脚本:scripts/analyze_dns_records.py
python "C:\path\to\dns-record-ssl-analyzer\scripts\analyze_dns_records.py" --input-file "C:\path\dns-records.tsv" --domain "example.com" --output-dir "C:\path\output"
如需锁定某个边缘节点直测,追加 --direct-endpoint fqdn=ip,可重复传入多个:
python "C:\path\to\dns-record-ssl-analyzer\scripts\analyze_dns_records.py" --input-file "C:\path\dns-records.tsv" --domain "example.com" --output-dir "C:\path\output" --direct-endpoint "edge.example.com=203.0.113.10"
优先使用 python3:
python3 "/path/to/dns-record-ssl-analyzer/scripts/analyze_dns_records.py" --input-file "/path/dns-records.tsv" --domain "example.com" --output-dir "/path/output"
锁定指定边缘节点直测:
python3 "/path/to/dns-record-ssl-analyzer/scripts/analyze_dns_records.py" --input-file "/path/dns-records.tsv" --domain "example.com" --output-dir "/path/output" --direct-endpoint "edge.example.com=203.0.113.10"
当用户只想核对某个 Host/IP,或需要解释脚本结果时,补充以下手工命令:
dig +short edge-target.example.com A
curl -svI --connect-timeout 5 --resolve "edge.example.com:443:203.0.113.10" "https://edge.example.com/" -o /dev/null
判定口径:必须成功完成 TLS/HTTPS 握手;不要把 ping 或单纯 nc 连通当成 443 正常。
echo | openssl s_client -connect 203.0.113.10:443 -servername edge.example.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates
判定口径:openssl 主要用于查看证书内容;证书链和域名匹配是否有效,仍以 curl --resolve https://... 的握手结果为准。
严格按以下规则解释结果:
记录状态 = 正常 的记录
A 记录:直接使用记录值中的 IP
CNAME 记录:直接解析记录值中的目标,并对解析出的每个最终 IP 单独测试
指定 Host+IP 直测:跳过 DNS 解析,直接使用用户给定的 fqdn=ip 做 HTTPS/TLS 检测
线路类型 如存在,只视为原始输入字段,不参与检测逻辑
NS/TXT 等非 A/CNAME 记录:跳过 443/SSL 检测,但保留在明细中
443端口是否打开:必须成功完成 TLS/HTTPS 握手
SSL证书是否有效:TLS 成功,且证书未过期、域名匹配、证书链无错误
SSL证书到期时间:使用 curl --resolve 锁定 Host 与目标 IP,并从 curl 返回的叶子证书读取 GMT 到期时间
读取脚本输出的 JSON 与 Markdown 报告,向用户汇报:
生成可直接查看的最终结果文件,并优先展示 Markdown 报告。
线路类型 列,不需要额外清洗,脚本会忽略该列。
curl %{certs} 输出里的证书到期字段可能写成 Expire date:;脚本已兼容 Expire date / Expire Date 两种大小写,避免把证书可读误判成 443 不可达。
curl 仍取不到证书到期时间,脚本会自动尝试使用 openssl s_client + openssl x509 -enddate 兜底解析;因此在 Linux / macOS 上建议同时具备 curl 与 openssl。
完成以下工作:
说明支持的输入格式、A / CNAME 解析规则和输出口径。
共 2 个版本