抖音验证码滑动轨迹原理(很难审核通过)

python 复制代码
    dragTrack = [
        {'x': 53, 'y': 317, 'width': 1, 'time': 1766388851812, 't': 0, 'relative_time': 24},
        {'x': 55, 'y': 317, 'width': 3, 'time': 1766388851817, 't': 0, 'relative_time': 29},
        {'x': 58, 'y': 317, 'width': 6, 'time': 1766388851825, 't': 0, 'relative_time': 37},
        {'x': 59, 'y': 317, 'width': 7, 'time': 1766388851833, 't': 0, 'relative_time': 45},
        {'x': 61, 'y': 317, 'width': 9, 'time': 1766388851841, 't': 0, 'relative_time': 53},
        {'x': 62, 'y': 317, 'width': 10, 'time': 1766388851849, 't': 0, 'relative_time': 61},
        {'x': 65, 'y': 318, 'width': 13, 'time': 1766388851857, 't': 0, 'relative_time': 69},
        {'x': 68, 'y': 318, 'width': 16, 'time': 1766388851866, 't': 0, 'relative_time': 78},
        {'x': 69, 'y': 319, 'width': 17, 'time': 1766388851873, 't': 0, 'relative_time': 85},
        {'x': 70, 'y': 319, 'width': 18, 'time': 1766388851881, 't': 0, 'relative_time': 93},
        {'x': 73, 'y': 319, 'width': 21, 'time': 1766388851889, 't': 0, 'relative_time': 101},
        {'x': 76, 'y': 320, 'width': 24, 'time': 1766388851896, 't': 0, 'relative_time': 108},
        {'x': 77, 'y': 320, 'width': 25, 'time': 1766388851905, 't': 0, 'relative_time': 117},
        {'x': 79, 'y': 320, 'width': 27, 'time': 1766388851915, 't': 0, 'relative_time': 127},
        {'x': 81, 'y': 320, 'width': 29, 'time': 1766388851921, 't': 0, 'relative_time': 133},
        {'x': 83, 'y': 321, 'width': 31, 'time': 1766388851929, 't': 0, 'relative_time': 141},
        {'x': 84, 'y': 321, 'width': 32, 'time': 1766388851949, 't': 0, 'relative_time': 161},
        {'x': 86, 'y': 322, 'width': 34, 'time': 1766388851953, 't': 0, 'relative_time': 165},
        {'x': 87, 'y': 322, 'width': 35, 'time': 1766388851963, 't': 0, 'relative_time': 175},
        {'x': 88, 'y': 322, 'width': 36, 'time': 1766388851969, 't': 0, 'relative_time': 181},
        {'x': 89, 'y': 323, 'width': 37, 'time': 1766388851985, 't': 0, 'relative_time': 197},
        {'x': 90, 'y': 323, 'width': 38, 'time': 1766388851996, 't': 0, 'relative_time': 208},
        {'x': 91, 'y': 323, 'width': 39, 'time': 1766388852001, 't': 0, 'relative_time': 213},
        {'x': 92, 'y': 324, 'width': 40, 'time': 1766388852014, 't': 0, 'relative_time': 226},
        {'x': 93, 'y': 324, 'width': 41, 'time': 1766388852019, 't': 0, 'relative_time': 231},
        {'x': 94, 'y': 324, 'width': 42, 'time': 1766388852026, 't': 0, 'relative_time': 238},
        {'x': 95, 'y': 324, 'width': 43, 'time': 1766388852033, 't': 0, 'relative_time': 245},
        {'x': 96, 'y': 324, 'width': 44, 'time': 1766388852041, 't': 0, 'relative_time': 253},
        {'x': 97, 'y': 324, 'width': 45, 'time': 1766388852049, 't': 0, 'relative_time': 261},
        {'x': 98, 'y': 324, 'width': 46, 'time': 1766388852057, 't': 0, 'relative_time': 269},
        {'x': 99, 'y': 324, 'width': 47, 'time': 1766388852065, 't': 0, 'relative_time': 277},
        {'x': 100, 'y': 325, 'width': 48, 'time': 1766388852073, 't': 0, 'relative_time': 285},
        {'x': 101, 'y': 325, 'width': 49, 'time': 1766388852082, 't': 0, 'relative_time': 294},
        {'x': 102, 'y': 325, 'width': 50, 'time': 1766388852101, 't': 0, 'relative_time': 313},
    ]
    moveTrack = [
        {'x': 61, 'y': 380, 'time': 1766388851388},
        {'x': 79, 'y': 359, 'time': 1766388851430},
        {'x': 78, 'y': 353, 'time': 1766388851466},
        {'x': 75, 'y': 352, 'time': 1766388851507},
        {'x': 74, 'y': 345, 'time': 1766388851548},
        {'x': 67, 'y': 335, 'time': 1766388851582},
        {'x': 61, 'y': 326, 'time': 1766388851616},
        {'x': 54, 'y': 320, 'time': 1766388851666},
        {'x': 52, 'y': 317, 'time': 1766388851705},
        {'x': 53, 'y': 317, 'time': 1766388851812},
        {'x': 62, 'y': 317, 'time': 1766388851848},
        {'x': 73, 'y': 319, 'time': 1766388851889},
        {'x': 83, 'y': 321, 'time': 1766388851929},
        {'x': 87, 'y': 322, 'time': 1766388851963},
        {'x': 91, 'y': 323, 'time': 1766388852001},
        {'x': 96, 'y': 324, 'time': 1766388852040},
        {'x': 101, 'y': 325, 'time': 1766388852082},
        ]
    slideTrack = [
        {'x': 52, 'y': 317, 'time': 1766388851788, 't': 0},
        {'x': 53, 'y': 317, 'time': 1766388851812, 't': 0},
        {'x': 55, 'y': 317, 'time': 1766388851817, 't': 0},
        {'x': 58, 'y': 317, 'time': 1766388851825, 't': 0},
        {'x': 59, 'y': 317, 'time': 1766388851833, 't': 0},
        {'x': 61, 'y': 317, 'time': 1766388851841, 't': 0},
        {'x': 62, 'y': 317, 'time': 1766388851849, 't': 0},
        {'x': 65, 'y': 318, 'time': 1766388851857, 't': 0},
        {'x': 68, 'y': 318, 'time': 1766388851866, 't': 0},
        {'x': 69, 'y': 319, 'time': 1766388851873, 't': 0},
        {'x': 70, 'y': 319, 'time': 1766388851881, 't': 0},
        {'x': 73, 'y': 319, 'time': 1766388851889, 't': 0},
        {'x': 76, 'y': 320, 'time': 1766388851896, 't': 0},
        {'x': 77, 'y': 320, 'time': 1766388851905, 't': 0},
        {'x': 79, 'y': 320, 'time': 1766388851915, 't': 0},
        {'x': 81, 'y': 320, 'time': 1766388851921, 't': 0},
        {'x': 83, 'y': 321, 'time': 1766388851929, 't': 0},
        {'x': 84, 'y': 321, 'time': 1766388851949, 't': 0},
        {'x': 86, 'y': 322, 'time': 1766388851953, 't': 0},
        {'x': 87, 'y': 322, 'time': 1766388851963, 't': 0},
        {'x': 88, 'y': 322, 'time': 1766388851969, 't': 0},
        {'x': 89, 'y': 323, 'time': 1766388851985, 't': 0},
        {'x': 90, 'y': 323, 'time': 1766388851996, 't': 0},
        {'x': 91, 'y': 323, 'time': 1766388852001, 't': 0},
        {'x': 92, 'y': 324, 'time': 1766388852014, 't': 0},
        {'x': 93, 'y': 324, 'time': 1766388852019, 't': 0},
        {'x': 94, 'y': 324, 'time': 1766388852026, 't': 0},
        {'x': 95, 'y': 324, 'time': 1766388852033, 't': 0},
        {'x': 96, 'y': 324, 'time': 1766388852041, 't': 0},
        {'x': 97, 'y': 324, 'time': 1766388852049, 't': 0},
        {'x': 98, 'y': 324, 'time': 1766388852057, 't': 0},
        {'x': 99, 'y': 324, 'time': 1766388852065, 't': 0},
        {'x': 100, 'y': 325, 'time': 1766388852073, 't': 0},
        {'x': 101, 'y': 325, 'time': 1766388852082, 't': 0},
        {'x': 102, 'y': 325, 'time': 1766388852101, 't': 0},
    ]

