通过python脚本查询自己阿里云账号里的某个域名的A记录解析情况,以及测拨,用于排查未使用的解析

安装sdk

bash 复制代码
pip install aliyun-python-sdk-alidns

代码全文

python 复制代码
import json
import requests
from aliyunsdkcore.client import AcsClient
from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest

# 替换为你的阿里云 AccessKey ID 和 AccessKey Secret
access_key_id = ''
access_key_secret = ''

client = AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')  # 设置区域 ID


def text_request(url, Value):
    try:
        test_res = requests.get(url)
        if test_res.status_code == 200:
            a = url
        else:
            print(f"{url} 响应异常 {Value}")
    except Exception as e:
        a = e
        print(f"{url} 响应异常 {Value}")


def list_domain_records(domain_name):
    request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
    request.set_DomainName(domain_name)
    request.set_PageSize(100)  # 每页记录数,最多100
    response = client.do_action_with_exception(request)
    res = response.decode('utf-8')
    json_res = json.loads(res)
    total_count = len(json_res['DomainRecords']['Record'])
    for i in json_res['DomainRecords']['Record']:
        if i['Type'] == 'A' and i['RR'] != '*':
            url = f"http://{i['RR']}.{domain_name}"
            text_request(url, i['Value'])
            total_count -= 1


# 替换为你要查询的域名
domain_name = 'iiar.cn'
list_domain_records(domain_name)

运行效果

代码详解

chatgpt协助整理

代码含义

这段代码的功能是使用阿里云的 SDK 从阿里云 DNS 服务中获取域名的所有 A 记录,并对每个 A 记录执行一次 HTTP GET 请求以检查其响应状态。

以下是代码的详细解释:

  1. 导入模块

    python 复制代码
    import json
    import requests
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest
    • json:用于解析和生成 JSON 数据。
    • requests:用于发送 HTTP 请求。
    • AcsClientDescribeDomainRecordsRequest:阿里云 SDK 中用于与阿里云 DNS 服务交互的类。
  2. 设置阿里云凭证

    python 复制代码
    access_key_id = ''
    access_key_secret = ''
    • 这里需要填入你的阿里云 AccessKey ID 和 AccessKey Secret,以便进行身份验证。
  3. 创建阿里云客户端实例

    python 复制代码
    client = AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')
    • 创建一个 AcsClient 实例,并指定区域 ID 为 'cn-hangzhou'
  4. 定义 text_request 函数

    python 复制代码
    def text_request(url, Value):
        try:
            test_res = requests.get(url)
            if test_res.status_code == 200:
                a = url
            else:
                print(f"{url} 响应异常 {Value}")
        except Exception as e:
            a = e
            print(f"{url} 响应异常 {Value}")
    • 该函数发送一个 GET 请求到指定的 URL,并检查响应状态码。如果状态码为 200(即成功),则不做任何处理;如果状态码不是 200 或请求出现异常,则打印错误信息。
  5. 定义 list_domain_records 函数

    python 复制代码
    def list_domain_records(domain_name):
        request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
        request.set_DomainName(domain_name)
        request.set_PageSize(100)
        response = client.do_action_with_exception(request)
        res = response.decode('utf-8')
        json_res = json.loads(res)
        total_count = len(json_res['DomainRecords']['Record'])
        for i in json_res['DomainRecords']['Record']:
            if i['Type'] == 'A' and i['RR'] != '*':
                url = f"http://{i['RR']}.{domain_name}"
                text_request(url, i['Value'])
                total_count -= 1
    • 该函数首先创建一个 DescribeDomainRecordsRequest 请求对象,并设置要查询的域名和每页记录数(最多 100 条)。
    • 发送请求并解析响应 JSON 数据。
    • 遍历所有记录,检查记录类型是否为 A 且记录值(RR)不是 *,构造 URL 并调用 text_request 函数进行 HTTP 请求。
  6. 调用 list_domain_records 函数

    python 复制代码
    domain_name = 'iiar.cn'
    list_domain_records(domain_name)
    • 设置要查询的域名为 'iiar.cn',然后调用 list_domain_records 函数。

总结

这段代码用于从阿里云 DNS 服务中获取指定域名的所有 A 记录,并对每个 A 记录进行 HTTP GET 请求以验证其有效性。它首先通过阿里云 SDK 获取域名的 DNS 记录,然后对每条记录进行检查,以确定其是否有效。

相关推荐
不想写bug呀1 小时前
多线程案例——单例模式
java·开发语言·单例模式
我不会写代码njdjnssj1 小时前
网络编程 TCP UDP
java·开发语言·jvm
费弗里2 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(1)
python·dash
李少兄9 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python
阿蒙Amon9 天前
《C#图解教程 第5版》深度推荐
开发语言·c#
就叫飞六吧9 天前
基于keepalived、vip实现高可用nginx (centos)
python·nginx·centos
Vertira9 天前
PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)
人工智能·pytorch·python
学Linux的语莫9 天前
python基础语法
开发语言·python
匿名的魔术师9 天前
实验问题记录:PyTorch Tensor 也会出现 a = b 赋值后,修改 a 会影响 b 的情况
人工智能·pytorch·python
Ven%9 天前
PyTorch 张量(Tensors)全面指南:从基础到实战
人工智能·pytorch·python