Whois服务器查询
一、Whois前置知识
WHOIS是一个用于查询域名是否已经被注册,以及注册域名的详细信息的数据库,它包含的信息包括域名所有人、域名注册商、域名注册日期、到期日期等,不同域名后缀的WHOIS信息需要到不同的WHOIS数据库进行查询。.com、.net、.org等通用顶级域(gTLD)的WHOIS信息通常可以通过公共WHOIS服务器获取,而国家代码顶级域(ccTLD)如.cn、.jp等则需要到相应的国家WHOIS服务器查询。
二、通过网页查询
方式一:通过原始网页查询
1、获取域名所在whois服务器:根据域名从根服务器获取域名所在的WHOIS服务器,根服务器网站为https://www.iana.org/whois,也可以直接根据域名后缀在数据库中查找对应的WHOIS服务器地址,网址为https://www.iana.org/domains/root/db。
2、查询域名信息:再根据域名从域名所在的WHOIS服务器获取域名信息,要查询xiaomi.cn的WHOIS信息,首先在IANA根服务器网站上查找到CN域名的WHOIS服务器为whois.cnnic.cn,然后访问whois.cnnic.cn并输入xiaomi.cn进行查询。
3、注意事项:查询的是一级域名,不能携带www,只能查询xiaomi.cn。
方式二:第三方网站查询
多个第三方网站提供WHOIS查询服务,可以直接查询域名信息,这些网站后台已经做了优化,不需要逐级查询,以下是一些常用的第三方WHOIS查询网站:
https://whois.aliyun.com/
https://whois.cloud.tencent.com/
https://who.is/
https://www.whois.com/whois/
https://whois.chinaz.com/
这些网站返回的信息可能不完整,但足以满足一般需求。
三、命令行whois查询
Windows环境命令行whois查询
可以使用NirSoft网站提供的whoiscl工具进行查询,下载链接为:https://www.nirsoft.net/utils/whoiscl.zip。
Linux环境命令行whois查询
在Linux环境下,可以通过包管理器安装whois命令行工具,使用yum安装:
yum install y whois
安装完成后,可以使用以下命令查询域名信息:
查看使用帮助 $ whois help 查询域名信息 $ whois xiaomi.cn
返回结果示例如下:
Domain Name: xiaomi.cn ROID: 20070518s10001s40338355cn Domain Status: clientTransferProhibited Registrant: 小米科技有限责任公司 Registrant Contact Email: dnsadmin@xiaomi.com Sponsoring Registrar: 厦门易名科技股份有限公司 Name Server: ns3.dnsv5.com Name Server: ns4.dnsv5.com Registration Time: 20070518 10:15:59 Expiration Time: 20240618 10:15:59 DNSSEC: unsigned
需要注意的是,如果是二级域名则无法查询到信息。
四、Python代码方式实现
通过Socket实现whois查询
使用Python的socket库可以实现WHOIS查询,以下是一个简单的示例代码:
import socket def whois_request(domain: str, server: str, port=43, timeout=5) > str: """ 发送http请求,获取信息 :param domain: 域名 :param server: WHOIS服务器地址 :param port: 端口号,默认为43 :return: 返回查询结果 """ # 创建连接 sock = socket.create_connection((server, port)) sock.settimeout(timeout) # 发送请求 sock.send(("%sr " % domain).encode("utf8")) # 接收数据 buff = bytes() while True: data = sock.recv(1024) if len(data) == 0: break buff += data # 关闭链接 sock.close() return buff.decode("utf8") 第一步,根据域名从根服务器获取域名所在whois服务器 root_server = 'whois.iana.org' domain = 'xiaoxi.cn' res = whois_request(domain, root_server) print(res)
返回数据示例如下:
% IANA WHOIS server % for more information on IANA, visit http://www.iana.org % This query returned 1 object refer: whois.cnnic.cn domain: CN organisation: China Internet Network Information Center (CNNIC) address: No. 4, South 4th Street address: Zhong Guan Cun address: Beijing 100190 address: China contact: administrative name: Yu Zeng organisation: China Internet Network Information Center (CNNIC) address: No. 4, South 4th Street
此代码通过连接到IANA根服务器获取域名所在的WHOIS服务器,然后发送查询请求并接收返回的数据。
第三方库:whois
Python的whois库可以用来简化WHOIS查询过程,以下是一个简单的示例代码:
import whois domain = "example.com" w = whois.whois(domain) print(w)
该代码会输出一个包含域名详细信息的对象。
第三方库:pythonwhois
pythonwhois是另一个用于WHOIS查询的Python库,以下是一个简单的示例代码:
from pythonwhois import get_whois domain = 'example.com' w = get_whois(domain) print(w)
该代码会输出一个包含域名详细信息的对象。
第三方库:whois21
whois21是另一个用于WHOIS查询的Python库,以下是一个简单的示例代码:
from whois21 import WhoisCommandLineClient as CLIENT, cli_parser as PARSER, CLIENT_EXIT_SUCCESS = 0 args = PARSER().parse_args(['query', 'example.com']) client = CLIENT(args) exit_code = client.run() print('CLIENT_EXIT_SUCCESS' if exit_code == CLIENT_EXIT_SUCCESS else 'Error')
该代码会输出一个包含域名详细信息的对象。
五、使用Domain Admin
Domain Admin是一个图形界面的WHOIS查询工具,可以方便地进行批量查询,以下是一些主要功能和使用方法:
子域检索:支持对主域名下的所有子域名进行检索。
域名WHOIS批量查询:支持对多个域名进行批量查询,并提供下载结果的功能,如果某个域名的状态为“未注册”,则状态结果为“None”,其余无效WHOIS信息的域名可能需要重新输入进行查询。
结果字段:包括状态、注册者、注册者邮箱、注册商、注册时间、到期时间及解析服务器。
提升域名曝光率:可以在域名交易平台免费发布域名售卖信息,买家可以在查询结果页面和交易产品页面进行购买。
六、相关问题与解答栏目
问题1:如何查询一个域名的WHOIS信息?
答:可以通过多种方式查询域名的WHOIS信息,包括通过网页查询、命令行查询和使用Python代码实现,具体方法如下:
网页查询:可以通过原始网页查询或使用第三方网站查询,访问IANA根服务器网站获取域名所在的WHOIS服务器,然后访问该服务器查询域名信息,也可以直接使用第三方网站如阿里云、腾讯云等进行查询。
命令行查询:在Windows环境下可以使用whoiscl工具,在Linux环境下可以使用whois命令,在Linux环境下执行whois example.com
即可查询example.com的WHOIS信息。
Python代码实现:可以使用socket库或第三方库如whois、pythonwhois、whois21等进行查询,使用socket库的代码如下:
import socket def whois_request(domain, server, port=43, timeout=5): sock = socket.create_connection((server, port)) sock.settimeout(timeout) sock.send(f"{domain}r ".encode("utf8")) buff = b"" while True: data = sock.recv(1024) if not data: break buff += data sock.close() return buff.decode("utf8") root_server = 'whois.iana.org' domain = 'example.com' res = whois_request(domain, root_server) print(res)
问题2:什么是WHOIS协议?
答:WHOIS协议是一种用于查询域名是否已经被注册以及注册域名的详细信息的传输协议,它允许用户获取域名的当前信息状态,包括域名是否已被注册、注册日期、过期日期、域名状态、DNS解析服务器等,WHOIS协议的主要作用是帮助用户了解域名的注册情况和管理信息,从而更好地管理和使用互联网资源。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/116605.html