cv2解决滑块验证码验证
opencv-python安装
虽然cv2是直接通过导入cv2包使用,但是它不是通过import cv2安装,需要通过pip install opencv-python安装,直接pip安装可能会比较慢,可以使用pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple安装
案例场景


当点击滑块时,会显示缺口背景图和方块,将方块移动到背景图缺口处就能实现验证,我们可以看看验证通过整个过程的请求包来判断它的验证逻辑

当我们点击滑块时,会去请求方块和背景图,当我们滑动并停止滑动滑块后,会发起一个验证请求,推测这个请求会把我们的动作传给后端验证,而我们的动作直接产生的就是坐标的变化,一般验证码验证会根据两种方式验证,坐标参数验证和滑动轨迹验证码。坐标参数验证是传递一个滑块停止后的坐标,而滑动轨迹验证码是传递一个坐标数组,记录滑块整个滑动周期变化的坐标。
我们查看异步请求验证这个包,看看它传递的参数便可以知道属于哪种验证逻辑

观察参数可以确定它传递的是滑块移动停止时的坐标,那怎么拿到这个坐标呢,dragleft我们假定是方块左侧坐标的距离,dragright我们假定是方块右侧坐标的距离,然后模拟一下查看style样式中left的变化。

多次观察可以确定,这个left便是dragleft的值,而dragright比dragleft要大32,这样我们只要知道dragleft的值便能确定dragright了。
cv2实战
使用cv2计算图片差异位置的坐标,我们需要拿到背景图片和方块图片,通过对比背景图片和方块图片之间的联系与差异从而定义差异的坐标。
cv2识别代码
# -*- coding: utf-8 -*-
from PIL import Image
from io import BytesIO
import numpy as np
import cv2
def identify_gap(bg, tp):
"""
:param bg: 背景图片
:param tp: 缺口图片
:return int
"""
# 读取背景图片和缺口图片
bg_img = get_cv2_img(bg) # 背景图片
tp_img = get_cv2_img(tp) # 缺口图片
if type(bg_img) == str or type

本文详细介绍如何使用OpenCV库解决滑块验证码问题,涉及安装技巧,滑块验证原理,以及通过cv2计算图片差异获取坐标的方法。通过实例演示了坐标识别流程和关键代码片段。
最低0.47元/天 解锁文章
3389

被折叠的 条评论
为什么被折叠?



