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()
相关推荐
郝学胜-神的一滴5 小时前
高并发秒杀系统设计全解:从需求拆解到Redis库存实战
java·数据库·redis·python·程序人生·缓存·php
50万马克的面包5 小时前
C语言第3讲:分支和循环
c语言·开发语言·笔记·算法
ytttr8735 小时前
惯性导航精解算程序(MATLAB实现)
开发语言·matlab
Mr.朱鹏5 小时前
3.LangChain零基础速通-Prompt提示词模版和模型调用方法
人工智能·python·深度学习·langchain·llm·prompt·virtualenv
艺杯羹5 小时前
从零搭建CSDN博客爬虫:Python爬虫+多格式导出完整教程
开发语言·爬虫·python·开源·gui·csdn
码农小韩5 小时前
QT学习记录(三)——C++学习基础(三)
开发语言·c++·qt·学习·算法·嵌入式软件
buhuizhiyuci5 小时前
【QT-百日筑基篇】找寻安静的落脚处,选择合适的功法进行修炼-QT深度了解对象树的特性
开发语言·qt
wjs20245 小时前
jQuery Mobile 触摸事件详解
开发语言
iAm_Ike5 小时前
JavaScript中模块化在游戏引擎开发中的资源调度作用
jvm·数据库·python