通过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 记录,然后对每条记录进行检查,以确定其是否有效。

相关推荐
孟健7 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞9 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽11 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程16 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪16 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook16 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田1 天前
使用 pkgutil 实现动态插件系统
python
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽1 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战1 天前
Pydantic配置管理最佳实践(一)
python