基于python实现开机自动连接校园网(广工商)

基于python实现开机自动连接校园网(广工商)

​ 因为每次开机之后无法直接使用网络,每次嫌麻烦都要打开网页输入账号密码或者打开天翼校园客户端,所以直接做了一个自动化程序来帮助我每次开机自动连接校园网

python环境准备:

​ 1.python==>3.7

​ 2.selenium ==>3.14.0 (需要下载对应的浏览器驱动,具体的可以去csdn里面搜一下)

​ 3.pytesseract ==>0.39 (对应一个tesseract-OCR识别的工具,在github上面开源的,支持一般的字母数字识别)

主要流程:

​ 开机后自动启动此脚本,使用selenium自动化工具做对应的js页面处理,所以我们只用关心日常登录的过程,实际上我们也是让程序模拟执行我们日常登陆的操作流程。

分析过程:

​ 我们通过细心的观察不难发现每次连接网络后都会打开aHR0cDovL2VuZXQuMTAwMDAuZ2QuY246MTAwMDEvcXMvaW5kZXhfZ3ouanNwP3dsYW5hY2lwPTE4My41Ni42LjQ1JndsYW51c2VyaXA9MTcyLjIwLjIyMy4xMg==(经过base64加密)这个网站,那么我们主要处理的就是这个网站。

代码实现:

import re
import time
from selenium import webdriver
import pytesseract
from PIL import Image
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
user = '' # 账号
passworld = '' # 密码
driver = webdriver.Chrome()
driver.maximize_window()
pytesseract.pytesseract.tesseract_cmd = r'E:\tesseract-OCR\tesseract.exe'  # 换成自己电脑上的路径    指定tesseract.exe的路径
tesseract_dir_config = r"--tessdata-dir 'E:\tesseract-OCR\tessdata'"    # 换成自己电脑上的路径    指定训练集的路径
stop = False
while not stop:
    driver.get('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
    time.sleep(1)
    driver.save_screenshot('xyw.png')
    driver.find_element_by_xpath('//*[@id="username"]').send_keys(user)
    driver.find_element_by_xpath('//*[@id="password"]').send_keys(passworld)
    driver.find_element_by_xpath('//*[@id="code"]').send_keys()
    element = driver.find_element_by_id('image_code')
    # 计算出上下左右的位置
    left = element.location['x']
    top = element.location['y']
    right = element.location['x'] + element.size['width']
    bottom = element.location['y'] + element.size['height']

    im = Image.open('./xyw.png')
    im = im.crop((left, top, right, bottom))
    im.save('./code1.png')
    image = Image.open('./code1.png')
    img_str = pytesseract.image_to_string(image=image, lang='eng', config=tesseract_dir_config)
    img_str = re.sub("\s", '', img_str)
    print(img_str)
    if len(img_str) == 4:
        driver.find_element_by_xpath('//*[@id="code"]').send_keys(img_str)
    else:
        driver.find_element_by_xpath('//*[@id="code"]').send_keys(str(input('请输入验证码:')))
    driver.find_element_by_xpath('//*[@id="login"]/form/div[5]/div/button').click()
    try:
        WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.ID, 'success'))) # 判断元素是否可见
        stop = True
        driver.quit()
    except:
        pass
    
    
    
    
    
    
    '''
    	代码解释:
    		首先我们导入了需要用到的库 设置一下配置   主要的代码逻辑还是得看  while STOP:后面的
    		首先我们访问学校的网址,把selenium 的窗口调到最大,等待一秒钟等网址加载(根据电脑的配置可以自行调整速度),保存该页面的图片(等下验证码处理的时候会用到),选择到对应的账号密码的输入框把账号密码输入进去(这里是固定的所以基本不用管),最主要的还是做验证码的识别和处理。
    		然后我们再选择到验证码的页面元素,通过网页来看不难看出有一个固定的id是image_code,选择到这个id然后计算出来图片的所在的位置,具体的可以看我另一篇博客:通过selenium截图,然后经过ocr识别出验证码进行登录操作,最后再关闭selenium
    		
    	但是这里有一点需要注意,网上开源的ocr识别没有那么准确,再加上开机之后是断网的环境无法使用百度等接口实现图片识别,所以此处加了一个逻辑处理,若没有识别正确的话需要人工输入或者重试,目前这里是想到比较好的办法了,若是有更好的可以加我的微信详谈:G07527386  (请注明来意)
    
    '''

将脚本添加到开机启动

​ 创建一个activate.bat文件:再把此行代码加入(将路径替换一下成自己的python路径就可以了)

cmd /k "timeout /t 5&&E:\py3.7.2\python.exe code.py"    

​ 再按Win+R键打开输入shell:startup将之前创建的activate.bat文件创建一个快捷方式放入里面就可以了

​ 到此处本次的脚本就制作完成了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值