WHOIS协议Python和Golang的实现

WHOIS协议是一个非常简单的Internet信息查询协议;在RFC812文档中有定义,先向服务器的TCP 43端口建立一个连接,发送要查询的域名关键字并以回车换行结尾,然后接收服务器返回信息,服务器输出完毕后会立即断开连接。

RFC812文档:http://www.faqs.org/rfcs/rfc812.html

Python实现:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('whois.internic.net', 43))
s.send(b"baidu.com \r\n")
response =b''
while True:
    data = s.recv(4096)
    response += data
    if not data :
        break
s.close()
print (response.decode())

Golang 实现:

package main
import (
    "io"
    "fmt"
    "net"
)
func main() {
    conn,_ := net.Dial("tcp","whois.internic.net:43")

    conn.Write([]byte("baidu.com \r\n"))

    buf := make([]byte,4096)
    n,err := conn.Read(buf)
    if err != nil && err != io.EOF {
        fmt.Println(err)
    }
    fmt.Println(string(buf[:n]))
    conn.Close()
}

返回的部分内容:

   Domain Name: BAIDU.COM
   Registry Domain ID: 11181110_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2019-05-09T04:30:46Z
   Creation Date: 1999-10-11T11:05:17Z
   Registry Expiry Date: 2026-10-11T11:05:17Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2083895740
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
   Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
   Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
   Name Server: NS1.BAIDU.COM
   Name Server: NS2.BAIDU.COM
   Name Server: NS3.BAIDU.COM
   Name Server: NS4.BAIDU.COM
   Name Server: NS7.BAIDU.COM
   DNSSEC: unsigned
   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/whois.html

分类: 计算机技术
推荐阅读:
gin及其依赖库完整下载和安装方法 因为在线安装Gin需要科学访问外网,所以你无法使用最简单的方式安装Gin;虽然有其它方法可以安装成功,但那些方法对萌新朋友们不够友好。所以我打包了Gin及其依赖库并上传到了百度网盘,并附上了安装方法。
如何忽略pymysql警告信息 在python中使用pymysql库时,你可能会碰到由pymysql生成的警告信息;
C语言isblank()函数:判断字符是否为空白字符 isblank()函数是C语言中的一个标准库函数,用于判断一个字符是否为标准空白字符(即空格' '和水平制表符'\t');如果参数c是一个标准空白字符,则返回true,否则返回false;
使用Rust serde处理文件(读取、保存) 本文使用serde_json为例;展示Rust serde如何读取文件、保存文件;
Linux找出目录下所有内容重复的文件(包含子目录) 在Linux系统下,如果你想找出某个目录下(包含子目录)所有内容重复的文件,你可以使用这一条命令实现:
Visual Studio Code 配置Python开发环境 首先,请确保你的电脑已经安装了Python,如没有请先安装,建议 3.5.0以上版本;其次,确保你的电脑已经安装了 Visual Studio Code 这个代码编辑器;