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

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

相关推荐
宿67421 分钟前
vue3-config
前端·javascript·vue.js
Rnan-prince25 分钟前
堆与TopK · 从零到通透 —— 9 节全系列复盘
python·算法
2601_962294612 小时前
Python接口自动化测试实战:使用requests库
python·接口自动化测试·异常处理·requests库·api测试
砚底藏山河2 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
阿童木写作2 小时前
跨境电商翻译工具推荐:批量图片翻译+视频字幕实时翻译
人工智能·python·音视频
晶捷软件2 小时前
晶捷智能:集团型制造企业ERP如何实现多工厂统一管控
大数据·人工智能·python·制造
oyguyteggytrrwwwrt2 小时前
闵可夫斯基差演示
python
智购科技无人售货机工厂店2 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
quantdash_cc2 小时前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
hfywmsj3 小时前
广州餐饮铺位招租数据分析:选址权重模型与租金评估实操
人工智能·python·数据分析·广州餐饮铺位招租