App 端登录和 web 端是两个世界
前文讲过拼多多 web 端的 anti_content(JS 生成)。App 端的登录态体系完全不同:anti_content 由 native 安全 SDK 生成,登录态和设备深度绑定。本文讲 App 侧的登录态获取与维护。
登录方式与协议
拼多多 App 的登录方式:手机号+验证码、微信授权、QQ 授权。协议模拟的现实选择是手机号+验证码(微信授权要打通微信的授权链,复杂度翻倍)。
登录接口(mtop 风格,以抓包为准):
POST https://api.yangkeduo.com/login
Body: mobile=xxx&code=xxx&...关键:登录请求必须带 anti_content——App 版的 anti_content 由安全 SDK 的 SO 生成,采集设备环境后加密输出。
App 版 anti_content 的获取
web 版的 anti_content 可以抠 JS,App 版只能两条路:
路线一:Frida RPC 直调(推荐)
Java.perform(function() {
// 安全 SDK 的生成入口(类名以实际版本为准)
var SecureSdk = Java.use('com.xunmeng.pinduoduo.secure.xxx');
rpc.exports = {
antiContent: function(url, params) {
return SecureSdk.getAntiContent(url, params);
}
};
});一台挂机手机提供 anti_content 生成服务,协议程序远程调用。
路线二:unidbg 模拟 SO
安全 SDK 的 SO 加载进 unidbg,补环境后调用。拼多多安全 SDK 对系统服务依赖中等,补环境工作量约 2-3 天,适合规模化。
设备绑定:登录态的隐形锁
拼多多登录态的核心特征:access_token 和设备指纹强绑定。
- 登录时设备信息(型号、Android ID、指纹)随请求上报
- 登录成功后 access_token 绑定该设备档案
- 同一 token 换设备环境使用,立刻触发风控(掉登录或滑块)
工程含义:账号池的每个号 = access_token + 完整设备档案(生成 anti_content 的手机环境)+ IP 段,三者绑定不可拆。
精髓:登录态维护的四个要点
- access_token 有有效期但有刷新接口。定时刷新(每天一次)维持活性,别等过期重新登录——登录接口的风控比刷新接口严得多
- 登录时的验证码环节。新设备首次登录大概率要图形验证码(点选/滑块),协议流程要预留验证码处理环节(打码平台对接)
- 多账号切换的隔离。同一设备环境切多个账号是风控大忌——设备档案和账号一对一,切换账号 = 切换整套设备环境
- 行为分的影响。登录后的前几次操作决定账号的初始风控等级:先浏览、搜索、加购(正常用户行为),几小时后再做业务操作。新登录态立刻下单/领券,是触发人脸验证的最快路径
总结
- App 登录走手机号+验证码,anti_content 由 native SDK 生成
- anti_content 获取:Frida RPC(推荐)或 unidbg
- access_token 与设备档案强绑定,账号池三元组管理
- 定时刷新维持活性,新登录态先养行为分
交流微信:run1255