距离上次写完自动登录校园网的代码过去已经有一段时间了,在使用过程中,我搭配电脑的开机自启服务一块使用,感觉不错,但是也有一点小问题。

问题如下:有时候电脑开机之后并不会自动连接NJUPT-CMCC。

因为上述问题,我开机之后电脑运行会出现无法获取该DNS的信息,在我手动进行WiFi的连接之后,我的程序会卡住无法正常运行,我只能重新去点击代码运行多一次,一次不麻烦,但是次数多了,肯定会觉得麻烦。恰好今晚开机也出现这个问题,于是查找了CSDN一些大佬关于自动连接wifi的文章,并稍加修改加入旧代码当中。
参考文献:
Python之pywifi模块
python wifi模块

感谢以上两篇文章的大佬。

代码仍存在的问题:

1、代码不能解决自动打开电脑wifi开关的问题。需要电脑一直保持无线网卡的开启。
2、关于自动连接wifi模块,存在耗时较多的问题。但这个时间可以大家依据自身日常使用来调节sleep的时间,我个人觉得3+5秒比较适合。
3、新加入代码分块不明显,看着会稍累。局限于本人水平有限,就不分开过多方法了。

下面直接上代码,如果有不懂的可以翻找我之前的博客,里面都很详细,或者评论留言。

新加的代码部分:

from pywifi import PyWiFi, const, Profiledef check_wifi():wifi_name = "NJUPT-CMCC"wifi_num = 0wifi = PyWiFi()iface = wifi.interfaces()[0]if iface.status() in[const.IFACE_CONNECTED,const.IFACE_CONNECTING]:wifi_num = 0print('无线网卡 %s 已连接!' % iface.name())else:wifi_num = 1print('无线网卡 %s 未连接!' % iface.name())#判断wifi未连接while wifi_num == 1:iface.scan()results = iface.scan_results()for result in results:if result.ssid == wifi_name:print('wifi名称:{0},该信号强度:{1}。'.format(result.ssid, result.signal))#进行连接工作time.sleep(3)profile_info = Profile()profile_info.ssid = wifi_nameiface.remove_all_network_profiles()tmp_profile = iface.add_network_profile(profile_info)iface.connect(tmp_profile)time.sleep(5)if iface.status() == const.IFACE_CONNECTED: print("wifi: %s 连接成功!" % wifi_name)wifi_num = 0breakelse:print("wifi: %s 连接失败!" % wifi_name)wifi_num = 1else:pass#主程序
#判断网卡是否连接
check_wifi()

完整校园网自动登录代码如下:

#login_selenium.py
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time, os, requests
from pywifi import PyWiFi, const, Profile
'''
NJUPT-CMCC/ChinaNet自动登录代码
author:海hong2021年3月31号,加入wifi自动检测自动连接功能。
使用到pywifi。
'''def login(account, password):#print(account, password)input_account = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#edit_body > div.edit_row.ui-resizable-autohide > div.edit_loginBox.ui-resizable-autohide > form > input:nth-child(3)')))input_password = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#edit_body > div.edit_row.ui-resizable-autohide > div.edit_loginBox.ui-resizable-autohide > form > input:nth-child(4)')))button = driver.find_element_by_css_selector('#edit_body > div.edit_row.ui-resizable-autohide > div.edit_loginBox.ui-resizable-autohide > form > input:nth-child(2)')input_account[0].send_keys(account)input_password[0].send_keys(password)#print("准备点击")button.click()def back():button_back = driver.find_element_by_css_selector('#edit_body > div > div.edit_loginBox.ui-resizable-autohide > form > input')button_back.click()def quit():button_quit = driver.find_element_by_css_selector('#edit_body > div > div.edit_loginBox.ui-resizable-autohide > form > input')button_quit.click()time.sleep(2)confirm = driver.switch_to.alertconfirm.accept()print('你刚刚确认下线')time.sleep(5)confirm.accept()print('现在返回上网登录窗页面')def Is_OK():global IsCode#判断跳转界面#driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")page_information = driver.find_element_by_css_selector('head > title').get_attribute('textContent')if page_information == '认证成功页':#判断联网r = requests.get('http://www.baidu.com', timeout =30)#print(r.status_code)if r.status_code == 200:IsCode = 0print("login successfully")else:IsCode = 1quit()login(account, password)elif page_information == '信息页':print("出现信息页,正在返回准备重新登录")back()login(account, password)IsCode = 1elif page_information == '上网登录窗':login(account, password)IsCode = 1return IsCodedef Is_page():#判断跳转界面global IsCode#driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")page_information = driver.find_element_by_css_selector('head > title').get_attribute('textContent')if page_information == '上网登录窗':login(account, password)elif page_information == '信息页':back()login(account, password)elif page_information == '认证成功页':r = requests.get('http://www.baidu.com', timeout =30)if r.status_code == 200:IsCode = 0print("已登陆成功,无需重复登陆")else:quit()login(account, password)#检测页面是否跳转到认证成功页&能否正常上网count = 0while IsCode != 0:count = count + 1Is_OK()if IsCode == 1:print("第%s次验证无法通过"%str(count))else:print("第%s次验证通过"%str(count))if count == 4:print("验证次数过多,请注意是否断网或者账号密码出错!")breakdef check_wifi():wifi_name = "NJUPT-CMCC"wifi_num = 0wifi = PyWiFi()iface = wifi.interfaces()[0]if iface.status() in[const.IFACE_CONNECTED,const.IFACE_CONNECTING]:wifi_num = 0print('无线网卡 %s 已连接!' % iface.name())else:wifi_num = 1print('无线网卡 %s 未连接!' % iface.name())#判断wifi未连接while wifi_num == 1:iface.scan()results = iface.scan_results()for result in results:if result.ssid == wifi_name:print('wifi名称:{0},该信号强度:{1}。'.format(result.ssid, result.signal))#进行连接工作time.sleep(3)profile_info = Profile()profile_info.ssid = wifi_nameiface.remove_all_network_profiles()tmp_profile = iface.add_network_profile(profile_info)iface.connect(tmp_profile)time.sleep(5)if iface.status() == const.IFACE_CONNECTED: print("wifi: %s 连接成功!" % wifi_name)wifi_num = 0breakelse:print("wifi: %s 连接失败!" % wifi_name)wifi_num = 1else:pass#主程序
#判断网卡是否连接
check_wifi()url = 'http://p.njupt.edu.cn'
#设置无头模式
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options = chrome_options)
#driver = webdriver.Chrome()
wait = WebDriverWait(driver, 30)
driver.get(url)
account = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
password = 'XXXXXX'
IsCode = 1Is_page()driver.quit()
print("5秒后窗口自动关闭")
time.sleep(4)
os.sys.exit()

