Python实现自动化域名批量解析分享

 更新时间:2022年08月01日 11:21:17   作者:爱搞网络的皮卡丘​​​​​​​  
这篇文章主要介绍了Python实现自动化域名批量解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

脚本架构:

  • domain_test.py:批量解析运行主程序
  • DomainResult.txt:域名解析结果文件
  • domains.txt:解析的域名文件

实现代码如下:

# coding:utf-8
import socket
import subprocess
import re

def get_host_from_file(file_path):
with open(file_path, 'r') as fr:
domains = fr.readlines()
result = []
for url in domains:
url = url.strip()
try:
ips = socket.gethostbyname_ex(url)[-1]
result.append(url + '\t' + ';'.join(ips) + '\t' + 'ping' + '\n')
except Exception as e:
print(url, e)
with open('./domain2ip.txt', 'w') as fw:
fw.writelines(result)

def get_host_from_url(url):
try:
ips = socket.gethostbyname_ex(url)[-1]
return url + '\t' + ';'.join(ips) + '\t' + 'ping' + '\n' except Exception as e:
print(url, e)
return url + '\t' + 'none' + '\n'
def dig_test(file_name, dns_name):
dig_command = 'dig ' ip_result = []
if dns_name:
dig_command += dns_name + ' ' with open(file_name) as fr:
domains = fr.readlines()
for ui, full_url in enumerate(domains):
ips = []
full_url = full_url.strip()
try:
result = subprocess.Popen(dig_command + full_url, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
except Exception as e:
print(full_url, e)
else:
results = str(result.stdout.read()).split('\\n')
for temp in results:
if full_url in temp and 'IN' in temp:
ip = re.match(r'.*\\t([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*', temp)
if ip and ip.group(1) not in ips:
ips.append(ip.group(1))
if 'AUTHORITY SECTION' in temp:
break if ips:
temp = full_url + '\t' + ';'.join(ips) + '\t' + 'dig' + '\n' else:
temp = get_host_from_url(full_url)
print(ui, temp)
ip_result.append(temp)
#解析完成后,生成结果文件
with open('domains.txt', 'w') as fw:
fw.writelines(ip_result)
if __name__ == '__main__':
# 先使用dig,失败时使用ping获取域名ip,可指定dns,如@114.114.114.114
dig_test(file_name='DomainResults.txt', dns_name='')

演示结果:

到此这篇关于Python实现自动化域名批量解析的文章就介绍到这了,更多相关Python自动化域名解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中遍历字典过程中更改元素导致异常的解决方法

    Python中遍历字典过程中更改元素导致异常的解决方法

    这篇文章主要介绍了Python中遍历字典过程中更改元素导致错误的解决方法,针对增删元素后出现dictionary changed size during iteration的异常解决做出讨论和解决,需要的朋友可以参考下
    2016-05-05
  • Python中GIL的使用详解

    Python中GIL的使用详解

    GIL的全称为Global Interpreter Lock,全局解释器锁。本篇文章详细的介绍了Python中GIL的使用,有需要了解Python中GIL用法的朋友可参考。希望此文章对各位有所帮助
    2018-10-10
  • 10 行Python 代码实现 AI 目标检测技术【推荐】

    10 行Python 代码实现 AI 目标检测技术【推荐】

    这篇文章主要介绍了10 行Python 代码,实现 AI 目标检测技术,看完了代码,我们在一起聊聊目标检测背后的技术背景,并解读这10行Python代码的由来和实现原理。感兴趣的朋友跟随小编一起看看吧
    2019-06-06
  • Python 爬虫学习笔记之单线程爬虫

    Python 爬虫学习笔记之单线程爬虫

    本文给大家分享的是python使用requests爬虫库实现单线程爬虫的代码以及requests库的安装和使用,有需要的小伙伴可以参考下
    2016-09-09
  • 使用Python画股票的K线图的方法步骤

    使用Python画股票的K线图的方法步骤

    这篇文章主要介绍了使用Python画股票的K线图的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 教你如何使用Python Tkinter库制作记事本

    教你如何使用Python Tkinter库制作记事本

    让我们看看如何使用 Tkinter 在 Python 中创建一个简单的记事本.这个记事本 GUI 将包含各种菜单,如文件和编辑,使用这些菜单可以完成保存文件、打开文件、编辑、剪切和粘贴等所有功能,需要的朋友可以参考下
    2021-06-06
  • 深入解析Python中的上下文管理器

    深入解析Python中的上下文管理器

    Python中把进入代码块前调用__enter__ 方法并在离开代码块后调用__exit__方法的对象作为上下文管理器,本文中我们就来深入解析Python中的上下文管理器,来看看上下文管理器的作用及用法:
    2016-06-06
  • Python实现序列化及csv文件读取

    Python实现序列化及csv文件读取

    这篇文章主要介绍了Python实现序列化及csv文件读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 浅谈Python数学建模之数据导入

    浅谈Python数学建模之数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要。Python 语言中数据导入的方法很多。对于数学建模问题编程来说,选择什么方法最好呢?答案是:没有最好的,只有最合适的。对于不同的问题,不同的算法,以及所调用工具包的不同实现方法,对于数据就会有不同的要求
    2021-06-06
  • 使用matplotlib画散点图的方法

    使用matplotlib画散点图的方法

    今天小编就为大家分享一篇使用matplotlib画散点图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论