学校校园网总是在早上五点断开,对有远程办公需求的打工人来说,很伤脑筋。
我尝试在网上找了实现自动登录校园网的教程,发现基本都是用post实现自动登录的,但我们学校的官网是用get实现登录的,搞了半天终于登录成功了,但只是session.get返回内容是说我登录成功了,电脑还是没连上网,就特别难受。不知道是不是还有一堆奇怪的js请求没有模拟出来的缘故。
既然这么麻烦,我就干脆就用selenium 模拟浏览器的操作,最后登录成功了,以下是代码。其中使用的谷歌浏览器驱动器链接如下,driver和exe都能从里面找到Chrome for Testing availability。
# 自动检查当前网络是否断网
# 如果断网,则连接网络
# 如果没有断网,则等15分钟后继续判断是否断网
import time
import subprocess
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 检查网络状态
def is_network_connected():
try:
response = subprocess.run(['ping', 'cn.bing.com'], capture_output=True, text=True)
return '丢失 = 0' in response.stdout
except subprocess.CalledProcessError:
return False
# 校园网登录函数
def login_to_campus(driver):
# 打开登录界面
driver.get('http://www.msftconnecttest.com/srun_portal_pc?ac_id=0&theme=pro')
driver.get('http://www.msftconnecttest.com/srun_portal_pc?ac_id=0&theme=pro')
username_input = driver.find_element_by_id('username')
password_input = driver.find_element_by_id('password')
username_input.send_keys('账号')
password_input.send_keys('密码')
login_button = driver.find_element_by_id('login-account')
login_button.click()
driver.implicitly_wait(5)
try:
logout_button = driver.find_element_by_id('logout')
if logout_button:
print('Successfully login to campus network...')
status = True
else:
print('Fail to logging, try to login again...')
status = False
except:
print('Unknown error!')
status = False
return status
if __name__ == "__main__":
status = is_network_connected()
while True:
if is_network_connected():
print('Network is connected! Waiting for 15 minutes...')
time.sleep(900)
status = True
else:
print('Network is not connected! Logging to campus network...')
# 创建浏览器实例
driverpath = r"C:\Program Files\Google\Chrome\Application\chromedriver-win64\chromedriver.exe"
driver = webdriver.Chrome(driverpath)
# 登录校园网
status = login_to_campus(driver)
# 如果网络已连接,关闭浏览器 如果网络断开,继续重新连接
while not status:
status = login_to_campus(driver)
# status为True时跳出循环, 关闭浏览器
driver.implicitly_wait(10)
driver.quit()
print('Close Chrome browser...')
运行成功
接着可以通过pyinstaller安装包将脚本打包成exe文件,命令行运行一下代码。
>conda install pyinstaller #安装pyinstaller
>pyinstaller --onefile moni_chrome.py # 打包文件到exe
运行成功
运行moni_chrome.exe成功
以上仅供学习交流,祝各位工作顺利,生活幸福!