Python解析域名CNAME

该Python代码实现了一个工具,用于检查输入的域名是否是特定基域名的子域名,通过CNAME记录进行验证。如果域名不是子域名,程序会记录日志。程序还包含处理用户域名列表并递归请求的功能,以检查多页数据。
摘要由CSDN通过智能技术生成

Python校验域名CNAME是否为指定子域名

背景

公司需要做一个校验客户域名是否为咱们自己子域名的工具,如果不是则打印日志出来就好了,这里通过CNAME来做校验。

代码实现

#!/usr/bin/python
# -*- coding: utf-8 -*-
import dns.resolver
import requests
import json
import logging

base_domains = 'ap-southeast-1.test.com.'
base_url = 'http://127.0.0.1:8087/domain?pageSize=10&pageNo='
page = 1
size = 20

logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger("check_domain")

# cname解析检测模块
def check_domain(domain):
    resolver = dns.resolver.Resolver()
    resolver.lifetime = resolver.timeout = 5.0
    try:
        cname = resolver.resolve(domain, 'CNAME')
        logger.info('-----------------------CNAME记录-----------------------')
        for i in cname.response.answer:
            for j in i.items:
                if not base_domains == j.to_text():
                    logger.info('【' + domain + '】不是子域名')
    except dns.resolver.LifetimeTimeout:
        logger.info("timed out, try again now")
        check_domain(domain)


# 用户域名列表请求模块
def process(url, page_no):
    try:
        res = requests.get(url + page_no.__str__())
        logger.info("response result:" + res.text)
        data = json.loads(res.text)
        if data['success']:
            for domain in data['resultObject']:
                check_domain(domain)
            total_count = data['totalCount']
            next_page = page_no + 1
            if next_page * size <= total_count:
                process(url + next_page.__str__(), next_page)
        else:
            logger.info("request fail, place try again later")
            return
    except requests.exceptions.ConnectionError:
        logger.info("network error, place try again later")


if __name__ == '__main__':
    process(base_url, page)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值