sdk/whois
b612.me/sdk/whois 是一个面向 Go 的域名信息查询 SDK,提供传统 WHOIS 与 RDAP 的统一查询入口。
功能概览
- 统一查询入口:
Lookup/LookupContext - 查询模式:
whois-only、rdap-only、auto-rdap、both-rdap、both-whois - 域名与 IP/ASN RDAP 查询
- RDAP Bootstrap(内置 + 本地覆盖 + 远程刷新)
- 结构化解析结果 + 原始返回数据
- 统一代理配置(RDAP + WHOIS)与协议级覆盖
- 上下文超时、重试、错误分类与质量元信息
安装
go get b612.me/sdk/whois
快速开始
package main
import (
"fmt"
"b612.me/sdk/whois"
)
func main() {
c := whois.NewClient()
res, meta, err := c.Lookup("example.com",
whois.WithLookupMode(whois.LookupModeAutoPreferRDAP),
)
if err != nil {
panic(err)
}
fmt.Println("source:", meta.Source)
fmt.Println("exists:", res.Exists())
fmt.Println("domain:", res.Domain())
fmt.Println("registrar:", res.Registrar())
}
查询模式说明
LookupModeWHOISOnly:仅 WHOISLookupModeRDAPOnly:仅 RDAPLookupModeAutoPreferRDAP:先 RDAP,失败时回退 WHOISLookupModeBothPreferRDAP:都查,合并结果,优先 RDAP 字段LookupModeBothPreferWHOIS:都查,合并结果,优先 WHOIS 字段
统一代理配置
从当前版本开始,支持统一代理配置:
WithLookupProxy(...):设置 RDAP + WHOIS 共享代理WithLookupRDAPProxy(...):仅覆盖 RDAP 代理WithLookupWHOISProxy(...):仅覆盖 WHOIS 代理WithLookupWHOISDialer(...):直接注入 WHOIS TCP Dialer(优先级最高)
优先级规则:
- RDAP:
RDAP.Proxy > Common.Proxy - WHOIS:
WHOIS.Dialer > WHOIS.Proxy > Common.Proxy
注意:
- WHOIS 是 TCP 协议,推荐/默认使用
socks5://代理 - 仅写
host:port时会自动按socks5://host:port处理 - WHOIS 不支持
http://代理;若传入会快速返回错误
示例:
res, meta, err := c.Lookup("example.com",
whois.WithLookupMode(whois.LookupModeAutoPreferRDAP),
whois.WithLookupProxy("socks5://127.0.0.1:1080"),
)
_ = res
_ = meta
_ = err
RDAP Bootstrap 更新
可使用 SDK 提供的方法刷新 RDAP Bootstrap 数据(示例):
_, err := whois.UpdateDefaultRDAPBootstrapFileFromURL(ctx, "rdap_dns.json")
if err != nil {
// handle error
}
测试
go test ./...
License
本项目使用 Apache License 2.0,详见 LICENSE 文件。
Description
v0.0.1
Latest
Languages
Go
100%