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()
相关推荐
lly20240615 小时前
HTML与CSS:构建网页的基石
开发语言
一只会写代码的猫15 小时前
面向高性能计算与网络服务的C++微内核架构设计与多线程优化实践探索与经验分享
java·开发语言·jvm
是小胡嘛17 小时前
C++之Any类的模拟实现
linux·开发语言·c++
csbysj202018 小时前
Vue.js 混入:深入理解与最佳实践
开发语言
笨笨聊运维19 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
Gerardisite20 小时前
如何在微信个人号开发中有效管理API接口?
java·开发语言·python·微信·php
Want59520 小时前
C/C++跳动的爱心①
c语言·开发语言·c++
小毛驴85020 小时前
软件设计模式-装饰器模式
python·设计模式·装饰器模式
coderxiaohan20 小时前
【C++】多态
开发语言·c++