饨篦 发表于 2025-6-11 14:01:40

网站域名监控python脚本

用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"Ping {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("/")
    # 解析域名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端口。




  
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 网站域名监控python脚本