golang 获取域名 ip dns 信息

这篇具有很好参考价值的文章主要介绍了golang 获取域名 ip dns 信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Go语言查找DNS A记录

A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录. 用户可以将该域名下的网站服务器指向到自己的web server上. 同时也可以设置您域名的二级域名.

使用 Go 语言的标准库 net.LookupIP() 接受域名的字符串参数,返回 net.IP的切片. 这个 net.IP 对象包含IPv4地址和IPv6地址.

package main


import (

    "fmt"

    "net"

)


func main() {

    iprecords, _ := net.LookupIP("mojotv.cn")

    for _, ip := range iprecords {

        fmt.Println(ip)

    }

}

上面代码返回的facebook域名的IPv4和IPv6地址:


C:\golang\mojotv.cn>go run golang_dns_example.go

2a03:2880:f12f:83:face:b00c:0:25de

31.13.79.35
2 Go语言查找DNS CNAME记录

CNAME(缩写canonical name)记录,即:别名记录.这种记录允许您将多个名字映射到同一台计算机. 通常用于同时提供WWW和MAIL服务的计算机.例如,有一台计算机名为“host.mydomain.com”(A记录). 它同时提供WWW和MAIL服务,为了便于用户访问服务.可以为该计算机设置两个别名(CNAME):WWW和MAIL.

使用Go语言标准库net.LookupCNAME()根据域名字符串查询DNS CNAME 记录值.

package main


import (

    "fmt"

    "net"

)


func main() {

    cname, _ := net.LookupCNAME("m.facebook.com")

    fmt.Println(cname)
    
}

返回m.facebook.com 的 DNS CNAME 记录值出输结果如下:

C:\golang\mojotv.cn>go run dns_cname_example.go

star-mini.c10r.facebook.com.
3 Go语言查找DNS PTR记录

PTR记录,是电子邮件系统中的邮件交换记录的一种;另一种邮件交换记录是A记录(在IPv4协议中)或AAAA记录(在IPv6协议中).PTR记录常被用于反向地址解析. 根据一个IP值,查找映射的域名值,不一定没有ip地址都回生效,DNS的IP地址可以查到.

DNS PTR用途

  • PTR记录被用于电子邮件发送过程中的反向地址解析.
  • 当正向域名解析完成后,还应当向您的线路接入商(ISP)申请做反向地址解析,以减少被国外机构退信的可能性.

使用Go语言标准库net.LookupAddr()函数对地址执行反向查找,并返回映射到给定地址的名称列表.


package main


import (

    "fmt"

    "net"

)


func main() {

    ptr, err := net.LookupAddr("114.114.114.114")

    if err != nil {

        fmt.Println(err)

    }

    for _, ptrvalue := range ptr {

        fmt.Println(ptrvalue)

    }

}

查找dns的返回值如下


C:\golang\dns>go run example3.go

public1.114dns.com.
4 Go语言查找DNS NS记录

NS记录此记录指定负责此DNS区域的权威名称服务器. A记录和NS记录的区别是,A记录直接给出目的IP, NS记录将DNS解析任务交给特定的服务器, NS记录中记录的IP即为该特定服务器的IP地址.

使用Go语言标准库net.LookupNS()函数对域名执行反向查找,并返回负责此域名DNS-NS记录切片.

package main


import (

    "fmt"

    "net"

)


func main() {

    nameserver, _ := net.LookupNS("baidu.com")

    for _, ns := range nameserver {

        fmt.Println(ns)

    }

}

结果如下

C:\golang\mojotv.cn>go run dsn_ns_example.go

&{ns3.baidu.com.}

&{ns4.baidu.com.}

&{ns7.baidu.com.}

&{dns.baidu.com.}

&{ns2.baidu.com.}
5 Go语言查找DNS MX记录

邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器. MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器.简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程.

使用Go语言标准库 net.LookupMX 函数将域名作为字符串,并返回按首选项排序的MX 结构体的切片. MX结构由主机作为string组成,Pref是uint16.

package main


import (

    "fmt"

    "net"

)


func main() {

    mxrecords, _ := net.LookupMX("baidu.com")

    for _, mx := range mxrecords {

        fmt.Println(mx.Host, mx.Pref)
    
    }

}

域名(baidu.com)的输出列表MX记录

C:\golang\mojotv.cn>go run golang_dns_mx_example.go

mx.maillb.baidu.com. 10

mx.n.shifen.com. 15

mx1.baidu.com. 20

jpmx.baidu.com. 20

mx50.baidu.com. 20
​​​​​​6 Go语言查找DNS SRV记录

SRV记录(英語:Service Record,中文又名服务定位记录)是域名系统中用于指定服务器提供服务的位置(如主机名和端口)数据.此数据于RFC 2782中定义,类型代码为33. 部分协议,如会话发起协议(SIP)及可扩展消息与存在协议(XMPP)通常需要服务记录的支持.

Go语言标准库LookupSRV函数尝试指定服务的SRV查询,协议和域名的SRV查询. 第二个参数是“tcp”或“udp”. 返回的记录按优先级排序,并按优先级在权重随机分配.

package main


import (

    "fmt"

    "net"

)


func main() {

    cname, srvs, err := net.LookupSRV("xmpp-server", "tcp", "golang.org")

    if err != nil {

        panic(err)

    }


    fmt.Printf("\ncname: %s \n\n", cname)


    for _, srv := range srvs {

        fmt.Printf("%v:%v:%d:%d\n", srv.Target, srv.Port, srv.Priority, srv.Weight)

    }

}

