自动连接校园网(河海大学)


layout: post # 使用的布局(不需要改)
title: 自动连接校园网(河海大学) # 标题
subtitle: 网络 #副标题
date: 2024-01-09 # 时间
author: BY ThreeStones1029 # 作者
header-img: img/about_bg.jpg #这篇文章标题背景图片
catalog: true # 是否归档
tags: 网络 #标签


文章目录

  • 一、前言
  • 二、必要准备
  • 三、校园网必要信息获取
  • 四、代码编写
    • 4.1、判断不同平台
    • 4.2、创建浏览器设置
    • 4.3.判断是否连接网络
    • 4.4.未连接
    • 4.5.已连接
  • 五、windows自动连接设置
  • 六、ubuntu自动登录设置
  • 七、参考博客与资料

一、前言

马上放寒假了,放假在家可能也会需要用到实验室的电脑,但是使用校园网每一到两天会自动断,所以想着写一个脚本来自动连接校园网。

目前仅实现windows(windows11)以及ubuntu系统(ubuntu20.04)

二、必要准备

浏览器:chrome-google

需要安装chromedriver.exe(windows),或者chromedriver(ubuntu)

下载地址:https://googlechromelabs.github.io/chrome-for-testing/ (120版本及以上)

CNPM Binaries Mirror (npmmirror.com)(较低版本)

查看版本方法:在浏览器地址栏输入:chrome://version/

三、校园网必要信息获取

大部分高校的校园网连接以get或者post方式连接,他们都是http请求方法。本文以河海大学校园网为基础,河海大学校园网为post方式。更多的想要了解它们有什么不同可以看这里。

河海大学校园网网页(未登录):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

河海大学校园网网页(已登录):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要获取一些登录界面的关键字用于代码自动连接时去检测,可以在登录界面按F12,以获取登录名为例,我们可以按途中方式获取username,其余每一个方框信息获取方式类似。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、代码编写

有了校园网的信息,我们就可以开始写代码了。

4.1、判断不同平台

if platform.system().lower() == "linux":service = Service(executable_path="ubuntu下载的chromedriver绝对地址")
else:service = Service(executable_path="windows下载的chromedriver.exe绝对地址")

4.2、创建浏览器设置

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--ignore-certificate-errors-spki-list')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-ssl-errors')
# 创建浏览器
driver = webdriver.Chrome(service=service, options=chrome_options)
# 设置窗口大小
driver.set_window_size(1920, 1080)

其中

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

