哈工程本科生院学生登录网站验证码识别

本文使用使用tesseract开源软件识别验证码图片,详细操作请博客tesseract-ocr的安装及使用pycharm来运行 - kongbursi - 博客园

废话不多说,直接上代码

import requests
from fake_useragent import UserAgent
from lxml import etree
import base64
import pytesseract
from PIL import Image

# 使用tesseract开源软件识别验证码图片
pytesseract.pytesseract.tesseract_cmd = r'.\tesseract\Tesseract-OCR\tesseract.exe'

# 使用session请求,方便后续操作
session = requests.Session()
# 制造假的headers
fake_header = UserAgent()

if __name__ == "__main__":
    
    # 学校登录的网址
    url = "https://cas.hrbeu.edu.cn/cas/login?service=http://edusys.hrbeu.edu.cn/jsxsd/index.jsp#/"
    
    # 由于学校网站的源代码跟审查代码不一样(查了一下应该是异步请求,本人还没学会)
    # 于是get请求了一下验证码
    url1 = "https://cas.hrbeu.edu.cn/sso/apis/v2/open/captcha?captchaSize=4"
    
    # 随机生成假headers
    headers = {"User-Agent": fake_header.random}
    # 获取HEU登录网站
    session.get(url=url, headers=headers)
    
    # 获取验证码的json,发现它是以data:image/jpeg;base64,开头的
    # 百度一下,可以知道,这是以base64方式编码的jpeg图片
    # 有CTF经验的同学可以举手进行base64转换了
    page_text = session.get(url=url1, headers=headers).json()
    img_imf = page_text['img']
    
    # 将data:image/jpg;base64格式的数据转化为图片并下载
    page_content = base64.b64decode(img_imf)
    file_path = './验证码.jpeg'
    with open(file_path, 'wb') as f:
        f.write(page_content)
    
    # 识别图片并打印
    image = Image.open('验证码.jpeg')
    text = pytesseract.image_to_string(image)
    print(text)

下面是爬取到的验证码.jpeg图片:

 

下面是输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z天南之城Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值