• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

09python实现DNS查找域名对应的IP地址

python 搞java代码 3年前 (2022-05-21) 16次浏览 已收录 0个评论
# DNS:是一个UDP层上边的协议,用于将<a href="https://www.gaodaima.com/tag/%e5%9f%9f%e5%90%8d" title="查看更多关于域名的文章" target="_blank">域名</a>转换成IP地址,在我们平时浏览网页的时候,<br># 这个我们平时用到的特别多的,在我们打开浏览器进行搜索网页的时候,不是填入IP地址进行<br># 搜索的,而只是输入域名,DNS协议会将域名解析成IP地址,然后记性寻找我们访问的网页。<br>from scapy.all import *<br># 传入两个参数,域名和域名服务器。<br>def <a href="https://www.gaodaima.com/tag/dns" title="查看更多关于dns的文章" target="_blank">dns</a>_query(dns_name,dns_<a href="https://www.gaodaima.com/tag/ip" title="查看更多关于ip的文章" target="_blank">ip</a>):<br>    # 首先构造一个DNS的包,IP的目的地址为第一个域名服务器地址,UDP字段让scapy自己填写,后边我们填写DNS字段的选项部分。<br>    # 这里是收一个包,发送一个包。<br>    dns_response = sr1(IP(dst = dns_ip)/UDP()/DNS(id=435,qr = 0,opcode=0,ra = 1,qd=DNSQR(qname=dns_name)),verbose=False)<br>    # print(dns_response.show())<br>    # 下边进行解析包。一个DNS的应答包中可能包含很多的回答,因为我们访问的域名可能有特别多的别名。<br>    layer = 1<br>    while True:<br>        try:<br>            print(dns_response.getlayer(DNS).fields["an"][layer].fields["type"])<br>            # 判断是否是A记录,每一层就是一个记录,但是不一定是A,可能是CNAME!<br>            # 只有A记录里边有IP地址,CNAME里边是别名。<br>            # 这里我们在A记录里边进行解析,如果不是A记录,那么就跳过。<br>            if dns_response.getlayer(DNS).fields["an"][layer].fields["type"] == 1:  # A记录<br>                # 取出IP地址。<br>                ip_data = dns_response.getlayer(DNS).fields["an"][layer].fields["rdata"]<br>                print("域名为:",dns_name,"的IP地址为:",ip_data)<br>            layer += 1<br>        except Exception as e :<br>            # 如果错误的话,就代表着包结束了<br>            print("错误",e)<br>            break<br><br><br><br>if __name__ == "__main__":<br>    # 入参为要查询的域名,和第一个域名服务器的地址。<br>    dns_name = "www.baidu.com"<br>    dns_ip = "192.168.60.14"<br>    dns_query(dns_name,dns_ip)

www#gaodaima.com来源gaodai$ma#com搞$代*码*网搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:09python实现DNS查找域名对应的IP地址
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址