40行python识别某讯云滑块验证码并自动登录

查看 155|回复 11
作者:syf1313113   
[/md][md]@[TOC]
使用python的cv2库和DrissionPage对有滑块验证码的网站进行自动登录
效果
[img=110,0]https://attach.52pojie.cn//forum/202402/02/170628orcwmzq4aaqz73qq.gif?l[/img]
https://img-blog.csdnimg.cn/direct/6f6512ce26844867a4a22923dddb0bf0.gif#pic_center
代码
修改对应的登录地址和元素对应的名字即可使用
from DrissionPage import ChromiumPage,ChromiumOptions
from DrissionPage.common import Actions
from DownloadKit import DownloadKit
import cv2  # opencv库
import time
import re
# 浏览器设置
co = ChromiumOptions()
co.set_argument('--guest')
# 封装的计算图片距离的算法
def get_pos(imageSrc):
    # 读取图像文件并返回一个image数组表示的图像对象
    image = cv2.imread(imageSrc)
    # GaussianBlur方法进行图像模糊化/降噪操作。
    # 它基于高斯函数(也称为正态分布)创建一个卷积核(或称为滤波器),该卷积核应用于图像上的每个像素点。
    blurred = cv2.GaussianBlur(image, (5, 5), 0, 0)
    # Canny方法进行图像边缘检测
    # image: 输入的单通道灰度图像。
    # threshold1: 第一个阈值,用于边缘链接。一般设置为较小的值。
    # threshold2: 第二个阈值,用于边缘链接和强边缘的筛选。一般设置为较大的值
    canny = cv2.Canny(blurred, 0, 100)  # 轮廓
    # findContours方法用于检测图像中的轮廓,并返回一个包含所有检测到轮廓的列表。
    # contours(可选): 输出的轮廓列表。每个轮廓都表示为一个点集。
    # hierarchy(可选): 输出的轮廓层次结构信息。它描述了轮廓之间的关系,例如父子关系等。
    contours, hierarchy = cv2.findContours(canny, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    # 遍历检测到的所有轮廓的列表
    for contour in contours:
        # contourArea方法用于计算轮廓的面积
        area = cv2.contourArea(contour)
        # arcLength方法用于计算轮廓的周长或弧长
        length = cv2.arcLength(contour, True)
        # 如果检测区域面积在5025-7225之间,周长在300-380之间,则是目标区域
        if 5025

轮廓, 验证码

yxnwh   


DJxiaojun 发表于 2024-2-5 11:38
# 验证码小方块不在顶头,减去60
x = x-60

修改成如下就可以运行了
[Python] 纯文本查看 复制代码# 调用方法获取缺口的x轴
pos = get_pos('1.jpg')
# 验证码小方块不在顶头,减去60
x = pos[0]-60
DJxiaojun   

# 验证码小方块不在顶头,减去60
x = x-60
这里直接报错了TypeError: unsupported operand type(s) for -: 'tuple' and 'int'
Huibq120   

可以的,学习了
szy1   

看不懂,但是很6
慕浟佳〃井少年   

图片没展示出来
可坏   

牛~   研究下。。
dork   

厉害.学习了
sai609   

验证码有很多方式,有些是理解后再选择
zwmfyy   

厉害.学习了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部