本帖最后由 rabbit0214 于 2024-3-19 18:15 编辑
每日自动签到阿里云盘,领取免费空间容量。
本帖子中均为原创代码,本次分享关键代码,项目没有推git,不提供完整项目;目前已稳定运行4个月之久~
代码不重要,重要的是实现思路,新人发帖,不喜勿喷。
大体程序流程:- 每日定时调度
- 登录PC获取到cookies -- 讲解
- refreshToken换取token --讲解
- 签到接口获取空间容量 -- 讲解
- 异常通知
- 其他活动分页领取
我用的是jdk17,springboot3,hutool ,没有数据库。
阿里云盘 (alipan.com)
成功登录阿里云盘后,F12找到控制台(谷歌其他类似一样的), 执行脚本:JSON.parse(localStorage.getItem('token')).refresh_token 会获取得一个32位字符串
kon
2.refreshToken换取token 方式,出现你的网盘名字就成功啦!
[Java] 纯文本查看 复制代码
Map<String, String> param = new HashMap<>();
param.put("grant_type", "refresh_token");
param.put("refresh_token", ”上一步的32字符串值“);
HttpResponse execute = HttpUtil.createPost("https://auth.aliyundrive.com/v2/account/token").body(JSONUtil.toJsonStr(param)).execute();
if (ObjectUtil.notEqual(execute.getStatus(), 200)) {
logger.error(execute.body());
return;
}
JSONObject jsonObject = JSONUtil.parseObj(execute.body());
refreshToken = jsonObject.getStr("refresh_token"); //需要定义全局变量,用于下一次请求使用。
logger.info("阿里云盘名字:{}", jsonObject.getStr("nick_name"));
3.签到接口获取空间容量
[Java] 纯文本查看 复制代码 Map<String, String> header = new HashMap<>();
header.put("Content-Type", "application/json");
header.put("Authorization", jsonObject.getStr("access_token"));//上一步的返回值
header.put("isReward", "false");
HttpResponse execute1 = HttpUtil.createPost("https://member.aliyundrive.com/v1/activity/sign_in_list?_rx-s=mobile").addHeaders(header).body(JSONUtil.toJsonStr(header)).execute();
if (ObjectUtil.notEqual(execute1.getStatus(), 200)) {
logger.error(execute1.body());
return;
}
JSONObject jsonObject1 = JSONUtil.parseObj(execute1.body());
if (!jsonObject1.getBool("success")) {
logger.error(execute1.body());
return;
}
JSONObject result = jsonObject1.getJSONObject("result");
Integer signInCount = result.getInt("signInCount");
logger.info("阿里云盘签到成功,累计签到{}天!", signInCount);
出现累积签到天数就成功啦!
夸克网盘自动签到领取永久免费容量
|