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

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 坐标所必要的
此时要注意旋转的方向
写一个拟合判断;找到拟合程度最高的缺口,便完成了
查看效果




最后 -- 源码
