2026-03-19 11:53:07 +08:00
2024-08-16 21:30:27 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00
2026-03-19 11:53:07 +08:00

sdk/whois

b612.me/sdk/whois 是一个面向 Go 的域名信息查询 SDK提供传统 WHOIS 与 RDAP 的统一查询入口。

功能概览

  • 统一查询入口:Lookup / LookupContext
  • 查询模式:whois-onlyrdap-onlyauto-rdapboth-rdapboth-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:仅 WHOIS
  • LookupModeRDAPOnly:仅 RDAP
  • LookupModeAutoPreferRDAP:先 RDAP失败时回退 WHOIS
  • LookupModeBothPreferRDAP:都查,合并结果,优先 RDAP 字段
  • LookupModeBothPreferWHOIS:都查,合并结果,优先 WHOIS 字段

统一代理配置

从当前版本开始,支持统一代理配置:

  • WithLookupProxy(...):设置 RDAP + WHOIS 共享代理
  • WithLookupRDAPProxy(...):仅覆盖 RDAP 代理
  • WithLookupWHOISProxy(...):仅覆盖 WHOIS 代理
  • WithLookupWHOISDialer(...):直接注入 WHOIS TCP Dialer优先级最高

优先级规则:

  • RDAPRDAP.Proxy > Common.Proxy
  • WHOISWHOIS.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
No description provided
Readme Apache-2.0 115 KiB
v0.0.1 Latest
2026-03-19 11:54:39 +08:00
Languages
Go 100%