首页 > 其他分享 >公网域名DNS解析、网站响应脚本

公网域名DNS解析、网站响应脚本

时间:2024-03-06 18:02:20浏览次数:39  
标签:url writer 域名 DNS 公网 csv xxxxx

1.原因

因为需要梳理公网域名和DNS解析对应关系,因此制作此小脚本。

2.前期准备

在使用脚本前,确定已安装了requests模块和dnspython模块(在终端界面哦)

pip install requests dnspython

3.完整的请求代码

from urllib.parse import urlparse
import csv
import dns.resolver
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Dnt': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-User': '?1',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Ch-Ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"'
}

# 读取包含域名的文件
with open('D:\\python\\Domains.txt', 'r', encoding='utf-8') as file:
    urls = file.read().splitlines()    # 字符串方法:按照行分隔符(换行),装入列表urls里


# 打开文件以写入CSV输出
with open('D:\\python\\域名检查结果.csv', 'w', newline='', encoding='gbk') as csv_file:
    csv_writer = csv.writer(csv_file)
    # 写入CSV的标题行
    csv_writer.writerow(['URL', '域名', '公网DNS解析IP', '服务器响应'])

    for url in urls:
        print(url)
        # 解析URL
        parsed_url = urlparse(url)
        # 获取域名
        domain = parsed_url.netloc.split(':')[0]
        # 执行DNS解析以获取域名解析地址(A记录)
        try:
            answers = dns.resolver.resolve(domain, 'A')
            ip_addresses = '-'.join(str(answer.address) for answer in answers)  # 使用'-'连接所有IP地址

            try:
                # 设置超时时间为10秒的url请求
                response = requests.get(url, headers=headers, timeout=10)
                status_code = response.status_code
            except requests.RequestException as e:
                status_code = f"网站无响应:{e}"  # 如果请求失败,写入错误e信息

            # 写入CSV的一行数据
            csv_writer.writerow([url, domain, ip_addresses, status_code])

        except dns.resolver.NoAnswer:
            csv_writer.writerow([url, domain, "DNS无响应", "N/A"])  # DNS无响应时写入N/A
        except dns.resolver.NXDOMAIN:
            csv_writer.writerow([url, domain, "A域名不存在", "N/A"])  # 域名不存在时写入N/A
        except Exception as e:
            csv_writer.writerow([url, domain, "异常", e])  # 其他错误时写入错误信息

4.脚本用法:

把Domains.txt文件,存放在D:\Python\文件夹里(脚本中指定了具体位置),其中每一行存放一个URL,像这样(注意格式,有没带端口都可以)

执行过程会有显示:

执行结果如下图:

5.异常

如果有异常也会在Excle中记录,抛异常

遇到这种是:超时

网站无响应: HTTPSConnectionPool(host='xxxxx.xxxxx.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x0000012ABAF899D0>, 'Connection to xxxxx.xxxxx.com timed out. (connect timeout=10)'))

遇到这种是:你请求的格式不合要求,人家不跟你握手,但网站是存在。主动拒绝了你。

网站无响应: HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /h5/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000012ABAF775D0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

遇到这种是:证书错误,但网站是存在。有响应的。

网站无响应: HTTPSConnectionPool(host='xxxxx.xxxxx.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'xxxxx.xxxxx.com'. (_ssl.c:1002)")))

标签:url,writer,域名,DNS,公网,csv,xxxxx
From: https://www.cnblogs.com/Magiclala/p/18057207

相关文章

  • 长宽运营商DNS劫持
    大陆的网络环境,跟美国的还是有较大差距。互联网本应是开放的,是互通的。众多小运营商为了节省网间结算费用,故意不让用户连接,比如用DNS劫持的方式。说到底,这还是高层(如工信部)设计的制度有问题。解决方案:工信部应要求:1、大幅降低ISP(宽带运营商)网间结算费用;2......
  • GitHub Pages使用过域名解析,停止后还能跳转到原有地址的原因
    问题之前使用hexo+GitHubPages搭建个人博客,同时使用了在腾讯云买了域名,使用了域名解析,将GitHubPages的访问地址解析到了自己买的域名,在GitHub仓库里面使用了CNAME文件指定域名,如我的lingyejun.com。因此如果需要停止域名解析就需要现在阿里云域名解析那里暂停解析该网址(或者删......
  • 免费ssl证书,使用acme.sh,泛解析,阿里dns自动续期
    -阿里云注册用户,添加dns可编辑权限- curlhttps://get.acme.sh|sh-semail=xxxx@example.com -注意大小写exportAli_Key="<key>"exportAli_Secret="<secret>" - 执行阿里自动dns cd~/.acme.sh/./acme.sh--issue--dnsdns_ali-dexample.com-......
  • 极狐GitLab Runner 信任域名证书
    本文作者徐晓伟极狐GitlabRunner信任实例域名证书,用于注册注册极狐GitLabRunner。问题参见 极狐gitlab-runner-host.md说明解决方案是使用颁发给域名gitlab.test.helm.xuxiaowei.cn的证书,可以使用自己的域名去各大云厂商免费申请,或者使用自己根据域名gitlab.tes......
  • 使用dnSpy反编译DLL修改代码后生成新的DLL
    1.准备完整的DLL文件夹,包含需要引用的DLL2.使用dnSpy打开文件夹内需要修改的DLL,找到要修改的方法,例如: Kingdee.BOS.ServiceHelper.DataCenterService.IsLicControl(Contextctx,StringformId),右键编辑方法. 3.进入修改代码界面,进行代码修改,并添加需要的引用,点击"......
  • AR路由器配置内网通过公网IP访问内网服务器(域内NAT)
    为了保护内网服务器的IP,内网用户去访问服务器时,也需要使用公网IP,此时需要配置域内NAT功能。AR路由器域内NAT(也可称为NAT回流)实现内网用户通过公网IP访问内网服务器,详细配置分为如下两个场景。说明:如果不清楚内网PC与映射服务器是否在同一个网段,可直接参考场景二进行配......
  • GitLab Runner 添加 极狐GitLab 域名 host
    本文作者徐晓伟自定义GitLab域名解析查看极狐GitLabrunner日志查看极狐GitLabRunnerPod名称[root@anolis-7-9~]#kubectl-ngitlab-testgetpod|grepgitlab-runnermy-gitlab-gitlab-runner-6fb4bf7468-nmnkp0/1Running29(62sago)......
  • nginx 反向代理proxy_pass, 同一个端口多个域名的问题
    案例:serverip1:1.2.3.4domain1:aa.com>>指向ip1,port80domain2:bb.com>>指向ip1,port80serverip2:2.2.3.4domain3:cc.com>>指向ip3配置nginx转发到aa.com域名下的服务则需要做如下配置:location/{proxy_set_headerHostaa.com......
  • acme 手工 dns 泛域名https证书
    1acme.sh--issue-dtjjmcs.com-d*.tjjmcs.com--dns--yes-I-know-dns-manual-mode-enough-go-ahead-please2acme.sh--renew-dtjjmcs.com-d*.tjjmcs.com--yes-I-know-dns-manual-mode-enough-go-ahead-pleaseapacheacme.sh--install-cert-dtjjmcs.com--......
  • Nginx443端口绑定多域名
    Nginx443绑定多域名1.修改nginx的配置文件server{#基于域名的虚拟主机listen443ssl;server_nametest1.abc.com;ssl_certificate/home/nginx/ssl/test1.abc.com.pem;ssl_certificate_key/home/nginx/ssl......