如何使用程序查询域名whois信息?(带PHP/C#示例)

直接使用TCP协议向WHOIS服务器的43端口发送查询请求即可返回WHOIS信息。
一些国际域名(.COM/.NET/.CC等)需要继续向各注册商的WHOIS服务服务发送查询请求来获取详细信息。
大部分New gTLD来说,服务器是“whois.nic.[后缀]”,例如.red的WHOIS服务器为whois.nic.red

WHOIS服务器列表:https://whereiswhois.com/

PHP示例

$domain = 'baidu.com';

$fs = fsockopen('whois.verisign-grs.com', 43, $errno, $errstr);
if(!$fs){
    write_line(sprintf('%s: %s', $errno, $errstr));
    return;
}

try
{
    fwrite($fs, $domain . "\r\n");
    $whois = file_read_all_bytes($fs);
    write_line($whois);
}
catch(\Exception $ex)
{
    write_line($ex->getMessage());
}
finally{
    fclose($fs);
}

function file_read_all_bytes($fs){
    $response = '';
    while(!feof($fs)){
        $response .= fread($fs, 4096);
    }
    return $response;
}

function write_line($message) : void {
    echo $message . "\r\n";
}

c#示例

string domain = "baidu.com";

Socket client = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

try
{
    client.Connect("whois.verisign-grs.com", 43);

    byte[] request = Encoding.ASCII.GetBytes(domain + "\r\n");

    using NetworkStream stream = new NetworkStream(client, true);

    stream.Write(request, 0, request.Length);

    using MemoryStream output = new();

    stream.CopyTo(output);

    byte[] response = output.ToArray();

    Console.WriteLine(Encoding.UTF8.GetString(response));
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anlige

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值