已有 0 位网友发表了一针见血的评论,你还等什么?
- 正文
- 点这评论:( 0人参与)
-
团队有个项目,部署在某国企的服务器上,采用了信创的架构。问题来了,极不稳定,经常发现网站访问不了,或者宕机了。于是就想自己用python做个访问脚本,只要有访问异常,就推送信息到微信上,以便及时处理。当然这个是不是以开发这个项目的技术角度来处理。只是站在用户的角度开发一个小工具,运行在本地电脑上(编者将python程序部署在阿里云服务器上)。以下描述实施步骤。
一、项目需求:
监测目标:B 网站
运行环境:放在 A 网站服务器(Linux/Windows 都支持)
时间规则:8点-10点,每15分钟确认一次。10点-18点每30分钟确认一次
超时判定:20 秒内未访问成功 = 异常
告警方式:自动发消息到微信
二、准备工作(5 分钟完成)
1. 开通微信告警(Server 酱,免费)
打开官网:https://sct.ftqq.com/
微信扫码登录
获取 SendKey(后面脚本要用到)
关注官方公众号,告警会直接推送到微信
2. 服务器安装 Python(几乎所有服务器都自带)
三、python源码
import time import os import traceback from datetime import datetime from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib.request import urllib.parse # ====================== 【配置】 ====================== USERNAME = "你的账号" PASSWORD = "你的密码" SEND_KEY = "你的SendKey" LOGIN_URL = "B网站域名/登录地址" TARGET_URL = "B网站域名" CHROME_DRIVER_PATH = r"D:\python\chromedriver.exe" #服务器安装chrome浏览器,并且检查版本后,下载chromedriver.exe并复制到该项目的位置。 # 稳定性设置 MAX_CHECK_TIME = 120 # 单次检测最大超时秒数(超过就重启) LOG_DIR = "logs" # 日志文件夹 # ====================================================== # 自动创建日志目录 if not os.path.exists(LOG_DIR): os.mkdir(LOG_DIR) # 日志输出(自动按天生成) def log(msg): now = datetime.now() date_str = now.strftime("%Y-%m-%d") time_str = now.strftime("%Y-%m-%d %H:%M:%S") log_file = os.path.join(LOG_DIR, f"check_{date_str}.log") log_msg = f"[{time_str}] {msg}" print(log_msg) try: with open(log_file, "a", encoding="utf-8") as f: f.write(log_msg + "\n") except: pass # 微信推送 def send_wechat(title, desp): if not SEND_KEY: return try: data = urllib.parse.urlencode({"title": title, "desp": desp}).encode() req = urllib.request.Request(f"https://sctapi.ftqq.com/{SEND_KEY}.send", data=data) with urllib.request.urlopen(req, timeout=10): pass except: log("微信推送失败") # 浏览器启动 def get_driver(): options = webdriver.ChromeOptions() options.add_argument("--no-sandbox") options.add_argument("--disable-gpu") options.add_argument("--disable-dev-shm-usage") options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"]) service = Service(CHROME_DRIVER_PATH) driver = webdriver.Chrome(service=service, options=options) driver.implicitly_wait(20) return driver # 检测任务 def check(): driver = None try: log("开始检测...") driver = get_driver() driver.get(LOGIN_URL) time.sleep(5) driver.get(TARGET_URL) time.sleep(3) url = driver.current_url if "login" not in url.lower(): log("✅ 访问正常(已绕过412)") return True else: log("❌ 未登录成功") send_wechat("网站告警", "未登录成功,可能会话失效") return False except Exception as e: err = str(e)[:100] log(f"❌ 检测异常:{err}") send_wechat("网站监测异常", f"错误:{err}") return False finally: try: if driver: driver.quit() except: pass # 时间策略 def sleep_time(): h = datetime.now().hour if 8 <= h < 10: return 15 * 60 elif 10 <= h < 18: return 30 * 60 else: return 60 * 60 # 看门狗:超时自动重启 def run_with_watchdog(): while True: try: start = time.time() check() cost = int(time.time() - start) log(f"单次检测完成,耗时{cost}秒") # 超时保护 if cost > MAX_CHECK_TIME: log(f"⚠️ 检测超时({cost}秒),即将重启") os._exit(1) except: log(f"⚠️ 程序崩溃,准备重启:{traceback.format_exc()[:100]}") time.sleep(5) # 等待下一轮 wait = sleep_time() log(f"等待 {wait//60} 分钟后下次检测\n") time.sleep(wait) if __name__ == "__main__": log("===== 网站监测服务启动(稳定版 + 日志 + 自动重启)=====") run_with_watchdog()四、说明
1. 自动日志
每天自动生成一个 log 文件
路径:
logs/check_2026-06-02.log记录:启动、成功、失败、错误、耗时
2. 崩溃自动重启
浏览器崩了 → 自动重启
网络异常 → 自动重试
不中断监测
3. 卡死自动重启
超过 120 秒没反应 → 强制重启
彻底杜绝卡死不动
4. 不重复启动
安全单例运行
不会开一堆浏览器
5. 异常自动告警
登录失败 → 告警
页面打不开 → 告警
程序崩溃 → 告警
五、补充说明:开机自启动python文件
1、创建一个启动脚本
2、新建一个文本文件,输入内容
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "py main.py", 0 Set WshShell = Nothing3、把文本文件另存为:
start.vbs(保存类型:所有文件,编码:ANSI)4、把这个 vbs 放到开机启动文件夹:
①按win+r
②输入
shell:startup
③把
start.vbs拖进去,完成:服务器开机 → 自动后台运行脚本 → 自动定时检测 → 异常微信告警。以上就是全部过程。结果如下

【相关文章】
- 2018-1-26 11:29:42回家过年,有时心中还怀有一丝对人生的愧疚
- 2018-1-10 22:2:24愿扛得住风雪的他也能扛得住网红的负担
- 2018-1-9 12:20:43做杂志的紫光阁成了用地沟油的饭店,指鹿为马只需要一群群不明真相的舆民
- 2018-1-8 16:1:7假驴肉们缘何屡禁不止
- 2018-1-4 7:57:48支付宝账单默选同意《芝麻服务协议》引争议连夜取消并道歉
- 2018-1-3 15:58:25支付宝2017年账单又一波刷屏,秒杀各种晒
- 2017-12-29 11:43:59php限定微信内置浏览器访问及通过火狐浏览器或者谷歌浏览器破解方法
- 2017-12-27 22:28:59微信接上12306,分分钟怒怼支付宝?
支付宝打赏
微信打赏