python+windows任务计划程序实现每日定时登录校园网
程序员文章站
2024-01-13 20:22:58
过几天要回家了,不想带电脑,但是又怕急用。所以打算放在寝室里一直待机,可是学校的校园网很鸡肋,每隔差不多俩天断开一次,抑郁。于是有了下面这个脚本。1、实现原理先插入涉及模块import osfrom selenium import webdriver as webimport time1)检测网络是否正常因为我的是校园网,所以是借助os.system通过ping协议来检测的。(我试过了socket模块,不是很理想,专业知识不足,这里没法解释的很清楚)def checkPC(u...
过几天要回家了,不想带电脑,但是又怕急用。所以打算放在寝室里一直待机,可是学校的校园网很鸡肋,每隔差不多俩天断开一次,抑郁。于是有了下面这个脚本。
1、实现原理
先插入涉及模块
import os
from selenium import webdriver as web
import time
1)检测网络是否正常
因为我的是校园网,所以是借助os.system通过ping协议来检测的。(我试过了socket模块,不是很理想,专业知识不足,这里没法解释的很清楚)
def checkPC(url):
# 如果没有网络返回值为1(代表有错误),否则返回0
if os.system("ping " + url):
return False
else:
return True
2)通过python-selenium实现“物理”登录校园网
校园网登录界面很复杂,看了很久好不容易有一点思绪,结果被token难住了,扒皮呀!最后只能简单粗暴的实现登录,这里简称“物理登录”。(直接上代码)
# ip,用户名,密码,网络类型值@cmcc
def loginNet(ip, username, password, net="中国移动"):
# 创建浏览器对象
browser = web.ChromeOptions()
# 无窗口模式
# browser.headless()
# 本地谷歌浏览器驱动
driverPath = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
# 打开浏览器
driver = web.Chrome(options=browser, executable_path=driverPath)
time.sleep(10)
# 窗口最大化
driver.maximize_window()
time.sleep(10)
# 以get的方式打开网页
driver.get(ip)
# 等待加载
time.sleep(10)
# 获取指定id控件,并向控件中赋值
driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)
driver.find_element_by_id("domain").send_keys(net)
driver.find_element_by_id("login").click()
# 休息1秒
time.sleep(1)
# 关闭浏览器
re = driver.close()
# 再休息一秒
time.sleep(1)
# 检测是否连接成功
if re and checkPC("www.baidu.com"):
return True
return False
这里会遇到浏览器驱动版本不对应的问题,看这个大佬的博客。https://blog.csdn.net/weixin_44612439/article/details/87983282
(这是校园网登录界面,上面执行结果就是打开这个网址,然后把设定的信息输入进去,然后登录)
3)创建一个bat文件,通过任务计划程序每天1点钟执行一次(可以多弄几个,这样就能实现每小时执行)
下面是bat文件的代码
python Z:\auto.py
打开任务计划程序(windows+R,再输入compmgmt.msc)
(剩下的就很简单了,夜深了,不写了)
2、完整代码
import os
from selenium import webdriver as web
import time
def checkPC(url):
# 如果没有网络返回值为1(代表有错误),否则返回0
if os.system("ping " + url):
return False
else:
return True
# ip,用户名,密码,网络类型值@cmcc
def loginNet(ip, username, password, net="中国移动"):
# 创建浏览器对象
browser = web.ChromeOptions()
# 无窗口模式
# browser.headless()
# 本地谷歌浏览器驱动
driverPath = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
# 打开浏览器
driver = web.Chrome(options=browser, executable_path=driverPath)
time.sleep(10)
# 窗口最大化
driver.maximize_window()
time.sleep(10)
# 以get的方式打开网页
driver.get(ip)
# 等待加载
time.sleep(10)
# 获取指定id控件,并向控件中赋值
driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)
driver.find_element_by_id("domain").send_keys(net)
driver.find_element_by_id("login").click()
# 休息1秒
time.sleep(1)
# 关闭浏览器
re = driver.close()
# 再休息一秒
time.sleep(1)
# 检测是否连接成功
if re and checkPC("www.baidu.com"):
return True
return False
if __name__ == "__main__":
if not checkPC("www.baidu.com"):
print("The network is not connected!")
if loginNet("http://10.152.250.2", "username", "password"):
print("The network is connected!")
else:
print("The network is connected!")
3、运行结果,不会录屏,只有图片,自己臆想
(这种时长,是个老电脑人了)
本文地址:https://blog.csdn.net/qq_45492912/article/details/107650887
上一篇: 数据结构,数据结构与算法
下一篇: vuejs组件之间的通信