python3实现域名查询和whois查询功能

下面是 “Python3实现域名查询和whois查询功能”的完整攻略。

前置条件

在开始之前,需要安装 whoispython-whois 两个库。可以通过以下命令进行安装:

pip install python-whois whois

其中,python-whois 是一个python的whois查询工具库,而whois则是支持在命令行中查询whois的工具。安装完成后,我们才能开始本攻略的操作。

域名查询功能

有两种方式实现域名查询功能。

使用 Python socket 模块

Python 中可以使用 socket 模块来进行 DNS 解析。

import socket

def get_ip(domain_name):
    return socket.gethostbyname(domain_name)

在以上的代码中,使用 socket.gethostbyname() 函数获取域名对应的IP地址。

使用 dnspython 库

dnspython模块是Python中用于解析DNS的级联Python模块。它支持通常使用的所有记录类型,包括A、MX、PTR、TXT等等。

pip install dnspython

安装好 dnspython 库后,可以使用以下代码查询域名对应的IP地址:

import dns.resolver

def get_ip(domain_name):
    try:
        dns_resolver = dns.resolver.Resolver()
        answers = dns_resolver.query(domain_name, 'A')
        return str(answers[0])
    except Exception as e:
        print(e)

在以上代码中,我们使用了 dns.resolver.Resolver() 对象来查询IP地址,解析出来的IP地址是一个IP对象,因此可以使用 str() 函数将其转换为字符串。

Whois 查询功能

现在,我们考虑实现 whois查询功能。

在Python中,whois模块和python-whois模块都是用于查询whois信息的库。这里我们选择 python-whois 来实现查询。

以下是查询whois信息的示例代码:

import whois

def get_whois_info(domain_name):
    try:
        w = whois.whois(domain_name)
        return w
    except Exception as e:
        print(e)
        return None

以上代码中,我们首先使用 whois.whois() 函数查询域名的whois信息。查询成功后,返回一个whois信息类的实例。

需要注意的是,有些whois查询结果可能没有返回所有信息,具体信息和输出格式取决于不同whois服务器和域名。我们也需要处理可能出现的异常,以保证程序的稳定性。

示例说明

假设要查询 github.com 的IP地址和whois信息。以下是查询的示例代码。

ip = get_ip('github.com')
if ip:
    print('The IP address of github.com is:', ip)

w = get_whois_info('github.com')
if w:
    print(w)

输出结果:

The IP address of github.com is: 140.82.118.3

{
  "domain_name": [
    "GITHUB.COM",
    "github.com"
  ],
  "registrar": "MarkMonitor Inc.",
  "whois_server": "whois.markmonitor.com",
  "referral_url": null,
  "updated_date": [
    "2018-08-10 09:20:34-0700",
    "2018-08-10 02:20:35-0700"
  ],
  "creation_date": [
    "2007-10-09 18:20:50-0700",
    "2007-10-09T18:20:50Z"
  ],
  "expiration_date": [
    "2020-10-09 18:20:50-0700",
    "2020-10-09T18:20:50Z"
  ],
  "name_servers": [
    "DNS1.P08.NSONE.NET",
    "NS-2046.AWSDNS-63.CO.UK",
    "NS-637.AWSDNS-15.NET",
    "NS-1157.AWSDNS-16.ORG",
    "DNS2.P08.NSONE.NET",
    "NS-70.AWSDNS-08.COM",
    "NS-1763.AWSDNS-28.CO.UK",
    "NS-1219.AWSDNS-24.ORG",
    "NS-1004.AWSDNS-61.COM",
    "NS-2010.AWSDNS-59.CO.UK",
    "NS-377.AWSDNS-47.COM",
    "NS-539.AWSDNS-03.NET",
    "NS-926.AWSDNS-51.NET",
    "NS-165.AWSDNS-20.NET",
    "NS-862.AWSDNS-43.NET",
    "NS-1473.AWSDNS-56.ORG"
  ],
  "status": [
    "clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited",
    "clientTransferProhibited https://icann.org/epp#clientTransferProhibited",
    "clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited",
    "serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited",
    "serverTransferProhibited https://icann.org/epp#serverTransferProhibited",
    "serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited",
    "clientRenewProhibited https://icann.org/epp#clientRenewProhibited",
    "clientTransferProhibited (https://www.icann.org/epp#clientTransferProhibited)",
    "clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)",
    "clientDeleteProhibited (https://www.icann.org/epp#clientDeleteProhibited)",
    "serverTransferProhibited (https://www.icann.org/epp#serverTransferProhibited)",
    "serverUpdateProhibited (https://www.icann.org/epp#serverUpdateProhibited)",
    "serverDeleteProhibited (https://www.icann.org/epp#serverDeleteProhibited)",
    "clientRenewProhibited (https://www.icann.org/epp#clientRenewProhibited)"
  ],
  "emails": [
    "abusecomplaints@markmonitor.com",
    "whoisrequest@markmonitor.com"
  ],
  "dnssec": "unsigned",
  "name": null,
  "org": "GitHub, Inc.",
  "address": null,
  "city": null,
  "state": "CA",
  "zipcode": null,
  "country": "US"
}

