南京信息工程大学实验室安全考试学习时长挂机脚本

这个实验室安全考试需要学习10小时,纯粹的浪费时间,但是挂机每5分钟就会跳出对话框然后时间停止,十分恶心,所以制作了一个Python挂机脚本,每隔20秒刷新一次网页,规避时间累积到5分钟跳出对话框,此外,在运行该脚本的时候将阻止电脑熄屏,以免出现bug。

使用方法:运行Python代码,在跳出的浏览器中的网页中输入自己的学号和密码,然后随便点一个学习界面就可以持续挂机了。

前置要求:在命令提示符中输入

pip install selenium webdriver-manager
python运行

,安装selenium

  1. import datetime
  2. from time import sleep
  3. from selenium import webdriver
  4. from selenium.webdriver.edge.options import Options
  5. from selenium.webdriver.edge.service import Service
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.support.ui import WebDriverWait
  8. from selenium.webdriver.support import expected_conditions as EC
  9. from webdriver_manager.microsoft import EdgeChromiumDriverManager
  10. import ctypes
  11. import threading
  12. # Windows API常量
  13. ES_CONTINUOUS = 0x80000000
  14. ES_SYSTEM_REQUIRED = 0x00000001
  15. ES_DISPLAY_REQUIRED = 0x00000002
  16. def prevent_screen_off():
  17. """防止屏幕关闭的函数"""
  18. while True:
  19. # 调用Windows API来防止系统休眠和屏幕关闭
  20. ctypes.windll.kernel32.SetThreadExecutionState(
  21. ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
  22. )
  23. sleep(30) # 每30秒执行一次
  24. def auto_refresh():
  25. # 目标URL
  26. url = "https://examsafety.nuist.edu.cn/index.php"
  27. # 设置Edge选项
  28. edge_options = Options()
  29. edge_options.add_argument('--ignore-certificate-errors')
  30. edge_options.add_argument('--ignore-ssl-errors')
  31. # 计数器
  32. refresh_count = 0
  33. try:
  34. # 启动防止屏幕关闭的线程
  35. prevent_screen_thread = threading.Thread(target=prevent_screen_off, daemon=True)
  36. prevent_screen_thread.start()
  37. print("已启动防止屏幕关闭功能")
  38. # 创建Edge浏览器实例
  39. print("正在启动Edge浏览器...")
  40. driver = webdriver.Edge(
  41. service=Service(EdgeChromiumDriverManager().install()),
  42. options=edge_options
  43. )
  44. # 最大化窗口(可选)
  45. driver.maximize_window()
  46. # 打开页面
  47. print("正在打开网页...")
  48. driver.get(url)
  49. print("开始自动刷新页面...")
  50. while True:
  51. try:
  52. # 获取当前时间
  53. current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  54. # 等待20秒
  55. sleep(20)
  56. # 刷新页面
  57. driver.refresh()
  58. # 等待页面加载完成
  59. WebDriverWait(driver, 10).until(
  60. EC.presence_of_element_located((By.TAG_NAME, "body"))
  61. )
  62. refresh_count += 1
  63. print(f"[{current_time}] 第{refresh_count}次刷新成功")
  64. except Exception as e:
  65. print(f"[{current_time}] 刷新出错: {e}")
  66. print("5秒后重试...")
  67. sleep(5)
  68. except KeyboardInterrupt:
  69. print(f"\n程序已停止,共成功刷新 {refresh_count} 次")
  70. finally:
  71. # 恢复系统默认的电源管理设置
  72. ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)
  73. try:
  74. input("\n按回车键关闭浏览器...")
  75. driver.quit()
  76. except:
  77. pass
  78. if __name__ == "__main__":
  79. print("程序启动,按Ctrl+C停止")
  80. print("-------------------")
  81. auto_refresh()
python运行

登录后您可以享受以下权益:

×
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
点击体验
DeepSeekR1满血版
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回顶部