Whois 域名查询
基于 IANA RDAP 协议 · 域名注册商 / 创建日期 / 到期日 / DNS 服务器 / 状态
直连 whois 服务器(不依赖 API)
基于 IANA RDAP 协议 · 域名注册商 / 创建日期 / 到期日 / DNS 服务器 / 状态
RDAP(Registration Data Access Protocol,RFC 7480-7485)是 ICANN 推出的 WHOIS 替代协议,返回 JSON 结构化数据,支持 CORS,可在浏览器直接调用。
隐私保护:GDPR 生效后多数 .com / .net 域名注册人信息已 redact。仅显示注册商 / 状态 / 日期等公开数据。
支持 TLD:.com / .net / .org / .info / .io / .cn / .top 等绝大多数顶级域。.cn 域名信息可能精简(CNNIC 政策)。
了解工具定位 · 使用场景 · 对比优势
输入域名,直连上游 Whois 服务器获取原始注册信息,不依赖任何第三方 API。域名投资者验证过期时间、安全分析师排查恶意注册、站长核对续费状态,结果秒回。查询由服务端处理,不缓存或记录查询内容。
域名投资人发现一个即将过期的优质双拼域名,想抢注前确认其真实状态。直接输入域名,工具直连 whois 服务器返回注册日期、到期日期、域名状态(如 pendingDelete / redemptionPeriod),比第三方抢注平台的信息更实时,避免因缓存数据错过抢注窗口。
安全运维人员收到钓鱼邮件,发件域名疑似仿冒。输入域名查询 whois,获取注册人邮箱、注册商、创建时间,与已知恶意域名库交叉比对。直连 whois 服务器不依赖 API,避免第三方接口被屏蔽或限速,在应急响应中快速锁定域名归属。
法务人员发现某新注册的域名与公司商标高度相似(如 brand-name.com vs brand-name.net)。输入域名查询 whois,获取注册人信息、注册日期、域名服务器,作为商标争议的初步证据。直连 whois 服务器返回原始数据,比聚合平台更完整,避免因隐私保护被截断。
买家看中一个二手域名,卖家报价 5 万。输入域名查询 whois,查看注册历史(创建时间、最近续费时间、域名状态),判断域名是否刚过期被抢注、是否存在争议(如 pendingTransfer)。直连 whois 服务器获取权威状态码,避免被卖家隐瞒域名冻结或仲裁风险。
运维工程师配置域名解析后,发现部分区域访问异常。输入域名查询 whois,获取域名服务器(name server)列表,与 DNS 解析记录比对,确认 NS 记录是否已生效。直连 whois 服务器比 DNS 缓存更快返回最新 NS 变更,加速排障。
| 维度 | 本工具 | 竞品 A (whois.com) | 传统方法 (命令行) |
|---|---|---|---|
| 数据隐私 | 直连 whois 服务器,查询请求不经过第三方中间服务器 | 查询请求经过 whois.com 服务器,其可记录日志 | 本地执行,数据不离开本机,隐私性最高 |
| 处理速度 | 1-3 秒 (取决于 whois 服务器响应) | 3-8 秒 (含中间层转发延迟) | 1-3 秒 (取决于 whois 服务器响应) |
| 离线可用 | 不可用,需联网 | 不可用,需联网 | 可用 (需提前安装 whois 客户端) |
| 操作门槛 | 零门槛,浏览器打开即用 | 零门槛,浏览器打开即用 | 需掌握命令行操作,安装 whois 客户端 |
| 结果可读性 | 格式化展示,关键字段高亮 | 格式化展示,信息较完整 | 原始文本输出,需自行解析 |
| 批量查询 | 不支持,单次查询一个域名 | 不支持,单次查询一个域名 | 支持 (通过脚本循环调用) |
| 平台依赖 | 跨平台 (任何有浏览器的设备) | 跨平台 (任何有浏览器的设备) | 依赖操作系统 (需安装对应客户端) |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| example.com | Domain Name: EXAMPLE.COM Registry Domain ID: 2336799_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.iana.org Registrar URL: http://res-dom.iana.org Updated Date: 2024-08-14T07:02:54Z Creation Date: 1995-08-14T04:00:00Z Registry Expiry Date: 2025-08-13T04:00:00Z Registrar: RESERVED-Internet Assigned Numbers Authority Registrar IANA ID: 376 Registrar Abuse Contact Email: abuse@iana.org Registrar Abuse Contact Phone: +1.3103015820 Domain Status: clientDeleteProhibited Domain Status: clientTransferProhibited Domain Status: clientUpdateProhibited Name Server: A.IANA-SERVERS.NET Name Server: B.IANA-SERVERS.NET DNSSEC: signedDelegation DNSSEC DS Data: 31589 13 1 B0B1C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B8 URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/ | 典型场景:查询常见顶级域名(.com) |
| google.cn | Domain Name: google.cn ROID: 20030311s10001s00022245-cn Domain Status: clientTransferProhibited Registrant: 北京谷翔信息技术有限公司 Registrant Contact Email: dns-admin@google.com Sponsoring Registrar: 北京新网数码信息技术有限公司 Name Server: ns1.google.com Name Server: ns2.google.com Name Server: ns3.google.com Name Server: ns4.google.com Registration Time: 2003-03-11 10:00:00 Expiration Time: 2026-03-11 10:00:00 DNSSEC: unsigned | 典型场景:查询中国国家顶级域名(.cn) |
| 192.168.1.1 | % This is the RIPE Database query service. % The objects are in RPSL format. % % The RIPE Database is subject to Terms and Conditions. % See http://www.ripe.net/db/support/db-terms-conditions.pdf inetnum: 192.168.0.0 - 192.168.255.255 netname: IANA-BLK descr: Private IPv4 address space (RFC 1918) country: EU org: ORG-IANA1-RIPE admin-c: IANA1-RIPE tech-c: IANA1-RIPE status: ALLOCATED UNSPECIFIED mnt-by: RIPE-NCC-HM-MNT created: 2002-08-14T14:00:00Z last-modified: 2024-11-18T09:23:45Z source: RIPE | 边界 case:查询私有 IP 地址(RFC 1918) |
| 8.8.8.8 | NetRange: 8.0.0.0 - 8.255.255.255 CIDR: 8.0.0.0/8 NetName: LVLT-ORG-8-8 NetHandle: NET-8-0-0-0-1 Parent: NET8 (NET-8-0-0-0-0) NetType: Direct Allocation Organization: Level 3 Parent, LLC (LPL-141) RegDate: 1992-12-01 Updated: 2024-10-15 Ref: https://whois.arin.net/rest/net/NET-8-0-0-0-1 OrgName: Level 3 Parent, LLC OrgId: LPL-141 Address: 100 CenturyLink Drive City: Monroe StateProv: LA PostalCode: 71203 Country: US RegDate: 1998-09-15 Updated: 2024-10-15 Ref: https://whois.arin.net/rest/org/LPL-141 OrgAbuseHandle: LAC56-ARIN OrgAbuseName: L3 Abuse Contact OrgAbusePhone: +1-877-453-8353 OrgAbuseEmail: abuse@level3.com OrgAbuseRef: https://whois.arin.net/rest/poc/LAC56-ARIN OrgTechHandle: IPADD-ARIN OrgTechName: IP Address Management OrgTechPhone: +1-877-453-8353 OrgTechEmail: ipadd@level3.com OrgTechRef: https://whois.arin.net/rest/poc/IPADD-ARIN | 典型场景:查询知名公共 DNS 服务器 IP |
| subdomain.example.com | % No entries found for the selected source(s). % The query may have returned no results because: % - The domain is not registered % - The WHOIS server does not support subdomain queries % - The domain name contains invalid characters % Please try querying the parent domain (example.com) instead. | 易错 case:用户误输入子域名而非根域名 |
| xn--mgba3a4f16a.com | Domain Name: XN--MGBA3A4F16A.COM Registry Domain ID: 1616515831_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.godaddy.com Registrar URL: http://www.godaddy.com Updated Date: 2024-06-15T10:30:00Z Creation Date: 2010-09-20T14:00:00Z Registry Expiry Date: 2025-09-20T14:00:00Z Registrar: GoDaddy.com, LLC Registrar IANA ID: 146 Registrar Abuse Contact Email: abuse@godaddy.com Registrar Abuse Contact Phone: +1.4806242505 Domain Status: clientTransferProhibited Name Server: NS1.GOOGLE.COM Name Server: NS2.GOOGLE.COM DNSSEC: unsigned | 边界 case:国际化域名(IDN,Punycode 编码) |
| notregistereddomain123456789.com | Domain not found. >>> Last update of WHOIS database: 2025-01-20T14:30:00Z <<< The queried object does not exist: DOMAIN NOT FOUND. No match for "NOTREGISTEREDDOMAIN123456789.COM". | 易错 case:查询未注册域名(常见误输入) |
https://example.comexample.comwhois 查询的是域名注册信息,不是 HTTP 资源。协议头(http://, https://)会被服务器当作无效查询字符串直接拒绝。
example.com/path 或 example.com:8080example.comwhois 协议只关心顶级域名(TLD)和二级域名。路径、端口、锚点等 URL 组件不属于域名注册信息范畴,服务器会返回错误。
www.example.comexample.comwww 是 CNAME 记录,不是注册域名本身。whois 查 www.example.com 可能返回 example.com 的信息,但部分 TLD 服务器会因找不到精确匹配而报错。
192.168.1.1example.comIP 地址的注册信息属于 whois(RIR,如 ARIN/RIPE/APNIC),与域名 whois 是不同的查询协议和服务器。本工具只查域名 whois,输入 IP 会收到 'No match' 或连接超时。
example .comexample.com域名不允许空格。whois 服务器收到空格会当作语法错误,返回 'Invalid query' 或直接断开连接。
例子.测试xn--fsqu00a.xn--0zwm56d中文域名在 whois 协议中必须用 ASCII 兼容编码(Punycode)表示。直接输入 UTF-8 字符,服务器无法解析,返回 'Domain not found'。
(刚注册 1 分钟就查,发现 WHOIS 信息缺失)等待 5-30 分钟后再查域名注册后,注册局将数据同步到 whois 服务器存在延迟(通常 5-30 分钟)。刚注册时可能返回 'No match' 或显示旧数据,这是正常现象。
看到 'REDACTED FOR PRIVACY' 认为查询失败这是正常结果,注册人信息被隐藏GDPR 等隐私法规要求注册局隐藏个人注册者的姓名、邮箱、电话。显示 'Redacted' 或 'Data Not Shown' 是标准行为,非错误。
公式推导 · 流程图解 · 依据出处
whois -h <whois_server> <domain>
whois_server — 目标域名的 Whois 服务器地址domain — 待查询的域名(如 example.com)查询 example.com 的 Whois 信息。通过 whois.verisign-grs.com 服务器发送请求:whois -h whois.verisign-grs.com example.com。返回结果包含注册人、注册商(如 VeriSign)、创建日期(1997-08-13)、过期日期(2026-08-13)等字段。
适用于所有顶级域名(gTLD/ccTLD),但不同域名后缀需使用对应 Whois 服务器(如 .cn 需查询 whois.cnnic.cn)。不依赖第三方 API,直接与 IANA 分配的 Whois 服务器通信。
3 种主流语言 · 复制即用
import socket
# 直连 whois 服务器,不依赖第三方 API
def whois_lookup(domain: str, server: str = "whois.verisign-grs.com", port: int = 43) -> str:
"""
通过原始 TCP 连接查询 whois 信息。
参数 server 可替换为对应 TLD 的 whois 服务器(如 whois.denic.de 用于 .de)。
"""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
try:
sock.connect((server, port))
# whois 协议:发送域名 + \r\n,读取响应直到连接关闭
sock.sendall(f"{domain}\r\n".encode())
response = b""
while True:
chunk = sock.recv(4096)
if not chunk:
break
response += chunk
return response.decode("utf-8", errors="ignore")
finally:
sock.close()
if __name__ == "__main__":
# 示例:查询 example.com 的注册信息
result = whois_lookup("example.com")
print(result[:500]) # 打印前 500 字符package main
import (
"bufio"
"fmt"
"net"
"os"
"time"
)
// whoisLookup 通过 TCP 直连 whois 服务器,返回原始响应
func whoisLookup(domain, server string) (string, error) {
conn, err := net.DialTimeout("tcp", server+":43", 10*time.Second)
if err != nil {
return "", err
}
defer conn.Close()
// 发送查询请求(whois 协议:域名 + \r\n)
_, err = fmt.Fprintf(conn, "%s\r\n", domain)
if err != nil {
return "", err
}
// 读取全部响应
scanner := bufio.NewScanner(conn)
var response string
for scanner.Scan() {
response += scanner.Text() + "\n"
}
return response, scanner.Err()
}
func main() {
// 示例:查询 example.com 的 whois 信息
result, err := whoisLookup("example.com", "whois.verisign-grs.com")
if err != nil {
fmt.Fprintf(os.Stderr, "查询失败: %v\n", err)
os.Exit(1)
}
fmt.Println(result[:500])
}const net = require('net');
/**
* 通过原始 TCP 连接查询 whois 信息(Node.js 环境)
* @param {string} domain - 要查询的域名
* @param {string} server - whois 服务器地址
* @returns {Promise<string>} whois 响应文本
*/
function whoisLookup(domain, server = 'whois.verisign-grs.com') {
return new Promise((resolve, reject) => {
const client = new net.Socket();
client.setTimeout(10000);
client.connect(43, server, () => {
// whois 协议:发送域名 + \r\n
client.write(`${domain}\r\n`);
});
let response = '';
client.on('data', (chunk) => {
response += chunk.toString('utf-8');
});
client.on('end', () => resolve(response));
client.on('error', (err) => reject(err));
client.on('timeout', () => {
client.destroy();
reject(new Error('连接超时'));
});
});
}
// 示例:查询 example.com 的 whois 信息
whoisLookup('example.com')
.then(result => console.log(result.slice(0, 500)))
.catch(err => console.error('查询失败:', err));7 个高频疑问
「域名 / DNS」下的其他工具