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

起因:每天开机就要登录一遍校园网,虽然程序方面很简单,但是作为一名当代大学生就应该学会如何更加高效的偷懒。
背景:重庆某大学学生,使用的中国电信提供的校园网(沙冰电信死坑还贼贵)、谷歌浏览器(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上面其他大佬的文章,由于编写过程没有刻意收集,这里无法著名参考出处,但十分感谢

你可能感兴趣的:(python,python,selenium,visual,studio,code)