自动登录校园网代码加入wifi自动搜寻并主动连接部分相关推荐

  1. HttpClient实现自动登录校园网

    最近买了个nano Pi当作服务器,用来不间断的执行java程序,爬取超星网上未完成的作业并发送详情到qq邮箱中,省去了一个个翻看的繁琐操作. 因为学校会断电,网.若想让Nano Pi不需要人力干扰即 ...

  2. python自动登录校园网 密码_python实现校园网自动登录的示例讲解

    因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...

  3. Selenium使用浏览器自动登录校园网

    Selenium使用浏览器自动登录校园网 标签: python 爬虫 校园网需要登录验证,所以采用Selenium操作浏览器直接登录. 打开浏览器 from selenium import webdr ...

  4. python自动登录校园网 密码_python自动登陆校园网

    由于每次打开电脑都要手动的登录校园网,导致很麻烦,所以写了一个爬虫来模拟浏览器自动登录校园网的功能 1.使用Burpsuit对校园网登录接口进行抓包分析 简介:burpsuite是一款渗透工具,运行环 ...

  5. Windows和ubuntu使用python脚本自动登录校园网

    Windows和ubuntu使用python脚本自动登录校园网 背景: 事情事这样的: 最近拿着老板的服务器在玩,奈何学校没有找到合适的机房,无奈就搬回寝室放在一个无人问津的角落里,这科研条件让我也很 ...

  6. 开机自动登录校园网(西安电子科技大学)

    介绍 每次开机需要手动打开网页登录校园网,有些烦.本文给出开机自动登录校园网的方法,首先给出西安电子科技大学自动登录校园网的直接可用的脚本,然后给出通用所有大学校园网或单位内网的脚本改写方法. 环境要 ...

  7. 信阳师范学院自动登录校园网

    目录 一.项目功能 二.使用方式 三.软件下载 四.核心代码 一.项目功能 每次打开电脑都要打开网页重新登录校园网,天天如此简直是在浪费生命.这个项目可以实现校园网的自动登录.开机后校园网连接后直接自 ...

  8. 07 - 命令行(自动)登录校园网、服务器 - 研一

    第一章 登录校园网 用 curl sudo apt-get install curl 2020.9更新:登录页面的代码又改了 登录: curl 'http://10.3.8.211/login' -- ...

  9. python自动登录校园网_免费自动登录国科大校园网python脚本

    UCAS-Network-Login A python program that helps you log in UCAS network for free. 免费自动登录国科大校园网 声明:本软件 ...

最新文章

  1. Java中的多线程总结
  2. mysql server uuids_slave have equal MySQL Server UUIDs原因及解决
  3. AI替你接电话、老电影变4k画质、基于自研芯片服务器,百度智能云一口气发了20款产品...
  4. 面试--java实现一个多人图文聊天室(c/s或b/s),写出思路
  5. 不错的东西: AutoMapper
  6. hdu 4529(状态dp)
  7. javascript设计模式_开发者都应该了解的7种JavaScript设计模式
  8. java 对第三方的异常_Java第三方API调用打开文件方法时抛出异常
  9. 博客园社区登录帐号和第三方绑定的设置
  10. 如果一个国家是一种颜色,中国的颜色美哭了!
  11. Android RecyclerView之PagerSnapHelper原理解析(二)
  12. 概率论——超几何随机变量
  13. 快速生成树协议(spanning-tree)
  14. java 纳秒_如何在Java 8中使用Date API达到精确的纳秒精...
  15. 神马笔记 版本1.8.0——删除笔记/文件夹·技术细节篇
  16. 双硬盘装linux系统,在我的双硬盘windows电脑上安装ubuntu18.04
  17. 差分信号,共模与差模,共模滤波,差模滤波
  18. VS2015程序工程的ICO图标研究
  19. 【Clemetine】数据挖掘在零售业中的应用
  20. 懒散的奶牛(lazy)

热门文章

  1. php 选择地区 查找,地区编码查询_php根据ip查询所在地区的代码
  2. C语言初级学习---一个文件调用另一个源文件函数!
  3. jQuery Datepicker 日期插件
  4. opencv启动摄像头并且操作摄像头拍照
  5. 前端-Vuejs2.5开发去哪儿网
  6. Stay foolish stay hungry
  7. 容器化技术(十一):Kubernetes中Pod的调度策略-标签与污点实战
  8. QPSK调制解调和误码率
  9. android 浏览器应用商店,百度易揭秘:自带应用商店和浏览器 兼容安卓
  10. Windows 11 即将发布,微软欲“强推” Edge 浏览器?