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

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是上下轻微抖动

相关推荐
山河木马13 小时前
矩阵专题3-怎么创建投影矩阵(uProjectionMatrix)
javascript·webgl·计算机图形学
SelectDB14 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
泯泷15 小时前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷15 小时前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
朦胧之15 小时前
页面白屏卡住排查方法
前端·javascript
犇驫聊AI16 小时前
Chrome DevTools MCP + Claude Code 自定义skills生成接口代码生成器
前端·javascript
kyriewen16 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
用户2986985301421 小时前
在 React 中使用 JavaScript 将 Excel 转换为 SVG
前端·javascript·react.js
labixiong1 天前
手写Promise--微任务、静态方法、async/await 全搞懂(三)
前端·javascript
荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python