怎么给自己网站加上域名查询呢带whoise的

  1. AutoCMS
  2. /
  3. 建站资讯
  4. /
  5. 网站
logo
狄阳苑

网站  2026-10-04 00:48:01   187

怎么给自己网站加上域名查询呢带whoise的

想给自己网站加个域名Whois查询,说白了就是让用户输入一个域名,点一下,页面显示这个域名的注册商、注册时间、到期时间、DNS服务器这些信息。功能不复杂,但真要做稳,得考虑几个实际问题:用谁的数据源、怎么解析、怎么防滥用、怎么合规。

先看数据源。传统Whois走的是43端口,纯文本协议。比如查.com,连到whois.verisign-grs.com,发过去“example.com\r\n”,服务器返回一大段文本。查.cn就连whois.cnnic.cn,查.org连whois.pir.org。不同后缀的服务器不一样,得维护一张表,或者先问whois.iana.org,让它告诉你该找谁。自己写socket代码大概十几行:

import socket
  def whois_query(domain, server):
   s = socket.socket()
   s.settimeout(5)
   s.connect((server, 43))
   s.send((domain + "\r\n").encode())
   data = b""
   while True:
   chunk = s.recv(4096)
   if not chunk:
   break
   data += chunk
   s.close()
   return data.decode(errors="ignore")

这段能跑,但返回的是原始文本,格式五花八门。有的用“Registrar:”,有的用“注册商:”,日期格式也不统一。想直接展示给用户,还得写解析规则,挺烦。

现在更推荐用RDAP。RDAP是Whois的升级版,返回JSON,结构化好解析。比如查.com,直接请求 https://rdap.verisign.com/com/v1/domain/example.com,拿到的就是JSON,里面有events、entities、nameservers。不同后缀的RDAP地址可以从IANA的bootstrap文件里找:https://data.iana.org/rdap/dns.json。这个文件列出了所有后缀对应的RDAP服务器。用RDAP,后端代码能少一半,前端展示也整齐。

如果不想自己维护这些,就用第三方API。国外有whoisxmlapi、ipwhois,国内阿里云、腾讯云也有域名查询接口。它们把Whois和RDAP都封装好了,返回统一JSON,还带缓存和限速。缺点是免费额度有限,量大了要付费,而且数据要经过别人服务器。自己用的话,选个免费额度够的就行。

后端选型看你的网站技术栈。PHP可以用phpwhois,Python用python-whois,Node用whois库。以Python Flask为例,一个接口就能搞定:

from flask import Flask, request, jsonify
  import whois
  app = Flask(__name__)
  @app.route(''/api/whois'')
  def query():
   domain = request.args.get(''domain'', '''').strip().lower()
   if not domain or len(domain) > 253:
   return jsonify({''error'': ''invalid domain''}), 400
   try:
   w = whois.whois(domain)
   return jsonify({
   ''domain'': w.domain_name,
   ''registrar'': w.registrar,
   ''creation_date'': str(w.creation_date),
   ''expiration_date'': str(w.expiration_date),
   ''name_servers'': w.name_servers,
   ''status'': w.status
   })
   except Exception as e:
   return jsonify({''error'': str(e)}), 500

前端更简单,一个输入框加按钮,fetch请求这个接口,把JSON渲染成表格就行。注意做防抖,别用户一边打字一边发请求。

但有几个坑得提前说。Whois服务器普遍限速,同一IP一分钟查太多次会被封。所以后端一定要加缓存,比如用Redis存结果,设24小时过期。域名注册信息一天内基本不变,缓存完全够用。还要限制单个IP的查询频率,防止被人当免费API刷。另外,用户输入的域名要严格校验,只允许字母、数字、连字符和点,别让输入里带换行或者命令,否则可能被用来注入。

合规问题也不能忽略。GDPR之后,欧洲域名的注册人姓名、邮箱、电话大多被隐藏,显示“REDACTED FOR PRIVACY”。中国.cn域名虽然要求实名,但公开查询里个人信息也有限。你展示的时候别把隐私字段直接放出来,最好只显示注册商、日期、DNS这些公开信息。如果网站面向欧盟用户,还得注意别存储查询到的个人数据。

最后,如果你只是想在网站上放个查询小工具,不想折腾后端,也有纯前端方案。有些API支持CORS,可以直接在浏览器里请求。但这样会暴露你的API key,量大了容易被盗用。稳妥点还是走后端代理。

总结一下,给网站加域名Whois查询,最简单的路径是:后端用RDAP或第三方API,加缓存和频率限制,前端一个表单展示关键字段。自己从零写Whois socket也不是不行,但解析和维护成本高,除非你只查一两个固定后缀。实际做下来,一个下午就能上线,真正花时间的是防滥用和合规处理。