网站域名监控python脚本

张春  金牌会员 | 2025-2-20 23:33:10 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

用Python编写的网站监测脚本,它可以查抄网站能否正常打开、域名IP是否能Ping通,以及域名IP的指定端口是否正常开放。这个脚本利用了requests库来查抄网站是否可访问,subprocess库来执行Ping下令,以及socket库来查抄端口是否开放。
脚本代码

import requests
import subprocess
import socket
def check_website(url):
    """查抄网站是否能正常打开"""
    try:
        response = requests.get(url, timeout=10)
        if response.status_code == 200:
            print(f"网站 {url} 可以正常访问,状态码: 200")
            return True
        else:
            print(f"网站 {url} 返回异常状态码: {response.status_code}")
            return False
    except requests.exceptions.RequestException as e:
        print(f"网站 {url} 无法访问,错误: {e}")
        return False
def ping_ip(ip):
    """查抄域名IP是否能Ping通"""
    try:
        # 利用ping下令(Windows和Linux/macOS兼容)
        param = "-n" if subprocess.os.name == "nt" else "-c"
        command = ["ping", param, "4", ip]  # 发送4个ping包
        output = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        if output.returncode == 0:
            print(f"IP {ip} 可以Ping通")
            return True
        else:
            print(f"IP {ip} 无法Ping通")
            return False
    except Exception as e:
        print(f"ing {ip} 时发生错误: {e}")
        return False
def check_port(ip, port):
    """查抄域名IP的指定端口是否开放"""
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(5)  # 设置超时时间
        result = sock.connect_ex((ip, port))
        if result == 0:
            print(f"IP {ip} 的端口 {port} 已开放")
            return True
        else:
            print(f"IP {ip} 的端口 {port} 未开放")
            return False
    except Exception as e:
        print(f"查抄端口 {port} 时发生错误: {e}")
        return False
    finally:
        sock.close()
def main():
    # 输入网站URL
    url = input("请输入要监测的网站URL(比方 https://www.example.com): ")
    # 输入要查抄的端口
    port = int(input("请输入要查抄的端口号(比方 80): "))
    # 提取域名
    domain = url.split("//")[-1].split("/")[0]
    # 解析域名IP
    try:
        ip = socket.gethostbyname(domain)
        print(f"域名 {domain} 的IP地址是: {ip}")
    except socket.gaierror as e:
        print(f"无法解析域名 {domain} 的IP地址,错误: {e}")
        return
    # 查抄网站
    check_website(url)
    # 查抄Ping
    ping_ip(ip)
    # 查抄端口
    check_port(ip, port)
if __name__ == "__main__":
    main()
 脚本功能阐明


  • 查抄网站是否可访问

    • 利用requests库发送HTTP哀求,查抄返回状态码是否为200。

  • 查抄域名IP是否能Ping通

    • 利用subprocess库调用系统的Ping下令,查抄IP是否可达。

  • 查抄域名IP的指定端口是否开放

    • 利用socket库尝试毗连指定端口,判断端口是否开放。

      • 利用方法

        • 安装依赖库:
           pip install requests
        • 运行脚本:python website_monitor.py
        • 输入要监测的网站URL和端口号,脚本会自动查抄并输出效果。示例输出 

          请输入要监测的网站URL(比方 https://www.example.com): https://www.google.com
          请输入要查抄的端口号(比方 80): 443
          域名 www.google.com 的IP地址是: 142.250.72.196
          网站 https://www.google.com 可以正常访问,状态码: 200
          IP 142.250.72.196 可以Ping通
          IP 142.250.72.196 的端口 443 已开放
          留意事项

          • 需要管理员权限才能执行Ping下令(在某些系统上)。
          • 如果目的网站有反爬虫机制,可能会返回非200状态码。
          • 端口查抄仅适用于TCP端口,不适用于UDP端口。




  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表