吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1824|回复: 30
收起左侧

[Python 原创] 40行python识别某讯云滑块验证码并自动登录

  [复制链接]
syf1313113 发表于 2024-2-2 17:04
本帖最后由 syf1313113 于 2024-2-2 17:07 编辑

[/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 < area < 7225 and 300 < length < 380:
            # 计算轮廓的边界矩形,得到坐标和宽高
            # x, y: 边界矩形左上角点的坐标。
            # w, h: 边界矩形的宽度和高度。
            x, y, w, h = cv2.boundingRect(contour)
            print("计算出目标区域的坐标及宽高:", x, y, w, h)
            # 在目标区域上画一个红框看看效果
            cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
            cv2.imwrite("111.jpg", image)
            return x,w,h
    return 0

# 启动浏览器
page = ChromiumPage(co)
# 打开登录地址
page.get('https://xxx.xxx.com/login')

# 输入账号、密码  根据@placeholder定位输入框
page.ele('@placeholder=邮箱或手机号码').input(vals='xxxx@demo.com',clear=True)
page.ele('@placeholder=密码').input(vals='123456',clear=True)

# 点击验证码按钮,弹出验证码
page.ele('xpath://*[@id="app"]/div/div[1]/div/div[1]/div/div[2]/div/main/form/div[3]/div[1]/div/button').click()
time.sleep(1)

# 获取验证码iframe
iframe = page('#tcaptcha_iframe_dy')
iframe = page.get_frame(iframe)
# 验证码图片
ele1 = iframe('#slideBg')

# 从style中匹配url
img_url = ele1.attr('style')
urls = re.findall(r'url\("([^"]+)"\)', img_url)

# 下载
d = DownloadKit()
# 设置下载图片覆盖已有图片
d.set.if_file_exists.overwrite()
d(file_url=urls[0],rename='1.jpg')
time.sleep(2)

# 调用方法获取缺口的x轴
x = get_pos('1.jpg')
# 验证码小方块不在顶头,减去60
x = x-60
# 最终移动的距离
newDis = int(x * 340 / 672 )
# 创建动作链滑动鼠标
ac = Actions(iframe)
# 滑动的元素、按住鼠标左键、移动(x,y,速度)、松开鼠标左键
ac.move_to('.tc-fg-item tc-slider-normal').hold().move(newDis,0,0.5).release('.tc-fg-item tc-slider-normal')
# 点击登录按钮
page.ele('.__button-dark-enagr0-lmmp n-button n-button--primary-type n-button--medium-type n-button--block').click()
4.gif

免费评分

参与人数 8吾爱币 +14 热心值 +8 收起 理由
yxnwh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
menoooooos + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
嘚瑟挨顿揍 + 1 + 1 谢谢@Thanks!
isabill + 1 + 1 厉害.学习了.打开思路
zhamg520 + 1 + 1 热心回复!
daoye9988 + 1 + 1 热心回复!
Huibq120 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

geniusrot 发表于 2024-2-19 18:25
    raise FileNotFoundError('无法找到浏览器可执行文件路径,请手动配置。')
FileNotFoundError: 无法找到浏览器可执行文件路径,请手动配置。
yxnwh 发表于 2024-2-11 12:11
DJxiaojun 发表于 2024-2-5 11:38
# 验证码小方块不在顶头,减去60
x = x-60

修改成如下就可以运行了

[Python] 纯文本查看 复制代码
# 调用方法获取缺口的x轴
pos = get_pos('1.jpg')
# 验证码小方块不在顶头,减去60
x = pos[0]-60

免费评分

参与人数 1热心值 +1 收起 理由
syf1313113 + 1 用心讨论,共获提升!

查看全部评分

Huibq120 发表于 2024-2-2 17:08
szy1 发表于 2024-2-2 17:08
看不懂,但是很6
慕浟佳〃井少年 发表于 2024-2-2 17:59
图片没展示出来
可坏 发表于 2024-2-2 18:59
牛~   研究下。。
dork 发表于 2024-2-2 19:41
厉害.学习了
sai609 发表于 2024-2-2 19:53
验证码有很多方式,有些是理解后再选择
zwmfyy 发表于 2024-2-2 20:07

厉害.学习了
BonnieRan 发表于 2024-2-3 01:42
代码有注释,刚好学习一下cv2库处理图片
hk9186 发表于 2024-2-3 05:25
感谢楼主分享注释
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 14:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表