python+ocr+selenium 自动化登录校园网

主要问题:

  • 问题1验证码
  • 问题2重定向

解决方案:

问题1验证码

因为我校校园网的验证码较清晰,打算直接用ocr解决。
使用ddddocr(带带弟弟ocr) 实测准确率很高
ddddocr Github地址

查看校园网登录页面代码,发现验证码为js按一定规律生成的,验证码的图片无法获取到,没地址。
使用selenium库 截图整个登录页面 再定位验证码图片位置
再获取验证码图片的坐标与尺寸 并截图保存验证码框
解决获取验证码图片的问题

问题2重定向

随便进个网址,触发网络登录

在主要问题解决后,根据登录页面代码,使用selenium 确定账号 密码 验证码输入框位置
使用send_keys 传值, click登录键

注:

selenium中webdriver.Chrome 需要查询chrome浏览器版本号 下载配置相应ChromeDriver

附上代码:

import ddddocr
from selenium import webdriver
from time import sleep
from PIL import Image

driver = webdriver.Chrome()

driver.get("http://www.baidu.com") #解决重定向
sleep(0.5)

driver.get('校园网登录页面') #校园网登录页面
driver.maximize_window()
sleep(0.5)
driver.save_screenshot('./web_page.png')

vertify_kuang = driver.find_element_by_id('verifyCanvas')
location = vertify_kuang.location 
print('location',location)
size = vertify_kuang.size 
print('size',size)
rangle = (
    int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y']+size['height'])
)
print('rangle',rangle)

i = Image.open('./web_page.png')
frame = i.crop(rangle)
frame.save('./verify.png')

ocr = ddddocr.DdddOcr()
with open('./verify.png', 'rb') as f:
    img_bytes = f.read()
res = ocr.classification(img_bytes)
str(res)

vertifycode = driver.find_element_by_id('verify-num')
phonenumber = driver.find_element_by_id('web-auth-user')
password = driver.find_element_by_id('web-auth-password')
vertifycode.send_keys(res)
phonenumber.send_keys('*******') #账号
password.send_keys('******') #密码

button = driver.find_element_by_id('web-auth-connect')
button.click()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值