以上示例代码中,我们首先通过 get_ip() 函数获取 github.com 的IP地址。如果获取成功,则输出IP地址。接着,使用 get_whois_info() 函数获取 github.com 的 whois 信息。如果查询结果不为空,则输出查询结果。

到此,我已经给你讲解了如何实现Python3实现域名查询和whois查询功能,并提供了相应的示例代码,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3实现域名查询和whois查询功能 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python使用函数默认值实现函数静态变量的方法

    使用函数默认值实现函数静态变量,需要满足以下两个条件: 函数默认值只会在第一次定义函数时计算,并且只会被计算一次; 在函数内部,对默认值进行修改后,下一次调用函数时使用的是修改后的值。 利用这个特性,我们可以定义一个函数,使其返回值为变量,在下一次调用时返回修改后的值。 下面是一个示例: def counter(): count = 0 def inner(…

    python 2023年6月5日
    00
  • 详解Python odoo中嵌入html简单的分页功能

    Python Odoo中嵌入HTML简单的分页功能 Odoo是一种流行的企业资源规划(ERP)软件,使用Python编写。在Odoo中,我们可以使用HTML嵌入Python代码,并实现简单的分页功能。本文将介绍如何在Odoo中嵌入HTML简单的分页功能。 步骤1:创建Odoo模型 首先,我们需要创建一个Odoo模型。以下是示例代码: from odoo im…

    python 2023年5月15日
    00
  • Scrapy爬虫Response子类在应用中的问题解析

    Scrapy是一款功能强大的Python爬虫框架,其提供了基于Twisted的异步网络框架和支持XPath以及CSS选择器等多种数据提取方式,因此备受欢迎。在使用Scrapy爬虫的过程中,经常会用到其Response子类,但是在应用中会遇到一些问题,这篇攻略将详细讲解这些问题及其解决方法。 问题1:如何处理文件下载? 在爬虫过程中,有很多情况需要下载文件(如…

    python 2023年6月6日
    00
  • python 追踪except信息方式

    Python追踪except信息方式 在开发Python程序过程中,我们时常需要写代码去处理异常情况。 如果异常处理不当,可能导致程序崩溃或者出现难以解决的问题。 在Python中,我们可以通过追踪except信息的方式来定位并解决异常问题。 下面是Python追踪except信息方式的完整攻略。 1. 使用try-except语句 在Python中,我们可…

    python 2023年5月13日
    00
  • python怎么提高计算速度

    要想提高Python的计算速度,通常可以采用以下几种方式: 1. 使用NumPy NumPy是Python一个常用的高性能科学计算库,它广泛地应用于各种科学计算中,能够提升计算速度。它的优势在于其基于C语言写的底层代码,很大程度上避免了Python解释器的运算速度瓶颈。 例如,假设我们需要求两个数组(x和y)的点积结果,如果使用Python自带的列表进行计算…

    python 2023年6月3日
    00
  • python对离散变量的one-hot编码方法

    Python中可以使用sklearn库中的OneHotEncoder来对离散变量进行one-hot编码,下面是具体操作步骤: 1. 引入模块 首先我们需要引入相关的模块: from sklearn.preprocessing import OneHotEncoder import numpy as np 2. 准备数据 接下来我们需要准备需要进行one-ho…

    python 2023年5月31日
    00
  • python数据可视化plt库实例详解

    Python数据可视化plt库实例详解 本文将详细讲解Python的数据可视化plt库,包括其基本用法、常见图形的绘制方法和进阶技巧等内容。 基本用法 Matplotlib是Python中最常用的绘图工具,它是一个2D绘图库,可用于绘制线图、散点图、柱状图、等高线图、3D图形等等。其中,plt库是Matplotlib的一个常用模块,用于快速绘制图形。 下面是…

    python 2023年5月19日
    00
  • 一起来学习Python的列表

    以下是“一起来学习Python的列表”的完整攻略。 1. 列表的概述 在Python中,列表是一种常见的数据结构,用于存储一组有序的数据。列表中的每个元素可以任意类型的数据,例如数字、字符串、布尔值等。列表是可变的,可以动态地添加、删除和修改元素。下面介绍Python列表的相关知识点。 2. 列表的基本操作 2.1 创建列表 在Python中,可以使用方括号…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部