dragTrack/moveTrack/slideTrack 三类轨迹的区别

数据定义、操作行为本质、字段特征、场景关联四个维度,结合具体数据逐一拆解三类轨迹的核心差异:

一、核心定义与行为本质的区别

这三类轨迹的核心是记录的用户操作行为类型不同,对应了人机交互中三种典型的鼠标/触摸动作:

轨迹类型 行为本质 通俗理解
dragTrack 按住元素(鼠标按下/触摸按压)后持续拖动的完整过程 「捏着东西移」:比如按住滑块、文件、选中的文本,从A点拖到B点的全过程
moveTrack 未按住任何元素时,鼠标/手指在界面上的自由移动路径 「空手晃」:比如鼠标指针在页面上随意移动、悬停,没有按下按键/按压屏幕
slideTrack **针对滑动类控件(滑块、轮播、滚动条等)**的专用滑动操作轨迹 「控件滑」:是拖动的特定场景化版本,仅用于滑块验证、进度条拖动等控件操作


moveTrack 就是鼠标在这个验证码里面的位置的轨迹

已知整个 captcha_container 大小为380 x 384

可以得出两边间距为 (380-340)/ 2 = 20

滑块的宽度为64.05

所以鼠标放在滑块的起始位置x坐标左边一定是在20~84.05 之间


