基于python的校园网自动登录脚本_2021年版

发布时间:2023-06-20 14:00

起因:每天开机就要登录一遍校园网,虽然程序方面很简单,但是作为一名当代大学生就应该学会如何更加高效的偷懒。
背景:重庆某大学学生,使用的中国电信提供的校园网(沙冰电信死坑还贼贵)、谷歌浏览器(chrome牛皮)

  • 这里需要安装 :python环境 、和这两个包selenium、subprocess
    论坛有相关教程,可以自行搜索安装教程,这里不做过多解释

那么我们开搞:

1.分析正常登录校园账号的流程:

  • 登录校园网wifi —— 打开浏览器输入ip(有可能自动弹出)—— 输入账号、密码、选择身份类型
    \"在这里插入图片描述\"
    那么 我们可以通过脚本控制浏览器模拟用户登录的行文。
   driver = webdriver.Chrome()  # 这里使用的Chrome浏览器,
   driver.get(\'http://10.255.255.222/a70.htm\')   #这里输入你的校园网登录网址

2. 输入账户、密码、用户类型

万能 f12 调出前端代码

  • 通过ISP_select 找到输入用户类型
    \"在这里插入图片描述\"
   input_tag1 = driver.find_element_by_name(\'ISP_select\')  #找到组合框,这个可以通过name直接找
   input_tag1.send_keys(\'电信用户登录\')    #这是组合框,要选择你的宽带的运营商
  • 再找 用户名和密码
    \"在这里插入图片描述\"
    \"在这里插入图片描述\"
    找到用户名和密码
 input_tag = driver.find_element_by_xpath(\"//form[@name=\'f3\']/input[@name = \'DDDDD\']\")   #通过xpath确定账号框位置
 input_tag.send_keys(\"11111111111\")  #输入账号
 input_tag2 = driver.find_element_by_xpath(\"//form[@name=\'f3\']/input[@name = \'upass\']\")  #通过xpath确定密码框位置
 input_tag2.send_keys(\"222222222\")  #输入密码

3.检测网络连通

  • 有时候当其他设备登录账号 在运行这个脚本就回有这个界面,于是乎就需要再次登录。
    \"在这里插入图片描述\"
    因此这里就需要增加一个判断网络是否连通,如果没连通就再跑一次 连接代码
def Ping():
   backinfo = subprocess.call(\'ping www.baidu.com -n 1\', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   if backinfo:
      print(\'网络未连接\')
      return 1
   else:
      print(\"有网\")
      return 2     

总结

整体代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import subprocess

def spider():
   driver = webdriver.Chrome()
   driver.get(\'http://baidu.com.htm\')   #这里输入你的校园网登录网址
   time.sleep(2)
   input_tag1 = driver.find_element_by_name(\'ISP_select\')  #找到组合框,这个可以通过name直接找
   input_tag1.send_keys(\'电信用户登录\')    #这是组合框,要选择你的宽带的运营商
   input_tag = driver.find_element_by_xpath(\"//form[@name=\'f3\']/input[@name = \'DDDDD\']\")   #通过xpath确定账号框位置
   input_tag.send_keys(\"111111111\")  #输入账号
   input_tag2 = driver.find_element_by_xpath(\"//form[@name=\'f3\']/input[@name = \'upass\']\")  #通过xpath确定密码框位置
   input_tag2.send_keys(\"2222222\")  #输入密码
   input_tag2.send_keys(Keys.ENTER)    #敲一下回车
   time.sleep(10)  #10秒后自动关闭浏览器

# 测试网络是否连通
def Ping():
   backinfo = subprocess.call(\'ping www.baidu.com -n 1\', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   if backinfo:
      print(\'网络未连接\')
      return 1
   else:
      print(\"有网\")
      return 2     
   
if __name__ == \'__main__\':  #运行上面封装的方法
   # while True:
   spider()
   print(\"连接网络中·····\")
   connection = Ping()  #检测网络是否连通
   if connection == 2 :
      print(\"ping\")
   elif connection == 1:
      spider()
      
   exit()
  • 过程中有一个挠头的 问题,就是死活无法调用到浏览器 参考这里:https://blog.csdn.net/qiudechao1/article/details/89234582

  • 代码编写的过程也参考过csdn上面其他大佬的文章,由于编写过程没有刻意收集,这里无法著名参考出处,但十分感谢

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号