乐趣区

一名爬虫工程师的运维入门之路:dnspython学习笔记

你们是否跟我一样,不知道什么是 DNS,在这里,首先普及一下什么是 DNS DNS(Domain Name System,域名系统),万维网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。通过域名,最终得到该域名对应的 IP 地址的过程叫做域名解析(或主机名解析)。DNS 协议运行在 UDP 协议之上,使用端口号 53。在 RFC 文档中 RFC 2181 对 DNS 有规范说明,RFC 2136 对 DNS 的动态更新进行说明,RFC 2308 对 DNS 查询的反向缓存进行说明。

dnspython 模块简介
dnspython 是 Python 实现的一个 DNS 工具包,它支持几乎所有的记录类型,可用于查询、传输并动态更新 ZONE 信息,同时支持 TSIG 验证信息和 EDNS0。在系统管理方面,我们可以利用它的查询功能来实现 DNS 服务监控及解析结果的校验,可以代替 nslookup 和 dig 工具。

2. 方法:

A: 查询域名的 IP 源码:
domain = input(‘ 请输入域名地址:’)

A = dns.resolver.query(domain, ‘A’)
for i in A.response.answer:
for j in i.items:
print(j.address)

MX:邮件交换记录,定义邮件服务器的域名源码:
domain = input(‘ 请输入域名地址:’)
MX = dns.resolver.query(domain, ‘MX’)
for i in MX:
print(‘MX preference=’, i.preference, ‘mail exchanger=’, i.exchange)

NS: 标记区域的域名服务器及授权子域
print(dns.resolver.query(‘baidu.com’), ‘NS’)

CNAME: 别名记录,实现域名间的映射(方法同上)
PTR: 反向解析,与 A 相反,将 IP 转化为域名(方法同上)
SOA:SOA 标记,一个起始授权区的定义(方法同上)

退出移动版