问题背景
网站建设定制开发连上后需要手动登录认网站建设定制开发证后才能正常使用
解决方案
模拟请求URL(不好用)
网站建设定制开发可以看到登录时请求的URL并不简单
网站建设定制开发这种可以成功,网站建设定制开发但并不总能成功,网站建设定制开发主要问题可能是这个请求的URL每次都是变化的,导致会失效,于是更推荐下面的更稳定的方案
通过selenium库模拟登录过程
主要步骤
- 需要下载一个驱动来打开浏览器
我用的是谷歌浏览器驱动,也可以用其他浏览器的驱动前提是你要有对应的浏览器,驱动版本需要对应你的浏览器的版本号
查看谷歌浏览器版本号(也可以在设置里面查看)
- 模拟登录过程
通过selenium库对登录界面的一些元素进行定位,这里面主要就是定位账号密码输入框并进行输入。具体元素的id或者名称可以通过查看登录界面的前端代码得知。
代码
# 湖北工业大学校园网自动登录脚本from selenium.webdriver.common.by import By # 解决browser.find_element_By_from time import sleep# 打开浏览器from selenium.webdriver.chrome.options import Options # 解决不打开浏览器问题from selenium import webdriverfrom selenium.webdriver.chrome.service import Service as ChromeService# 校园网iplogin_ip = "http://202.114.177.246" # 湖工大校园网ip# 配置username = "2010301019" # 账号password = "XXXXXX" # 密码yys = "@cucc" # 运营商(通过下方对应关系来确定符号)# 联通-> "@cucc"# 移动-> "@cmcc"# 电信-> "@ctcc"# 校园网->""def login(): # 配置浏览器 options = Options() options.add_argument('headless') # 隐藏浏览器 # 获取驱动 service = ChromeService(executable_path=r"D:\Desktop\code\Python\xywLogin\chromedriver.exe") # 具体地址为下载的浏览器驱动所在位置 driver = webdriver.Chrome(service=service, options=options) # 启动浏览器 driver.get(login_ip) # 设置定位等待时间(因网速原因需要等待网页加载好) driver.implicitly_wait(3) # 判断是否已经登录,已经登录则直接退出 try: driver.find_element(By.ID, "logout") print("already login") driver.quit() return # 通过捕获"找不到登出元素异常"来判断未登录 except Exception as e: print("no login") # 设置定位等待时间 driver.implicitly_wait(1) # 定位输入账号处并输入账号 driver.find_element(By.ID, "username").send_keys(username + yys) # 定位密码并输入密码 driver.find_element(By.ID, "password").send_keys(password) # 定位登录并点击登录 driver.find_element(By.ID, "login-account").click() # 设置定位等待时间 sleep(1) # 关闭浏览器 driver.quit()if __name__ == '__main__': login()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
这样就能实现运行一次脚本在后台自动登录一次校园网了
再结合计算机自带的任务启动程序,就可以实现每次解锁锁屏的时候自动登录校园网
配置每次打开屏幕时自动登录
- 打开任务计划程序(电脑自带)
- 创建任务
- 常规
- 触发器内新建触发器
- 操作里新键操作(此步填入脚本的位置)
- 条件里也可以简单设置一下
运行起来可能会有驱动的黑框,解决方法可以参考这篇文章
至此可以实现每次解锁电脑时自动登录校园网,未登录状态时锁屏再解锁电脑即可
由于近期校园网总是gank学生(指总是掉线),本来打算实现每次断网都能触发这个脚本实现自动登录,但是没能成功找到一个合适的触发条件,暂时想到的唯一的方法是,间隔几秒检测一下网络状态,这样可以实现,但是需要消耗一定的运行内存来持续检测,也不太推荐用。
代码
# 需要结合上面的代码# 判断网络状态from subprocess import run, PIPEdef judge_net_state(): cnt = 1 while True: # ping一次百度来判断网络状态 r = run('ping www.baidu.com', stdout=PIPE, stderr=PIPE, stdin=PIPE, shell=True) # 当网络异常时重新登录网络 if r.returncode: login() # 这里写login函数 print('relogin 第{}次'.format(cnt)) print(time.localtime()) cnt += 1 # print('正常联网') sleep(10) # 每10s检查一次网络状态- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
先写这么多,如果有需要可以再讨论,如果不想看代码想直接白嫖现成脚本软件的也可以与我联系。