当前位置:
首页 > 编程开发 > Python基础教程 >
-
09python实现DNS查找域名对应的IP地址
# DNS:是一个UDP层上边的协议,用于将域名转换成IP地址,在我们平时浏览网页的时候, # 这个我们平时用到的特别多的,在我们打开浏览器进行搜索网页的时候,不是填入IP地址进行 # 搜索的,而只是输入域名,DNS协议会将域名解析成IP地址,然后记性寻找我们访问的网页。 from scapy.all import * # 传入两个参数,域名和域名服务器。 def dns_query(dns_name,dns_ip): # 首先构造一个DNS的包,IP的目的地址为第一个域名服务器地址,UDP字段让scapy自己填写,后边我们填写DNS字段的选项部分。 # 这里是收一个包,发送一个包。 dns_response = sr1(IP(dst = dns_ip)/UDP()/DNS(id=435,qr = 0,opcode=0,ra = 1,qd=DNSQR(qname=dns_name)),verbose=False) # print(dns_response.show()) # 下边进行解析包。一个DNS的应答包中可能包含很多的回答,因为我们访问的域名可能有特别多的别名。 layer = 1 while True: try: print(dns_response.getlayer(DNS).fields['an'][layer].fields['type']) # 判断是否是A记录,每一层就是一个记录,但是不一定是A,可能是CNAME! # 只有A记录里边有IP地址,CNAME里边是别名。 # 这里我们在A记录里边进行解析,如果不是A记录,那么就跳过。 if dns_response.getlayer(DNS).fields['an'][layer].fields['type'] == 1: # A记录 # 取出IP地址。 ip_data = dns_response.getlayer(DNS).fields['an'][layer].fields['rdata'] print('域名为:',dns_name,'的IP地址为:',ip_data) layer += 1 except Exception as e : # 如果错误的话,就代表着包结束了 print("错误",e) break if __name__ == "__main__": # 入参为要查询的域名,和第一个域名服务器的地址。 dns_name = 'www.baidu.com' dns_ip = '192.168.60.14' dns_query(dns_name,dns_ip)
栏目列表
最新更新
B站排行榜第一的视频,看看5W弹幕都在说
09python实现DNS查找域名对应的IP地址
用Python和用户实际地理位置,做任意区域
C#教程之C# 读取Excel,一波华丽的操作
Python基础面试题 :计算列表中出现最多次
python基础教程:偏函数
使用poetry+conda配置虚拟环境
如何用Python将Word文档转换为Excel表格
Python爬取抖音APP热点榜数据
人生苦短,我用Python
用 Access+Outlook 来采集信息
使用PowerDesigner生成Access数据库
让我们一起用开源数据库和开源框架废弃
随说秋色园从Access升迁到MSSQL过程
当爬虫被拒绝时(Access Denied)
Web API与OAuth:既生access token,何生refres
[认证 & 授权] 6. Permission Based Access Co
Access之C#连接Access
oracle 19c下载和安装教程(database和client)
MySql索引原理与使用大全
php的计数器每次都会清零
PHP基础
数据类型之对象
数据类型之布尔型、整型、浮点型和字符
php教程之数据类型之数组
php教程之PHP 常量
php教程之变量
php教程之语法
PHP简介与安装
phpMyAdmin配置安装全攻略