这里的三行在windows下可以不加,但我的ubuntu不加会报错。

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally.(session not created: DevToolsActivePort file doesn't exist)(The process started from chrome location /opt/google/chrome/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

4.3.判断是否连接网络

try: # 判断当前的页面中是否是已经登录的界面,如果有找到tologout证明已经登录了driver.implicitly_wait(5)driver.find_element(By.XPATH, "//*[@id='toLogOut']")print("find tologout!") 

4.4.未连接

except NoSuchElementException:print("开始连接学校网络……")# 下面的id信息可以在源码中找到,账户、密码driver.implicitly_wait(5)username_input = driver.find_element(By.XPATH, "//*[@id='username']")password_input = driver.find_element(By.XPATH, "//*[@id='pwd']")  # 选择网络服务选项select_service = driver.find_element(By.XPATH, "//*[@id='selectDisname']")#  _service_0:校园网(Campus NET)		#  _service_1:中国移动(CMCC NET)		#  _service_2:中国电信-常州(CTCC NET-CZ)	#  _service_3: 中国联通-常州(CUCC NET-CZ)			services = driver.find_element(By.XPATH, "//*[@id='_service_1']")# 这个地方,有些学校可能不一样,有的就是loginLink,需要仔细查看login_button = driver.find_element(By.XPATH, "//*[@id='loginLink_div']") print("网页加载完毕")# # 传入相关参数,密码、账户、输入框需单击激活后才可输入↓,id名称上述方法同理username_input.send_keys(username)driver.find_element(By.XPATH, "//*[@id='pwd_tip']").click()password_input.send_keys(password)select_service.click()services.click()login_button.click()print("连接成功")# driver.close()

这里面的"//*[@id=‘loginLink_div’]"用于定位打开的浏览器窗口中的各个部分。本质上这种方式还是模仿了一个浏览器的操作。

4.5.已连接

else:print("已登录")# f = input("已登录,要退出吗?(Y/N)\n")# if f.lower() == "y":#     driver.find_element(By.XPATH, "//*[@id='toLogOut']").click()#     driver.find_element(By.XPATH, "//*[@id='sure']").click()#     print("已退出登录")#     # driver.close()# else:#     print("程序结束")# driver.close()

这里注释部分打开可以用于手动退出,不过本来就是为了登录所以没有必要打开。

完整部分代码可以在这里下载:

AutoLoginCampusNetwork/ at main · ThreeStones1029/AutoLoginCampusNetwork (github.com)

五、windows自动连接设置

按住win+R,输入compmgmt.msc,确定,进入计算机管理界面,创建一个基本任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具体的触发条件可以自己改改。

六、ubuntu自动登录设置

有了代码后,我们就需要像windows一样去设置任务计划,在ubuntu下我们可以使用cron来帮我们实现。

命令行输入:

crontab -e

第一次输入会需要选择编辑器,选你熟悉的就行

然后在最后一行填入要执行的命令

0 */4  *   *   * /home/user/anaconda3/bin/python /home/user/Desktop/AutoLoginCampusNetwork/auto_login_webdriver.py >> /home/user/Desktop/AutoLoginCampusNetwork/auto_login_webdriver.log 2>&1

解释:

0 */4  *   *   * 表示每4个小时运行一次,每一个位置从左到右代表分钟、小时、天、月、周。具体解释可以看[这里](https://zhuanlan.zhihu.com/p/350671948)/home/user/anaconda3/bin/python: 带有selenium等库的python环境路径/home/user/Desktop/AutoLoginCampusNetwork/auto_login_webdriver.py: python脚本路径/home/user/Desktop/AutoLoginCampusNetwork/auto_login_webdriver.log 2>&1:脚本运行的终端输出会保存到此。

运行后大致会生成这样的信息。我这里为了测试是每分钟运行一次脚本。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

七、参考博客与资料

1.post与get对比

2.Ubuntu 使用 Cron 实现计划任务

3.图片若有损失,可以到我的个人博客查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAMES101-Assignment4

一、问题总览 实现de Casteljau算法来绘制由4个控制点表示的Bzier曲线。需要修改main.cpp中的如下函数: bezier:该函数实现绘制Bzier曲线的功能。它使用一个控制点序列和一个OpenCV::Mat对象作为输入,没有返回值。它会使t在0到1的范围内进行…

Python采集微博评论做词云图

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 第三方模块使用: import requests >>> pip install requests import wordcloud >>> pip install wordclou…

扩展学习|数据融合助推商务智能与分析

文献来源:[1]李爱华,续维佳,石勇.基于数据融合的商务智能与分析架构研究[J].计算机科学,2022,49(12):185-194. 一、信息融合 (一)信息融合定义演变 早期信息融合的定义指出,其主要任务是综合分析若干传感器观测到的信息[9,…

微信小程序canvas画布实现矩形元素自由缩放、移动功能

获取画布信息并绘制背景 .whml <canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="get_rect_touch_position" bindtouchmove="move_or_scale" bind:tap="finish_edit_check"/> .wxss .c…

【案例实战】业务稳定性运行之全链路混合压测

1.全链路压测开展步骤 &#xff08;1&#xff09;什么是全链路压测 全链路压测是指基于真实业务场景&#xff0c;通过模拟海量的用户请求&#xff0c;对整个后台服务进行压力测试&#xff0c;从而评估整个系统的性能水平。 对应用程序的整个技术栈进行完整的压力和性能测试&a…

关于24年信息系统项目管理师论文如何提升?

信息系统项目管理师论文满分是75分&#xff0c;45分及以上为及格&#xff0c;论文评分可分为优良、及格与不及格3个档次。 评分的分数可分为&#xff1a; &#xff08;1&#xff09;60分至75分优良&#xff08;相当于百分制80分至100分&#xff09;。 &#xff08;2&#xf…

数模学习day09-cftool使用

老版本的MATLAB可以在命令行使用cftool打开&#xff0c;2017a的版本可以直接找到。 x和y在你的工作区中需要已经存在&#xff0c;然后打开该工具箱就可以看见。 选择X和Y xy选择好之后就自动画好了拟合曲线。 Results分析 画好之后结果就呈现在这里了 这里的p1就是拟合系数&…

用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化

目录 一. 简述二. Fork 项目三. 搭建开发环境四. 初始化皮肤项目五. 添加相关依赖六. 预览 一. 简述 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过&#xff0c;项目地址&#xff1a;xxl-job。它是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单…

【代码随想录】刷题笔记Day48

前言 早上练车去了&#xff08;好久没有8点前醒了&#xff09;&#xff0c;练科目二两小时下来脚根可真酸啊&#xff0c;希望下周一把过。练完顺带去Apple西湖免费换新了耳机&#xff0c;羊毛爽&#xff01; 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09;…

JS逆向之无限debugger对抗

文章目录 JS中实现debugger的方法无限Debugger示例Demo1Demo2Demo3Demo4总结 无限Debugger实战 JS中实现debugger的方法 首先&#xff0c;我们要知道&#xff0c;在浏览器实现debugger的方法有哪些 debugger关键词 &#xff0c;相当于C内联汇编的int3&#xff0c;在代码中嵌入…

网工内推 | 运维工程师,国企、上市公司,RHCE认证优先

01 广东机场白云信息科技股份有限公司 招聘岗位&#xff1a;基础架构运维工程师&#xff08;中级&#xff09; 职责描述&#xff1a; 1、参与公司业务系统的监控、巡检、维护、故障定位、原因分析&#xff1b; 2、负责业务系统的上线、升级割接工作&#xff1b; 3、负责服务器…

Unity 踩坑记录 AnyState 切换动画执行两次

AnySate 切换动画 Can Transition To Self 将这个勾选去掉&#xff01;&#xff01;&#xff01;

Python学习之路-Hello Python

Python学习之路-Hello Python Python解释器 简介 前面说到Python是解释型语言&#xff0c;Python解释器的作用就是用于"翻译"Python程序。Python规定了一个Python语法规则&#xff0c;根据该规则可编写Python解释器。 常见的Python解释器 CPython&#xff1a;官方…

文件或目录损坏的磁盘修复方法

文件或目录损坏是一种常见的计算机问题&#xff0c;可能由多种原因导致&#xff0c;如磁盘故障、病毒或恶意软件攻击、文件系统错误等。这些损坏可能导致数据丢失或无法访问文件&#xff0c;因此及时修复至关重要。本文将深入探讨文件或目录损坏的原因&#xff0c;并提供相应的…

试用统信服务器操作系统UOS 20

作者&#xff1a;田逸&#xff08;formyz&#xff09; 试用统信Linux操作系统UOS&#xff0c;想了解一下用已有的Linux经验能否轻松驾驭它。以便在某些场景下&#xff0c;可以多一种选择。本次试验在Proxmox VE 8&#xff08;以下简称PVE 8&#xff09;平台下进行&#xff0c;采…

唠一唠Java线程池

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Java线程池&#xff0c;如果没有线程池&#xff0c;每个线程都需要手动创建和销毁线程&#xff0c;那将是多么低效和耗资源啊&#xff01; 线程池的核心作用就是复用已创建的线程&#xff0c;减少…

一个初级测试工程师的经历--我在阿里的两年

工作两年了&#xff0c;我一直希望让自己每年对测试的理解更深入一层。 谈轮了自己对各种测试的理解&#xff0c;这一年来&#xff0c;虽然对那些理概念的有所加强&#xff0c;自我感觉没有什么质的变化。前些天听我们公司的一位测试经理讲《敏捷测试》豁然开朗。他在学造飞机&…

【AnyText】文字处理AI,让平面设计如虎添翼 —— 登录和使用:详细指南!

AnyTex 关于Anytext登录魔搭社区魔搭社区链接魔搭社区登录登录完毕 登录AnyText使用Anytext生成带文字的图片手绘拖框随机 编辑图片中的文字 总结 关于Anytext 2024年1月5日&#xff0c;阿里达摩院宣布推出名为“AnyText”的算法&#xff0c;旨在解决AI绘图在处理文字创作时面临…

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.&#xff09;引入Jackson库2.&#xff09;定义实体3.&#xff09;解析json字符串4.&#xff09;运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

c++学习:STL库(框架)+字符串模板类string+vector容器+list链表

目录 stl库 常用组件包括 字符串库 字符串模板类string 头文件 最常用的字符串模板类 字符串类型 模板原型 模板的成员数据类型 模板成员函数 有些函数会有重载&#xff0c;可以去下面网址查看std::basic_string - cppreference.comhttps://zh.cppreference.com/w/cp…