首页
社区
课程
招聘
[原创]TikTok Shop 滑块验证码逆向分析与协议还原实践
发表于: 2026-8-6 18:59 3803

[原创]TikTok Shop 滑块验证码逆向分析与协议还原实践

2026-8-6 18:59
3803

本文记录一次针对 TikTok Shop 滑块验证码的逆向分析过程。从浏览器中的 JavaScript SDK 出发,逐步还原整个验证码协议,最终实现纯 HTTP 完成滑块校验,而无需驱动浏览器完成拖拽。

相比介绍某一个算法,本文更希望分享整个逆向思路:如何分析一个现代 Web 验证码,以及如何一步步完成协议化。

现代电商平台的滑块验证码,真正需要验证的并不是"鼠标有没有移动"。

浏览器完成的一次滑块,大致包含下面几个阶段:

页面上的拖动,仅仅只是其中的一小部分。

因此,与其不断模拟浏览器鼠标事件,不如直接分析:

浏览器最终向服务端提交了什么。

如果能够完全还原这一过程,那么浏览器便不再是必需组件。

整个分析过程可以抽象为下面这条流水线。

图片描述

整个过程中,我们并不是直接研究加密,而是按照浏览器真正执行的顺序,一层层向前推。

任何验证码最终都会调用一次 Verify 接口。

因此第一件事不是研究加密,而是找到:

是谁生成的。

浏览器抓包后,可以看到 Verify 请求大致如下:

请求体只有一个核心字段:

说明:

整个滑块真正提交的数据,都已经被封装到了 captchaBody 中。

因此接下来需要继续逆向:

captchaBody 是如何生成的?

经过 JavaScript 插桩,可以定位到 SDK 加密之前的明文对象(plain)。

例如:

直到这里,整个验证码真正需要提交的数据才全部暴露出来。

这一步非常重要。

因为之后所有工作,都建立在:

先理解每个字段代表什么,再考虑如何生成。

而不是一开始就研究加密算法。

接下来开始逐个分析 plain 中的数据来源。

经过大量样本比对,可以发现字段主要分成几类。

例如:

来自 /captcha/get 接口。

无需计算。

例如:

需要下载:

然后通过 OpenCV 等算法识别缺口位置。

得到真正需要拖动的水平距离。

例如:

这些来自浏览器采集的环境数据。

协议实现时可以直接按照 SDK 格式生成。

真正花时间最多的是:

经过大量 Challenge 对比,可以发现:

真正影响 y 的,是 /captcha/get 中的参数计算出的偏移量。

当所有字段都能够独立获得以后,就可以生成完整轨迹。

整个 plain 就已经完整。

当 plain 已经完全一致以后,加密反而变成最简单的一步。

直接沿着 SDK 调用链即可定位:

只要执行与浏览器一致的加密流程,就能够得到完全一致的 captchaBody。

因此这里关注点已经不再是算法,而是:

如何保证输入完全一致。

TikTok Shop 在 Verify 请求之外,还存在额外的一层请求保护。

例如:

这些通常都由页面 SDK 自动生成。

协议化时需要同步完成签名计算,否则 Verify 请求仍然会失败。

因此最终 Verify 请求包含两部分:

二者缺一不可。

当所有步骤全部完成以后,整个流程可以收敛成:

图片描述

整个运行过程中,仅依赖:

无需驱动浏览器完成拖动。

完成整个协议链路后,在真实挑战上即可获得 Verify 成功响应:


传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

收藏
免费 77
打赏
分享
最新回复 (51)
雪    币: 219
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
6666
2026-8-6 19:37
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
666
2026-8-6 19:54
0
雪    币: 9340
活跃值: (7872)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2026-8-6 20:30
0
雪    币: 45
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
2026-8-6 20:38
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
厉害
2026-8-6 21:12
0
雪    币: 1112
活跃值: (1605)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
1
2026-8-7 01:39
1
雪    币: 140
活跃值: (635)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看看
2026-8-7 09:51
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
666
2026-8-7 10:15
0
雪    币: 845
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
666
2026-8-7 21:58
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
1
2026-8-9 00:18
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
666
2026-8-9 04:08
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
1
2026-8-9 05:34
0
雪    币: 36
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
666
2026-8-9 11:55
0
雪    币: 152
活跃值: (371)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
6666
2026-8-9 13:49
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
666
2026-8-10 10:10
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
1111
2026-8-10 14:52
0
雪    币: 112
活跃值: (9260)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
kkb
2026-8-10 15:06
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
6666
2026-8-10 16:46
0
雪    币: 205
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
dasd1
2026-8-11 17:49
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
6
2026-8-11 18:21
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
fghhjftcc%
2026-8-11 19:52
0
雪    币: 3095
活跃值: (6118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
666
2026-8-11 23:09
0
雪    币: 0
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
666
2026-8-11 23:39
0
雪    币: 710
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
666
2026-8-12 09:41
0
游客
登录 | 注册 方可回帖
返回