张春 发表于 2025-2-20 23:33:10

网站域名监控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端口。




  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 网站域名监控python脚本