58
0

Shopee滑块识别分析(含源码)

2026-05-16
2026-05-18

前言

Shopee 滑块识别分析;仅教学如何进行识别,对于 header 生成啥的还没搞清楚

image-xUOw.png

Shopee 滑块如图;与普通的滑块相比他的轨迹是个曲线;看到曲线很多小伙伴就没办法了,实际上也还是很简单的

滑块分析

先说一下识别的全流程:拿到验证码相关信息 — 获取puzzle移动的所有轨迹 — 利用yolo识别背景图上缺口 — 判断在轨迹上的缺口 — 带角度将puzzle分别填入所有符合条件的缺口,选取其中拟合程度最高的缺口 — 返回x值

如上便是从拿到验证码到的到 x 需移动距离的全过程

接下来一段一段分析

拿到验证码相关信息

https://shopee.sg/api/v4/anti_fraud/captcha/generate

以上链接会拿到滑块的相关信息;其返回一个加密值

{
    "encrypted_data": "U2FsdGVkX1+majvOr/ty6vUccMLRBkFrkwfkN3K9RGvht....."
}

其解密后得到对象

{
    "error": 0,
    "data": {
        "captcha_id": "YWR2YW5jZWRfc2xpZGVyOjE3NzA4MTUyNjQwNzE1MjkyMDY1MzA3MTU3",
        "captcha_type": 5,
        "desc": "",
        "sampling_frequency": 20,
        "captcha_body": {
            "bg_img": "data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJC....",
            "puzzle_img": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoB....",
            "y_coordinate": 0,
            "type_img": 1,
            "audio_data": "",
            "args": [
                -0.003992380804685157,
                0.7476511571523963,
                35.73973420972695,
                0.36537861658132487,
                0
            ],
            "tips_img": "",
            "refresh_frequency": 0
        },
        "tracking_id": "MX9RqqOnSncKwIPXv6PUCsFach2hsaJ3"
    }
}

解密流程就不在这里分析了;我们这篇文章主要还是讲的此验证码如何进行识别

从以上解密对象来说其中

  • bg_img -- 背景图

  • puzzle_img -- 滑块图

  • args -- 作用于轨迹变化;也就是上面这个滑块的移动路径

以上三个参数非常的重要;

获取puzzle移动的所有轨迹

直接说结论;实际上他就是一个二次函数轨迹

以上面我们解密的结果为例;其二次函数如下

-0.003992380804685157x2 + 0.7476511571523963x + 35.73973420972695

上面便是滑块移动的轨迹;很简单的一个二次函数

此时我们就可以将所有轨迹绘制在背景图上

利用yolo识别背景图上缺口

直接使用 yolov8;稍微给他 100 个图片就能训练出很好的效果

我这个是直接筛选了在轨迹上的缺口;

带角度将puzzle分别填入所有符合条件的缺口,选取其中拟合程度最高的缺口

由于我们这个图片只有一个在轨迹上的缺口;有可能会有两个

所以一定是要用到这一步的

这一步便是选取最终 x 坐标所必要的

此时要注意旋转的方向

写一个拟合判断;找到拟合程度最高的缺口,便完成了

查看效果

最后 -- 源码

[点击这里下载我的源码]

评论