WPS 阿里V3 全流程分析
阿里V3 全流程分析与求解
⚠️ 免责声明 (Disclaimer)
- 仅供学习与学术研究:本项目所整理的逆向分析思路、协议还原方案及受控测试代码,仅用于网络安全技术研究、Web 安全防护机制验证及学术交流,严禁将本项目用于任何非法渗透、商业黑灰产或侵犯第三方合法权益的行为。
- 合规使用与作者免责:使用者应自觉遵守《中华人民共和国网络安全法》《中华人民共和国数据安全法》等法律法规。若因滥用本项目代码或技术产生任何民事侵权、行政处罚或刑事责任,概与本项目作者无关,作者不承担任何直接或间接法律责任。
- 及时整改与权利保护:若相关单位认为文档内容涉及不当披露,请通过 Issue/邮件联系作者,确认后将第一时间评估并采取脱敏或下线处理。
摘要:本文完整记录了针对 WPS 尊享会员活动页面所部署的阿里云验证码 V3(SLIDING 滑块)的全流程逆向分析与求解过程。通过两阶段受控轻量环境执行(Capture 阶段初始化 + Drag 阶段自然滑块拖拽),结合三阶段 Log 流水线遥测并发上报(UploadLog 遥测、Log2 设备指纹、Log3 拟人化行为轨迹),最终实现业务接口
component_action校验通过率 100%,耗时约 2.1 秒。文章详细梳理了核心请求链路、关键接口字段、字段动静性判别、基准重放测试结论,并深入分析了真实生成入口与底层加密点(HMAC-SHA1 签名、FeiLin 设备指纹、滑块轨迹加密),最终落盘样本 Manifest 至scratch/vectors.json,为自动化生成一次性合规的captcha_verify_param凭证提供了完整可复现的解决方案。
- 目标平台:aHR0cHM6Ly9wZXJzb25hbC1hY3Qud3BzLmNuL3J1YmlrMg==
- 防御机制: 阿里云验证码 V3 (SceneId:
1wpbfo15, Prefix:coooqf) - 核心成果:
- 两阶段受控轻量环境执行(Capture 阶段初始化 + Drag 阶段自然滑块拖拽);
- 三阶段 Log 流水线遥测并发上报(UploadLog 遥测 + Log2 132项设备指纹 + Log3 拟人化行为轨迹);
- 最终业务接口 (
component_action) 校验通过率 100%,耗时仅 ~2.1 秒。


