Python自动化:账号密码&获取计算题验证码

实现自动化登录和获取图片验证码功能

  1. 计算题验证码使用的OCR是ddddocr,经过实践比tesseract精度更高
  2. 对于页面具体的find_element需要结合源网址进行一定的修改,请注意
python 复制代码
# 自动添加用户名,密码,计算题验证码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
from PIL import Image
import re
from io import BytesIO
from selenium.webdriver.common.by import By
import pytesseract
import base64
from ddddocr import DdddOcr


# 实例化一个Chrome WebDriver
driver = webdriver.Chrome()

# 打开登录页面
driver.get("这里写网址")

# 等待页面加载
time.sleep(2)


# 查找用户名和密码输入框
username_input = driver.find_element(By.CSS_SELECTOR, 'input[placeholder="请输入用户名"]')
password_input = driver.find_element(By.CSS_SELECTOR, 'input[placeholder="请输入密码"]')


username_input.send_keys("这里写账号名")
password_input.send_keys("这里写密码")


# 查找验证码图片元素
captcha_image_element = driver.find_element(By.CLASS_NAME, 'captch-img')

# 获取验证码图片的 base64 编码
captcha_base64 = captcha_image_element.get_attribute("src").split(",")[1]

# 解码base64编码的图片
captcha_image = Image.open(BytesIO(base64.b64decode(captcha_base64)))


# 使用ddddocr进行OCR识别
ocr = DdddOcr(beta=True)
captcha_text = ocr.classification(captcha_image)

# 去掉最后一个字符
captcha_text = captcha_text[:-1]


print("识别的验证码:", captcha_text)

# 从验证码中提取算术表达式
calculation = re.search(r'(\d+)\s*([-+])\s*(\d+)', captcha_text)
if calculation:
    num1 = int(calculation.group(1))
    operator = calculation.group(2)
    num2 = int(calculation.group(3))

    # 计算结果
    if operator == '+':
        result = num1 + num2
    elif operator == '-':
        result = num1 - num2
    else:
        result = None

    print("计算结果:", result)
else:
    print("未能提取算术表达式")



# 将结果填入验证码输入框 
input_element = driver.find_element(By.CSS_SELECTOR, 'input[placeholder="请输入验证码"]')
input_element.clear()
input_element.send_keys(str(result))


# 提交登录表单
login_button = driver.find_element(By.CSS_SELECTOR, 'button.el-button.login_text.lg-btn.el-button--primary.el-button--medium')
login_button.click()

# 等待登录成功后页面加载完成
time.sleep(2)

#显示登录成功
print("登录成功")

# 关闭浏览器
driver.quit()
相关推荐
碳酸的唐2 小时前
A* 工程实践全指南:从启发式设计到可视化与性能优化
python·神经网络
深蓝电商API2 小时前
静态网页 vs 动态网页:爬虫该如何选择抓取策略?
爬虫
执尺量北斗4 小时前
[特殊字符] 基于 Qt + OpenGL 实现的入门级打砖块游戏
开发语言·qt·游戏
夏子曦4 小时前
C#内存管理深度解析:从栈堆原理到高性能编程实践
开发语言·c#
倔强青铜三5 小时前
苦练Python第64天:从零掌握多线程,threading模块全面指南
人工智能·python·面试
Q26433650236 小时前
【有源码】基于Hadoop生态的大数据共享单车数据分析与可视化平台-基于Python与大数据的共享单车多维度数据分析可视化系统
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
jiajixi6 小时前
Go 异步编程
开发语言·后端·golang
QX_hao6 小时前
【Go】--strings包
开发语言·后端·golang
计算机毕业设计木哥6 小时前
计算机毕设选题推荐:基于Hadoop和Python的游戏销售大数据可视化分析系统
大数据·开发语言·hadoop·python·信息可视化·spark·课程设计