所以,滑块的起始Y坐标69+212=281

同理,可以计算出鼠标放在滑块的起始位置y坐标左边一定是在281~325 之间

(x=0, y=0)到(x=380, y=384)这个范围

也就是说,你可以有n种方式从四边把鼠标移动进来,但最后滑动滑块的起始坐标一定是在这个确定范围内

  • x:20~84.05
  • y:281~325

结束坐标位置范围(这是滑到尽头):实际情况就是x坐标加上滑动距离

  • x:295.95~360
  • y:281~325 不变的

滑动原理:

  • 首先 ,鼠标坐标点必须得从四边(包括四个顶点)作为起始点移动进来
    • 最大坐标就是(x=380, y=384),最小坐标就是(x=0,y=0)
  • 然后,你可以有无限多种的路径再移动到滑块按钮上
    • 滑块按钮坐标范围 x:20~84.05 y:281~325
  • 最后,向右移动滑块

虽然是这么说,但是实际情况虽有偏差 最大坐标就是(x=379, y=382)

最好不要取其边界值,比如移动到滑块按钮上,你完全可以移动到其内部。然后再开始滑动,你滑动的时候,也不是沿着上底和下底移动,肯定是在内部抖动滑动

原理清楚了,我们再来看这个轨迹

  • 先看绿色部分,代表从四边把鼠标移动进来

    x是先增后减,y是递减

  • 红色部分,代表是从滑块位置开始向右移动

    x是递增,y是上下轻微抖动

相关推荐
爱笑的眼睛1120 分钟前
超越可视化:降维算法组件的深度解析与工程实践
java·人工智能·python·ai
fengbizhe35 分钟前
bootstrapTable转DataTables,并给有着tfoot的DataTables加滚动条
javascript·bootstrap
刘一说36 分钟前
TypeScript 与 JavaScript:现代前端开发的双子星
javascript·ubuntu·typescript
清铎1 小时前
leetcode_day12_滑动窗口_《绝境求生》
python·算法·leetcode·动态规划
ai_top_trends1 小时前
2026 年工作计划 PPT 横评:AI 自动生成的优劣分析
人工智能·python·powerpoint
TDengine (老段)1 小时前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
EndingCoder1 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
用户47949283569151 小时前
React 终于出手了:彻底终结 useEffect 的"闭包陷阱"
前端·javascript·react.js
brent4232 小时前
DAY50复习日
开发语言·python
木头程序员2 小时前
前端(包含HTML/JavaScript/DOM/BOM/jQuery)基础-暴力复习篇
开发语言·前端·javascript·ecmascript·es6·jquery·html5