前言:hello,大家好,今天给大家分享一下我模仿完成《JUEJIN FRIENDS 好好生活计划》连续打卡脚本的过程。
一、事情起因
事情源于我参加了掘金前一阵(为啥是前一阵?因为我也不知道活动啥时候开始的)发布的《JUEJIN FRIENDS 好好生活计划》沸点活动,6天之前我就开始我为期21天(应该不止)的生活打卡之旅,哎~ 就在我昨天在沸点中遨游的时候看到了一篇快速检测自己打卡活动是否满 21 天脚本”的沸点,这沸点看的我是初见惊艳,再见依然。
二、仿写脚本
ok,为啥是“仿”字加粗了?因为仿的不完全,想法是人家的,脚本先驱是人家的,但是我从中思考了并得到了,所以说仿。
初见原文,看到底下很多掘友确认自己连续打卡的天数,但我高傲,我并没问,我看了一遍楼主的代码,决定自己实现一个(也发个沸点火一把,哈哈)
分解任务
- 找到掘金查询沸点的接口
- 用$(ajax)来进行前端请求
- 最后把获取到的答案,打印出来,以便与掘友们分享
ok,简简单单,2个小时,不也就一个小时吧!
1.首先,找到掘金沸点请求接口
2.前端请求
$.ajax({
url: "https://api.juejin.cn/content_api/v1/short_msg/query_list?aid=2608&uuid=6989073187007956487&spider=0",
type: "post",
contentType: "application/json",
asycn: true,
data: {
cursor: "0",
limit: 20,
sort_type: 4,
user_id: "4222596374865550",
},
dataType: "json",
success: function (data) {
console.log("请求返回数据", data);
},
error: function () {},
});
跨域问题?试试楼主的“fetch”请求 — 还是跨域!
这不骗人呢么?看抖音拆盲盒去了,不整了。
第二天(也就是今天),我又不要脸的仔细观看楼主脚本中的细节,甚至低下我高傲的头颅在底下评论了俩个问题!
评论:大佬,有俩个问题想问下!您是怎么解决前端请求掘金接口跨域问题的?cookie需要获取哪些字段呢?
我在评论完15分钟左右删除了我的评论,因为我找到了答案,
- 楼主接口不需要跨域,因为是在掘金页面开发者工具console里面运行的脚本
- cookie就是接口携带的headers请求头里面的cookie,并不是“我所想”的需要本地存储cookie中特定的字段拼接
三、拨开云雾
效果图
代码
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
month = month > 9 ? month : "0" + month;
const today = year + "/" + month + "/" + day;
const cookie =
"_ga=GA1.2.1847236612.1627270411; __tea_cookie_tokens_2608=%257B%2522web_id%2522%253A%25226989073187007956487%2522%252C%2522ssid%2522%253A%252291051704-5bca-40c1-adbc-f4761cc2c698%2522%252C%2522user_unique_id%2522%253A%25226989073187007956487%2522%252C%2522timestamp%2522%253A1627270411223%257D; n_mh=8LoNp6sbZZmuZk3mTMPSciX39zmtL_bwixPCRz7KjR8; sid_guard=4a32b8a1b39dd8147c1747bc04a3d225%7C1663477702%7C31536000%7CMon%2C+18-Sep-2023+05%3A08%3A22+GMT; uid_tt=5fec574a1ccb89386b91c1e9118de903; uid_tt_ss=5fec574a1ccb89386b91c1e9118de903; sid_tt=4a32b8a1b39dd8147c1747bc04a3d225; sessionid=4a32b8a1b39dd8147c1747bc04a3d225; sessionid_ss=4a32b8a1b39dd8147c1747bc04a3d225; sid_ucp_v1=1.0.0-KGM4OWY2NjY5YmQ3YmU4NDM4NmQ5MzRiYWQ2MDE4NGRjMWRmZmYxZmUKFwiOzdCn3Y3ABxDGz5qZBhiwFDgCQPEHGgJsZiIgNGEzMmI4YTFiMzlkZDgxNDdjMTc0N2JjMDRhM2QyMjU; ssid_ucp_v1=1.0.0-KGM4OWY2NjY5YmQ3YmU4NDM4NmQ5MzRiYWQ2MDE4NGRjMWRmZmYxZmUKFwiOzdCn3Y3ABxDGz5qZBhiwFDgCQPEHGgJsZiIgNGEzMmI4YTFiMzlkZDgxNDdjMTc0N2JjMDRhM2QyMjU; MONITOR_WEB_ID=0a0043ef-e80f-47b3-9d58-0b7e2ba7abe1; _gid=GA1.2.1767904775.1669599310; _tea_utm_cache_2608={%22utm_source%22:%22gold_browser_extension%22}; msToken=v_AYc12f08Spc7SHqqNOJhZPap_0Kj8of5FtstZ8E_dT4kKZbcxkckPD_zrGXIG5ZJjsp890dGl3WMnQs4CNSAzqIcc_xfKEFIUkF8CQaLQ=";
const uid = "4222596374865550";
fetch("https://api.juejin.cn/content_api/v1/short_msg/query_list", {
method: "POST",
headers: {
"Content-Type": "application/json",
cookie: cookie,
},
body: JSON.stringify({
cursor: "0",
limit: 20,
sort_type: 4,
user_id: uid,
}),
})
.then((response) => response.json())
.then((data) => {
const result = [];
const isContinuityTime = true;
let isToday = false;
data.data.forEach((value) => {
if (value.theme.name === "JUEJIN FRIENDS 好好生活计划") {
result.push(
new Date(value.msg_Info.mtime * 1000).toLocaleString()
);
}
});
result.map((value, index, arr) => {
if (
new Date(arr[index + 1]).getTime() != NaN &&
new Date(arr[index + 1]).getTime() -
new Date(arr[index]).getTime() >=
86400000
) {
isContinuityTime = false;
}
if (index == 0 && value.includes(today)) isToday = true;
});
let descResult = [...result];
descResult.sort((a, b) => {
return new Date(a).getTime() - new Date(b).getTime();
});
console.log("签到天数汇总:", descResult);
console.log("是否连续签到:", isContinuityTime);
console.log("连续签到天数:", result.length + "天");
console.log("第一次签到日期:", result[result.length - 1]);
console.log("最近签到日期:", result[0]);
console.log(
"是否完成21天连续打卡:",
isContinuityTime && result.length >= 21 ? true : false
);
console.log("今天是否签到:", isToday);
});
总结
当我们遇到可以使我们进步的问题时,不论人潮如何汹涌,必要勇往直前!
相关资料
- https://juejin.cn/pin/topic/7163537723910225960
- https://juejin.cn/pin/7172067604108935199#comment-list
水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!