每日自动签到夸克网盘,领取永久免费空间容量
会飞的兔子来啦,想要夸克网盘自动签到的拿走! 收藏+评分+有用三连
之前分享阿里云盘领取容量的回复我都一 一查看,很多人讲阿里云盘限时限量,我想说分享思路讲案例,学习研究目的而已;有路子的推荐~
目前活动中普通用户领取20M,SVIP100MB都是永久有效,具体能用多久未知,cookie失效多久未知,以后失效我在持续更新。
有几处坑的地方,手机端与pc端区分域名,cookie增加only,请求参数空也不能丢。
大体流程:
- 每日定时调度 (有时间在推荐免费白嫖调度平台)
- 获取cookie 登录
- 获取已签到状态
- 执行签到获取容量
- 异常通知(自行实现)
- 其他活动暂没时间看,有需要在讲。
- 处理返回参数,可以不用加。
private static JSONObject getDataResponse(String response) {
JSONObject responseStatus = JSONUtil.parseObj(response);
if (ObjectUtil.notEqual(responseStatus.getInt("status"), 200)) {
String message = "夸克平台接口异常," + responseStatus.getStr("message");
logger.error(message);
return responseStatus;
}
return responseStatus.getJSONObject("data");
}
- 获取cookie 登录
登录PC端 夸克网盘 (quark.cn) 登录后F12,控制台,执行下面脚本会输出很长字符串。 网站带有防跨站攻击的,可以使用这个脚本解决。
cookieStore.getAll().then(o=>{let e="";o.forEach(o=>{const{name:l,value:n,domain:t}=o;t&&(e+=`${l}=${n};`)}),console.log(e)});
//需要设置全局cookie Map<String, String> header = new HashMap<>();
header.put("cookie", ”上一步的字符串“);
header.put("Content-Type", "application/json");
String userUrl = "https://pan.quark.cn/account/info";
JSONObject userInfo = JSONUtil.parseObj(HttpUtil.createGet(userUrl).addHeaders(header).execute().body()).getJSONObject("data");
if (ObjectUtil.isEmpty(userInfo.getStr("nickname"))) {
logger.info("登录失败,cookie错误。");
return;
}
logger.info("hello,{}! 登录成功。", userInfo.getStr("nickname"));
输出hello就登录成功了,如果没有说明cookie不对。
2.获取已签到状态, 此处可以不添加跳过,这里的进度计算可能不准确。
//查看当前签到状态,如果签到过不再执行。
String stateUrl = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/info?pr=ucpro&fr=pc&uc_param_str=";
JSONObject sign = getDataResponse(HttpUtil.createGet(stateUrl).addHeaders(header).execute().body()).getJSONObject("cap_sign");
if (sign.getBool("sign_daily")) {
int number = sign.getInt("sign_daily_reward") / 1024/1024;
BigDecimal progress = new BigDecimal(sign.getStr("sign_progress")).divide(new BigDecimal(sign.getStr("sign_target")), BigDecimal.ROUND_CEILING);
logger.info("今日已签到获取{}MB,进度{}%", number, progress);
return;
}
3.执行签到获取容量
//执行签到
String signUrl = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/sign?pr=ucpro&fr=pc&uc_param_str=";
Map<String, Object> params = new HashMap<>();
params.put("sign_cyclic", true);
JSONObject dataResponse = getDataResponse(HttpUtil.createPost(signUrl).addHeaders(header).body(JSONUtil.toJsonStr(params)).execute().body());
int mb = dataResponse.getInt("sign_daily_reward") / 2048;
logger.info("签到成功,获取到{}MB!", mb);