Whois查询工具

在线查询域名注册信息、注册商、注册时间、过期时间等

域名查询

输入域名查询Whois信息

代码示例

以下是在不同编程语言中实现Whois查询的代码示例:

Python Whois查询

# 使用python-whois库查询Whois信息
# pip install python-whois

import whois
from datetime import datetime

def query_whois(domain):
    try:
        # 查询Whois信息
        domain_info = whois.whois(domain)
        
        # 解析结果
        result = {
            'domain_name': domain_info.domain_name,
            'registrar': domain_info.registrar,
            'creation_date': domain_info.creation_date,
            'expiration_date': domain_info.expiration_date,
            'updated_date': domain_info.updated_date,
            'name_servers': domain_info.name_servers,
            'status': domain_info.status,
            'registrant': domain_info.registrant,
            'organization': domain_info.org,
            'country': domain_info.country
        }
        
        return result
    except Exception as e:
        return {'error': str(e)}

# 使用示例
if __name__ == '__main__':
    domain = 'baidu.com'
    info = query_whois(domain)
    
    print(f"域名: {info.get('domain_name', 'N/A')}")
    print(f"注册商: {info.get('registrar', 'N/A')}")
    print(f"注册时间: {info.get('creation_date', 'N/A')}")
    print(f"过期时间: {info.get('expiration_date', 'N/A')}")
    print(f"DNS服务器: {info.get('name_servers', 'N/A')}")

# 使用socket库进行更底层的Whois查询
import socket

def whois_query_raw(domain, server='whois.iana.org', port=43):
    try:
        # 连接到Whois服务器
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((server, port))
        
        # 发送查询请求
        sock.send(f"{domain}\r\n".encode('utf-8'))
        
        # 接收响应
        response = b""
        while True:
            data = sock.recv(4096)
            if not data:
                break
            response += data
        
        sock.close()
        
        return response.decode('utf-8', errors='ignore')
    except Exception as e:
        return f"查询失败: {str(e)}"

Node.js Whois查询

// 使用whois npm包
// npm install whois

const whois = require('whois');

async function queryWhois(domain) {
    return new Promise((resolve, reject) => {
        whois.lookup(domain, (err, data) => {
            if (err) {
                reject(err);
            } else {
                resolve(data);
            }
        });
    });
}

// 解析Whois数据
function parseWhoisData(data) {
    const result = {};
    
    const lines = data.split('\n');
    lines.forEach(line => {
        const match = line.match(/^([^:]+):\s*(.+)$/);
        if (match) {
            const key = match[1].trim();
            const value = match[2].trim();
            
            // 转换为驼峰命名
            const camelKey = key.toLowerCase().replace(/_([a-z])/g, (g) => g[1].toUpperCase());
            result[camelKey] = value;
        }
    });
    
    return result;
}

// 使用示例
(async () => {
    try {
        const domain = 'baidu.com';
        const rawData = await queryWhois(domain);
        const parsed = parseWhoisData(rawData);
        
        console.log('原始Whois数据:');
        console.log(rawData);
        
        console.log('\n解析后的信息:');
        console.log(parsed);
    } catch (error) {
        console.error('查询失败:', error);
    }
})();

使用第三方API查询

# Python使用WhoisXML API
import requests

def query_whois_api(domain, api_key='your_api_key'):
    url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService"
    
    params = {
        'apiKey': api_key,
        'domainName': domain,
        'outputFormat': 'JSON'
    }
    
    try:
        response = requests.get(url, params=params)
        data = response.json()
        
        if 'DomainInfo' in data:
            info = data['DomainInfo']
            return {
                'domain': info.get('domainName'),
                'registrar': info.get('registrar'),
                'created': info.get('createdDate'),
                'expires': info.get('expiresDate'),
                'status': info.get('status')
            }
        
        return data
    except Exception as e:
        return {'error': str(e)}

# 使用示例
if __name__ == '__main__':
    result = query_whois_api('baidu.com')
    print(result)

关于Whois

什么是Whois?

Whois是一种用于查询互联网资源(如域名、IP地址、AS号码)注册信息的协议和服务。通过Whois查询,可以获取域名的注册人信息、注册商、注册时间、过期时间、DNS服务器等信息。

Whois信息包含的内容

  • 域名基本信息:域名名称、域名状态
  • 注册人信息:注册人姓名、组织、邮箱
  • 注册商信息:注册商名称、联系信息
  • 时间信息:注册时间、更新时间、过期时间
  • DNS信息:名称服务器、DNS记录

域名状态说明

  • ok:域名正常可用
  • clientDeleteProhibited:禁止删除(由注册人设置)
  • clientTransferProhibited:禁止转移
  • clientUpdateProhibited:禁止更新
  • serverDeleteProhibited:禁止删除(由注册商设置)
  • pendingDelete:正在删除流程中
  • redemptionPeriod:赎回期

常见问题(FAQ)

Q: 为什么有些域名的Whois信息显示不全?

A: 许多域名注册商提供隐私保护服务(WHOIS Privacy),会隐藏注册人的真实信息。此外,GDPR等隐私法规也限制了个人信息的公开显示。

Q: 域名过期后会发生什么?

A: 域名过期后会进入宽限期(通常0-30天),可按原价续费;随后进入赎回期(通常30天),需支付额外费用赎回;最后进入删除期(约5天),之后域名会被释放,任何人都可以注册。