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 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技5 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时5 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型