下面的输出演示了CNAME返回,后跟SRV记录目标,端口,优先级和由冒号分隔的权重.

C:\golang\mojotv.cn>go run golang_dns_srv_example.go

cname: _xmpp-server._tcp.golang.org.
​​​​7 Go语言查找DNS TXT记录

TXT记录用来保存域名的附加文本信息,TXT记录的内容按照一定的格式编写,最常用的是SPF格式,SPF用于登记某个域名拥有的用来外发邮件的所有ip地址. MX记录的作用是给寄信者指明某个域名的邮件服务器有哪些,SPF格式的TXT记录的作用跟MX记录相反,它向收信者表明,哪些邮件服务器是经过某个域名认可发送邮件的. SPF的作用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件.按照SPF格式在DNS中增加一条TXT类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件.

Go语言标准库 net.LookupTXT 函数将域名(baidu.com)作为字符串,并返回DNS TXT记录列表作为字符串片段.

package main


import (

    "fmt"

    "net"

)


func main() {

    txtrecords, _ := net.LookupTXT("baidu.com")


    for _, txt := range txtrecords {

        fmt.Println(txt)

    }

}

baidu.com的txt值如下文章来源地址https://www.toymoban.com/news/detail-826137.html

C:\golang\mojotv>go run golang_dns_txt.go

v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr -all

google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM

到了这里,关于golang 获取域名 ip dns 信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 渗透测试-SQL注入之核心语法获取数据库信息

    SQL实验室第一关 下载sqli-labs到phpstudy的www目录下 打开localhost/sqli-labs运行即可 (1)注入语句 ‘~’ 相当于16进制的0x7e 万能密码 \\\'or ‘1’ =\\\'1 ’ and ‘1’=‘1 ’ and 1=2 union select 1,user(),3- -+ 前面加’是为了闭合后面的’ (2)group_concat(string) (1)SQL手工注入方法 select schema_name

    2024年02月10日
    浏览(38)
  • 如何实现无公网ip固定TCP端口地址远程连接Oracle数据库

    Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据

    2024年01月18日
    浏览(49)
  • openGauss学习笔记-100 openGauss 数据库管理-管理数据库安全-客户端接入之用SSL进行安全的TCP/IP连接

    100.1 背景信息 openGauss支持SSL标准协议(TLS 1.2),SSL协议是安全性更高的协议标准,它们加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。 100.2 前提条件 从CA认证中心申请到正式的服务器、客户端的证书和密钥。(假设

    2024年02月05日
    浏览(55)
  • 【Java】JDBC 获取数据库表名、字段名、注释 Comment 等信息

    需求:给定数据库信息和表名,扫描表的字段名、字段类型和注释。 要使用Java JDBC获取数据库表名、字段名和注释信息,你需要连接到数据库并执行适当的SQL查询。以下是一些示例代码,展示如何获取这些信息。请注意,这些示例代码假定你已经建立了数据库连接。你需要根

    2024年02月02日
    浏览(44)
  • Golang — 根据IP获取地理位置信息

    1 ip2region 2 geoip2-golang ip2region 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。 特点: 是一个开源的IP地理位置库。 标准化的数据格式 每个 ip 数据段的 region 信息都固定了格式:国家|区域|省

    2024年02月14日
    浏览(42)
  • 微信小程序实现登录授权,并将获取到的用户授权信息存储到数据库中

    官方开发文档 注意:在实现授权登录时,不要使用测试号进行 wx.getUserProfile使用文档 config文件代码如下 路由模块 主要代码(如果不想多个文件,可以将wxuserHandle.wxuser这个位置内容替换为exports.wxuser的内容) 注意: 在返回token的字符串拼接时,Bearer 后面必须有一个空格 数据

    2024年02月10日
    浏览(54)
  • IP地址、主机名、域名解析(DNS)、虚拟机配置固定IP

    每一台联网的电脑都会有一个地址,用于和其他计算机进行通讯 IP地址主要有两个版本:v4 v6 IPV4版本的地址格式名为:a.b.c.d,其中abcd表示0-225的数字,如192.168.88.10为一个标准地址 查看IP地址: ifconfig 如果无法使用该命令查看IP地址,可以安装 yum -y install net-tools 127.0.0.1 ,这

    2024年02月04日
    浏览(47)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(86)
  • 快解析动态域名解析,实现外网访问内网数据库

    今天跟大家分享一下如何借助快解析动态域名解析,在两种特定网络环境下,实现外网访问内网mysql数据库。 第1种网络 环境 : 路由器分配的是动态公网IP,且有路由器登录管理权限。如何实现外网访问内网mysql数据库? 针对这种网络环境,首先内网使用快解析动态域名解析

    2024年02月08日
    浏览(70)
  • golang操作数据库--gorm框架、redis

    ①引入 ②初始化 ③增删改查 官网: http://gorm.io/ ①引入 ②初始化 ③增删改查 说明:Debug()可以查看执行的sql语句。 ④gorm gen的使用 a.先安装 (会安装到gopath的bin目录下,windows电脑,需要将该路径加入到系统路径) eg : b.举例: 说明1:windows电脑go install之后,把exe添加到系统路

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包