
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.05y:281~325
结束坐标位置范围(这是滑到尽头):实际情况就是x坐标加上滑动距离

x:295.95~360y:281~325不变的
滑动原理:

- 首先 ,鼠标坐标点必须得从四边(包括四个顶点)作为起始点移动进来
- 最大坐标就是
(x=380, y=384),最小坐标就是(x=0,y=0)
- 最大坐标就是
- 然后,你可以有无限多种的路径再移动到滑块按钮上
- 滑块按钮坐标范围
x:20~84.05y:281~325
- 滑块按钮坐标范围
- 最后,向右移动滑块
虽然是这么说,但是实际情况虽有偏差 最大坐标就是
(x=379, y=382)最好不要取其边界值,比如移动到滑块按钮上,你完全可以移动到其内部。然后再开始滑动,你滑动的时候,也不是沿着上底和下底移动,肯定是在内部抖动滑动
原理清楚了,我们再来看这个轨迹
-
先看绿色部分,代表从四边把鼠标移动进来
x是先增后减,y是递减
-
红色部分,代表是从滑块位置开始向右移动
x是递增,y是上下轻微抖动