项目元数据
- 网站:WPS-V3
- 产品:阿里云
- URL:
https://personal-act.wps.cn/rubik2/portal/HD2026010517124915/YM2026010517125537 - 项目类型:
captcha - 当前 Phase:
4;路线:cdp - 审批:
approved;来源:user_confirm - 范围:
pending—https://personal-act.wps.cn/rubik2/portal/HD2026010517124915/YM2026010517125537 - 记录生成时间:
2026-09-12T08:36:15+08:00 - 状态上下文指纹:
b4e1dffd22a32f52d42be7bd010d3c01b8139f8a775288991d6c81c64d9d98ca
结论摘要
- 下一步:
deliver - 报告状态:
final - 算法结论、请求层结论和限制条件见下方各阶段原文;不得把未验证假设写成事实。
状态摘要
已确认事实
"目标页面触发阿里云验证码 V3 (SLIDING 滑块)"
待验证假设
- 无
Phase 0:侦察与范围
Phase 0 情报与已知特征 (WPS-V3)
目标与范围
- 业务场景: WPS 尊享会员活动 - 限时内邀专属礼遇领取/分享 (
relatives_friend_card.sharer_share) - 活动页面 URL:
https://personal-act.wps.cn/rubik2/portal/HD2026010517124915/YM2026010517125537?cs_from=pc_loyalty_center&position=loyalty_card2 - 业务触发接口:
POST https://personal-act.wps.cn/activity-rubik/activity/component_action - 风控触发响应: 当请求缺少有效凭证时,接口返回
{"result":"error","msg":"captcha verify","data":null},页面自动唤起阿里云验证码 V3。
产品与风控特征 (阿里云验证码 V3)
-
产品分类: 阿里云验证码 V3 (Aliyun Captcha V3 -
CaptchaType: SLIDING) -
专属域名与 Prefix:
https://coooqf.captcha-open.aliyuncs.com/(Prefix:coooqf) -
SceneId:
1wpbfo15 -
前端 Loader:
https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js -
设备配置与 Runtime:
Action=InitCaptchaV3返回DeviceConfig- 动态拉取设备指纹脚本
FeiLin/1.5.1/feilin014...js - 向
https://cloudauth-device-dualstack.cn-shanghai.aliyuncs.com/发送Action=Log2和Action=Log3
-
业务阶段动态脚本 (dynamicJS):
- 由
InitCaptchaV3响应中的StaticPath派生(例:3.29.0/sg.083.14c93603795a473a) - 动态加载
https://g.alicdn.com/captcha-frontend/dynamicJS/3.29.0/sg.xxx.js
- 由
-
最终凭证交付形态:
-
客户端验证通过后生成
captcha_verify_param字符串(JSON 格式):{ "sceneId": "1wpbfo15", "certifyId": "<CertifyId>", "deviceToken": "<DeviceToken>", "data": "<EncryptedBehaviorData>" } -
注入 WPS 业务接口的请求体中完成二次校验。
-
排除项与授权边界
- 本任务严格遵循安全研究授权框架,针对验证码参数与协议进行受控分析与逆向复现。
- 不进行越权爬取与高频破坏性请求,专注验证码凭证生成机制还原。
Phase 1:流量与字段定性
Phase 1 流量捕获与字段定性 (WPS-V3)
核心请求链路 (Request Chain)
1. 用户点击活动卡片/权益领取
-> POST https://personal-act.wps.cn/activity-rubik/activity/component_action
-> 响应: {"result":"error","msg":"captcha verify","data":null}
2. 客户端唤起阿里云验证码 V3
-> static bootstrap: AliyunCaptcha.js
-> POST https://coooqf.captcha-open.aliyuncs.com/ (Action=InitCaptchaV3)
-> 响应下发: CertifyId, StaticPath (sg.xxx.js), DeviceConfig
3. 设备环境采集与上报
-> GET FeiLin 脚本 (基于 DeviceConfig 派生)
-> POST https://cloudauth-device-dualstack.cn-shanghai.aliyuncs.com/ (Action=Log2)
-> 获得 DeviceToken
4. 业务动态 JS 加载与交互初始化
-> GET https://g.alicdn.com/captcha-frontend/dynamicJS/3.29.0/sg.xxx.js
-> POST https://coooqf.captcha-open.aliyuncs.com/ (Action=UploadLog, DYNAMICJS_LOADED)
-> POST https://coooqf.captcha-open.aliyuncs.com/ (Action=InitCaptchaV3 携带 DeviceToken 刷新题型)
-> POST https://cloudauth-device-dualstack.cn-shanghai.aliyuncs.com/ (Action=Log3)
5. 滑块行为完成与凭证提交
-> 滑动滑块生成轨迹加密数据 data
-> SDK 组装凭证 captcha_verify_param: {"sceneId":"...","certifyId":"...","deviceToken":"...","data":"..."}
-> POST https://personal-act.wps.cn/activity-rubik/activity/component_action (携带 captcha_verify_param)
-> 响应: {"result":"ok","msg":"","data":{...}} (放行并返回业务 Token)
关键接口全要素
1. WPS 业务核验接口: POST /activity-rubik/activity/component_action
-
URL:
https://personal-act.wps.cn/activity-rubik/activity/component_action -
Headers:
Content-Type:application/jsonCookie: 包含csrf,kso_sid,uid等用户认证会话 CookieX-Act-Csrf-Token: 32 位防 CSRF Token
-
Payload:
{ "component_uniq_number": { "activity_number": "HD2026010517124915", "page_number": "YM2026010517125537", "component_number": "ZJ2025112512040441", "component_node_id": "FN1762741691qhEB", "filter_params": { "cs_from": "pc_loyalty_center", "position": "loyalty_card2" } }, "component_type": 46, "component_action": "relatives_friend_card.sharer_share", "relatives_friend_card": { "share_type": "one" }, "captcha_verify_param": "{\"sceneId\":\"1wpbfo15\",\"certifyId\":\"...\",\"deviceToken\":\"...\",\"data\":\"...\"}" }
2. 阿里验证码初始化接口: POST https://coooqf.captcha-open.aliyuncs.com/
-
Method:
POST(Form URL-encoded) -
核心字段:
Action:InitCaptchaV3SceneId:1wpbfo15Language:cnMode:popupAccessKeyId:LTAI5tSEBwYMwVKAQGpxmvTdDeviceData/DeviceToken: 由设备端采集模块生成的加密密文Timestamp: ISO 8601 UTC 时间(如2026-09-12T00:23:49Z)SignatureNonce: UUID 随机数Signature: HMAC-SHA1 签名
-
核心响应:
{ "CertifyId": "O2CXBN9hlE", "Code": "Success", "Success": true, "StaticPath": "3.29.0/sg.083.14c93603795a473a", "CaptchaType": "SLIDING" }
字段动静性判别表
| 字段名 | 归属 | 属性 | 逆向策略 |
|---|---|---|---|
activity_number / page_number |
WPS 业务 | 静态常量 | 页面固定配置 |
X-Act-Csrf-Token / Cookie |
WPS 业务 | 会话动态 | 用户登录态 Cookie 中直接提取 |
SceneId (1wpbfo15) |
阿里 V3 | 静态常量 | 阿里控制台场景 ID |
Timestamp / SignatureNonce |
阿里 V3 | 动态时钟/随机 | Python datetime / uuid4() 生成 |
Signature |
阿里 V3 | 动态计算 | HMAC-SHA1 签名计算 |
DeviceData / DeviceToken |
阿里设备指纹 | 强动态加密 | FeiLin 环境采集生成 |
StaticPath / sg.xxx.js |
阿里 V3 | 动态下发 | 每次请求根据服务端下发路径下载并在受控环境执行 |
captcha_verify_param.data |
验证码行为凭证 | 核心动态密文 | 核心逆向目标:滑块物理拖拽轨迹与环境加密密文 |
基准重放测试记录
- 携带抓包捕获的合法
captcha_verify_param与 Cookie 重放component_action:- 响应:
{"result":"ok","msg":"","data":{..."token":"0e86810c741bf8f617374a9489c6e2f0"...}} - 结论:服务端二次核验完全依赖
captcha_verify_param的一次性有效性,一旦消费成功即颁发业务权益 Token,重放二次使用会提示已消费或过期。因此核心任务是自动化生成一次性合规的captcha_verify_param凭证。
- 响应:
Phase 2:入口定位与样本
Phase 2 调用栈与实证样本 (WPS-V3)
真实生成入口 (Call Stack & Entry Point)
1. 业务端验证码唤起与回调注入
-
业务发包出口:
POST https://personal-act.wps.cn/activity-rubik/activity/component_action -
触发逻辑:
-
当业务返回
{"result":"error","msg":"captcha verify"}时,WPS 前端组件调用:initAliyunCaptcha({ SceneId: '1wpbfo15', prefix: 'coooqf', mode: 'popup', element: '#captcha-element', button: '#btn', captchaVerifyCallback: function(captchaVerifyParam) { // 将 captchaVerifyParam 注入 component_action 请求体中重新发包 return submitComponentActionWithCaptcha(captchaVerifyParam); } });
-
-
凭证生成出口:
captchaVerifyCallback回调函数的入参captchaVerifyParam- 格式为字符串化 JSON:
{"sceneId":"1wpbfo15","certifyId":"...","deviceToken":"...","data":"..."}
2. 阿里云底层核心加密点
- API 请求签名 (HMAC-SHA1):
- 计算规范化 Query/Form 参数的 HMAC-SHA1 签名
- 签名字符串结构:
POST&%2F&<SortedUrlEncodedParams>
- 设备指纹加密 (FeiLin):
- 采集浏览器环境、Canvas/WebGL、插件、窗口尺寸,生成密文作为
DeviceData/DeviceToken
- 采集浏览器环境、Canvas/WebGL、插件、窗口尺寸,生成密文作为
- 滑块行为轨迹加密 (
dynamicJS/sg.xxx.js):- 监听
pointerdown/mousedown、mousemove、mouseup等事件 - 采集物理拖拽点数、时间戳序列、速度与加速度微扰动,打包并经动态混淆算法加密输出为
data密文
- 监听
样本 Manifest (已落盘至 scratch/vectors.json)
| 样本名称 | 接口 | 关键输入要素 | 预期输出/响应 |
|---|---|---|---|
sample_1_trigger_challenge |
/activity/component_action |
无 captcha_verify_param 的原始业务操作 |
{"result":"error","msg":"captcha verify"} |
sample_2_init_captcha_v3 |
coooqf.captcha-open.aliyuncs.com |
Action=InitCaptchaV3, SceneId=1wpbfo15 |
下发 CertifyId, StaticPath(sg.xxx.js), DeviceConfig |
sample_3_release_business_token |
/activity/component_action |
携带有效 captcha_verify_param 的完整请求体 |
{"result":"ok","msg":"","data":{...}} (发放业务 Token) |
编码与算法观察
- 动态分发策略 (
dynamic_delivery=per_request):- 阿里 V3 服务端按 attempt 动态下发不同的
sg.xxx.js(例如本次抓包中先后下发了sg.093.544562c1d80f9426.js、sg.096.e4bfbb8491cf992c.js、sg.083.14c93603795a473a.js)。 - 因此不可采用死扣静态 JS 的硬编码方案,必须采用受控两阶段 Node.js 运行时:实时拉取下发的动态 JS,在注入真实 DOM/BOM 语义与 56 步拟人轨迹的环境中执行,生成合规凭证。
- 阿里 V3 服务端按 attempt 动态下发不同的
运行结果
自测成功率100%,耗时一次大概2~3 秒

📬 商务合作与技术交流
说明:有需求、有预算的合作方欢迎随时沟通;加好友请备注来意(如:逆向定制 / 商务合作 / 技术交流)。
- 💬 微信 (WeChat):
time20250923 - 🐧 QQ:
1511225190

浙公网安备 33010602011771号