PikPak网盘刷邀请
本文最后更新于 2024-07-06,文章内容可能已经过时。
前面提醒
脚本代码在GitHub
之前很久之前就搞过了,但是最近感觉还有一些用,重新整理一遍。
开启抓包重新注册一遍,走个流程重新抓个包整理一下。
哇去!第一眼看到有图形验证码校验的时候心都凉了,感觉这下要麻烦了,不知道啥时候加的,已经很久没有用过 PikPak 了。
先尝试看一下这个验证码,验证码搞不定的话整个流程就G了。
验证码校验
查找验证码规则
看一下原始数据。
还好还好,看着不难,列表长度和验证码滑块总步长一直,每一个数组也是 3x3 和图片也对的上,应该就是图片位置描述。打开验证码网页控制台找找规则看看。
找一个正确的看看结果与其他的有什么区别,感觉规则还是很明显的。
- 每一列中,逗号前面的数字相同(纵向一致)。
- 每一行中,逗号后面的数字相同(横向一致)。
多刷新了几个验证码发现规则就是这个,提取代码让 ChatGPT 来完成吧!
查找验证码验证逻辑
关键词搜一下,总么感觉这么简单啊,连混淆都没有,直接搜到了,debug下个断点试一下。
没啥问题,就是 /pzzl/verify
的请求体信息,将相关代码拿出来补一下环境试一下。
ojbk,简单简单,连个混淆都没有做过,逻辑也很简单。
其他参数的生成逻辑
从抓包里面分析一下,大概就是 client_id
, x-device-id
, user-agent
, captcha_sign
几个参数,其他的一眼看下去就是固定值,比如 package_name
, client_version
, timestamp
。jadx 打开一下 apk 找一下生成逻辑。
全局搜一下,client_id
应该是固定值 YNxT9w7GMdWvEOKa
。
device_id
设备ID没啥要看的了,32位,判断新用户就是根据这个来的,老规矩直接 uuidv4
生成就好了。
user-agent
里面就是正常获取设备信息,这个可以直接从应用变量里面拷贝一大堆,问题不大,但是新增了一个 devicesign
参数,这个应该是根据 x-device-id
生成出来的。
生成逻辑为三段,第一段为 div101.
固定值,第二段为 device_id
,第三段为三个值先 SHA-1
再 MD5
,frida
看一下,应该是固定的 com.pikcloud.pikpak1appkey
,结果为 430c9b9e393eb807dfc0c79466841630
。
captcha_sign
直接搜索没有搜到,但是有个特征是 1.
开头,尝试搜一下这个。
ok,没什么毛病,就是这个东西了,根据时间戳进行验签,扒一下 d.a
方法就好了。
组装参数循环调用 MD5
,盐是从 alg/alg
或者 algtv/alg
文件夹读取文件获取的。
把文件拿出来读一下,简单整理进行测试,ojbk。
剩下的好像就没有什么要搞得了,直接根据接口整理代码进行测试。
测试
整理一下注册顺序:
/v1/auth/verification
: 获取验证码和verification_id
/v1/auth/verification/verify
: 提交verification_id
和验证码进行校验,获取verification_token
/v1/auth/signup
: 开始注册/vip/v1/order/activation-code
: 填写邀请码
这里面可会返回 400
错误,因为captcha_token
参数失效,需要调用 /v1/shield/captcha/init
接口进行刷新,而这个接口返回包含 url
参数就是需要二次进行图形验证码验证,也就是上面找的东西,没有 url
参数就是直接刷新成功了。
这里利用的邮箱工具是自己之前整的玩具,大家可能需要对接自己的垃圾邮箱API,测试一下。
okk,注册成功,但是返回网盘发现邀请用户并没有增加,奇怪了,回头重新翻一下请求接口顺序,应该是中途还有必须的请求漏了。
找到一个 /vip/v1/activity/invite
可以请求,塞进中途进行看一下。
成功邀请成功,应该就是这一个请求的问题。两者在填写邀请码的响应值也有一点区别。Premium invitation code confirmed successfully
和 Congratulations on your free Premium for 5
补一个登录接口
因为我看有些人说刷的邀请会掉是因为被邀请用户没有登录,那些写一个登录接口吧。