WIFIConnect/wificonnect.py
2026-01-17 17:36:43 +08:00

103 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import subprocess
import time
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 参数配置
PING_HOST = "www.baidu.com"
USERNAME = "" # 在引号内填写账号
PASSWORD = "" # 在引号内填写密码
CHECK_INTERVAL = 60 # 每60秒ping一次监测网络连接
DISCONNECT_THRESHOLD = 300 # 断网300秒后尝试自动连接
options = Options()
options.add_argument("--headless") # 无头模式
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
options.add_argument("--disable-blink-features=AutomationControlled")
service = Service() # 若未配置 PATH这里填写 msedgedriver.exe 路径
def is_network_ok():
"""判断网络是否可用ping百度测试"""
try:
result = subprocess.run(
["ping", "-n" if subprocess.os.name == "nt" else "-c", "1", PING_HOST],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
return result.returncode == 0
except:
return False
def perform_login():
"""执行自动认证流程(无头浏览器)"""
driver = None
try:
driver = webdriver.Edge(service=service, options=options)
wait = WebDriverWait(driver, 30)
driver.get("http://10.33.0.2")
# 输入账号
username_input = wait.until(
EC.presence_of_element_located((By.ID, "username"))
)
username_input.clear()
username_input.send_keys(USERNAME)
# 输入密码
password_input = driver.find_element(By.ID, "password")
password_input.clear()
password_input.send_keys(PASSWORD)
print("已输入<账号密码>")
# 点击登录
login_btn = wait.until(
EC.element_to_be_clickable((By.ID, "login-account"))
)
login_btn.click()
print("已点击<登录>")
# 等待“代拨成功”弹窗
success_confirm = wait.until(
EC.element_to_be_clickable((By.CLASS_NAME, "btn-confirm"))
)
success_confirm.click()
print("<代拨成功>")
time.sleep(3)
except Exception as e:
print(f"登录过程中出现异常: {e}")
finally:
if driver:
driver.quit() # 确保浏览器关闭
def main():
disconnect_time = 0
try:
while True:
if is_network_ok():
disconnect_time = 0
print("网络正常")
else:
disconnect_time += CHECK_INTERVAL
print(f"网络中断 {disconnect_time}")
if disconnect_time >= DISCONNECT_THRESHOLD:
print("断网超时,自动认证...")
perform_login()
disconnect_time = 0 # 重置计时
time.sleep(CHECK_INTERVAL)
except KeyboardInterrupt:
print("\n用户终止程序,退出中...")
if __name__ == "__main__":
main()