利用WPS实现【夸克网盘】全自动签到获取永久容量
之前分享过利用WPS的AirScript实现【阿里云盘的全自动签到】,今天再来分享一下【夸克网盘】全自动签到获取永久容量的方法。
准备工作,先来获取夸克Cookie,教程如下:
1.电脑浏览器打开夸克网盘,先不登录的情况下 按 F12 ,选择“网络”,如图所示:
扫码登录后,请选择”sort?pr=ucpro&fr=pc“名称文件,并下滑找到”Cookie“所对应的值就是你的Cookie,如下图所示。
如果你需要复用之前阿里云盘签到配置的推送,可以直接在之前创建的表格中新建一个名为 夸克网盘
的工作表。再把新建一个脚本粘贴下方的代码,再把获取到的夸克网盘Cookie 放在 A 列即可,支持多账号,一行一个。
源码开源地址:https://registry.npmmirror.com/@asunajs/dist/0.0.3/files/quark.wps.js
完整代码如下:
- // ../../core/quark/api.ts
- function createApi(http) {
- let driveUrl = “https://drive-m.quark.cn/1/clouddrive/capacity/growth”;
- return {
- getInfo: function() {
- return http.get(`${driveUrl}/info?pr=ucpro&fr=pc&uc_param_str=`);
- },
- sign: function() {
- return http.post(`${driveUrl}/sign?pr=ucpro&fr=pc&uc_param_str=`, {
- sign_cyclic: !0
- });
- }
- };
- }
- // ../../core/quark/index.ts
- function getInfo($) {
- try {
- let { data, code, status, message } = $.api.getInfo();
- if (code !== 0) {
- $.logger.info(“获取用户信息失败”, code, status, message);
- return;
- }
- return data.cap_sign;
- } catch (error) {
- $.logger.error(“获取用户信息异常”, error.message);
- }
- }
- function signIn($) {
- try {
- let { data, code, status, message } = $.api.sign();
- if (code !== 0) {
- $.logger.info(“签到失败”, code, status, message);
- return;
- }
- return data.sign_daily_reward;
- } catch (error) {
- $.logger.error(“签到异常”, error.message);
- }
- }
- function run($) {
- try {
- let info = getInfo($);
- if (!info) {
- $.logger.error(“登录失败”);
- return;
- }
- let { sign_progress, sign_rewards, sign_target, sign_daily } = info;
- if (sign_daily) {
- $.logger.info(`\u4ECA\u65E5\u5DF2\u7B7E\u5230${sign_rewards[sign_progress – 1].name}\uFF0C\u8FDE\u7B7E\u8FDB\u5EA6${sign_progress}/${sign_target}\u3002`);
- return;
- }
- let dailyReward = signIn($);
- dailyReward && $.logger.info(`\u7B7E\u5230\u6210\u529F\uFF0C\u83B7\u5F97${dailyReward / 1048576}M\uFF0C\u8FDE\u7B7E\u8FDB\u5EA6${sign_progress + 1}/${sign_target}\u3002`);
- } catch (error) {
- $.logger.error(“运行异常”, error.message);
- }
- }
- // ../../packages/utils-pure/index.ts
- function createLogger(options) {
- let wrap = (type, …args)=>{
- if (options && options.pushData) {
- let msg = args.reduce((str, cur)=>`${str} ${cur}`, “”).substring(1);
- options.pushData.push({
- msg: msg,
- type: type,
- date: /* @__PURE__ */ new Date()
- });
- }
- console[type](…args);
- };
- return {
- info: (…args)=>wrap(“info”, …args),
- error: (…args)=>wrap(“error”, …args),
- debug: (…args)=>wrap(“info”, …args)
- };
- }
- // ../../core/push/index.ts
- function _send({ logger, http }, name = “自定义消息”, options) {
- try {
- let requestOptions = {
- method: “POST”,
- headers: {
- “Content-Type”: “application/json”
- },
- timeout: 1e4,
- …options
- };
- Reflect.has(options, “data”) && Reflect.has(options.data, “agent”) && (requestOptions.agent = options.data.agent, delete options.data.agent);
- let data = http.fetch(requestOptions), { errcode, code, err } = data;
- if (errcode || err || ![
- 0,
- 200,
- void 0
- ].some((c)=>code === c)) return logger.error(`${name}\u53D1\u9001\u5931\u8D25`, JSON.stringify(data));
- logger.info(`${name}\u5DF2\u53D1\u9001\uFF01`);
- } catch (error) {
- logger.info(`${name}\u53D1\u9001\u5931\u8D25: ${error.message}`);
- }
- }
- function pushplus(apiOption, { token, …option }, title, text) {
- return _send(apiOption, “pushplus”, {
- url: “http://www.pushplus.plus/send”,
- method: “POST”,
- data: {
- token: token,
- title: title,
- content: text,
- …option
- }
- });
- }
- function serverChan(apiOption, { token, …option }, title, text) {
- return _send(apiOption, “Server酱”, {
- url: `https://sctapi.ftqq.com/${token}.send`,
- headers: {
- “content-type”: “application/x-www-form-urlencoded”
- },
- data: {
- text: title,
- desp: text.replaceAll(`
- `, `
- `),
- …option
- }
- });
- }
- function workWeixin(apiOption, { msgtype = “text”, touser = “@all”, agentid, corpid, corpsecret, …option }, title, text) {
- try {
- let { access_token } = apiOption.http.fetch({
- url: “https://qyapi.weixin.qq.com/cgi-bin/gettoken”,
- method: “POST”,
- data: {
- corpid: corpid,
- corpsecret: corpsecret
- },
- headers: {
- “Content-Type”: “application/json”
- }
- });
- return _send(apiOption, “企业微信推送”, {
- url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${access_token}`,
- data: {
- touser: touser,
- msgtype: msgtype,
- agentid: agentid,
- [msgtype]: {
- content: `${title}
- ${text}`
- },
- …option
- }
- });
- } catch (error) {
- apiOption.logger.error(“企业微信推送失败”), apiOption.logger.error(error);
- }
- }
- function workWeixinBot(apiOption, { url, msgtype = “text”, …option }, title, text) {
- return _send(apiOption, “企业微信Bot推送”, {
- url: url,
- data: {
- msgtype: msgtype,
- [msgtype]: {
- centent: `${title}
- ${text}`
- },
- …option
- }
- });
- }
- function bark(apiOption, { key, level = “passive”, …options }, title, text) {
- return _send(apiOption, “Bark ios 推送”, {
- url: `https://api.day.app/${key}`,
- data: {
- body: text,
- title: title,
- level: level,
- …options
- }
- });
- }
- function twoIm(apiOption, { key, sid, query, msgtype = “text”, …options }, title, text) {
- let urlSearch = new URLSearchParams({
- key: key,
- sid: sid
- });
- return query && Object.entries(query).forEach(([key2, value])=>{
- urlSearch.append(key2, String(value));
- }), _send(apiOption, “Bark ios 推送”, {
- url: `https://api.2im.cn/push?${urlSearch.toString()}`,
- data: {
- msgtype: msgtype,
- content: text,
- title: title,
- …options
- }
- });
- }
- // ../utils/index.ts
- function createSimpleRequest(headers) {
- return {
- get: (url)=>HTTP.get(url, {
- headers: headers
- }).json(),
- post: (url, data)=>HTTP.post(url, typeof data == “string” ? data : JSON.stringify(data), {
- headers: headers
- }).json()
- };
- }
- function getPushConfig() {
- let usedRange2 = Application.Sheets.Item(“推送”).UsedRange;
- if (!usedRange2) return console.log(“未开启推送”), {};
- let cells = usedRange2.Columns.Cells, columnEnd = Math.min(50, usedRange2.ColumnEnd), rowEnd = Math.min(50, usedRange2.RowEnd), pushConfig = {};
- for(let option = usedRange2.Column; option <= columnEnd; option++){
- let t = {}, item = cells.Item(option);
- if (item.Text) {
- pushConfig[item.Text] = t;
- for(let kv = 1; kv <= rowEnd; kv++){
- let key = item.Offset(kv).Text;
- key.trim() && (t[key] = valueHandle(item.Offset(kv, 1).Text.trim()));
- }
- }
- }
- let base = pushConfig.base;
- if (!base) return pushConfig;
- return delete pushConfig.base, {
- …pushConfig,
- …base
- };
- function valueHandle(value) {
- return value === “TRUE” || value === “是” ? !0 : value === “FALSE” || value === “否” ? !1 : value;
- }
- }
- function email({ logger }, email2, title, text) {
- try {
- if (!email2 || !email2.pass || !email2.from || !email2.host) return;
- let port = email2.port || 465, toUser = email2.to || email2.from;
- SMTP.login({
- host: email2.host,
- // 域名
- port: port,
- // 端口
- secure: port === 465,
- // TLS
- username: email2.from,
- // 账户名
- password: email2.pass
- }).send({
- from: `${title} <${email2.from}>`,
- to: toUser,
- subject: title,
- text: text.replace(/\n/g, `\r
- `)
- }), logger.info(“邮件消息已发送”);
- } catch (error) {
- logger.error(“邮件消息发送失败”, error.message);
- }
- }
- function sendNotify(op, data, title, text) {
- let cbs = {
- pushplus: pushplus,
- serverChan: serverChan,
- workWeixin: workWeixin,
- email: email,
- workWeixinBot: workWeixinBot,
- bark: bark,
- twoIm: twoIm
- };
- for (let [name, d] of Object.entries(data)){
- let cb = cbs[name];
- cb && cb(op, d, title, text);
- }
- }
- function sendWpsNotify(pushData2, pushConfig) {
- if (pushData2.length && pushConfig && !(pushConfig.onlyError && !pushData2.some((el)=>el.type === “error”))) {
- let msg = pushData2.map((m)=>`[${m.type} ${m.date.toLocaleTimeString()}]${m.msg}`).join(`
- `);
- msg && sendNotify({
- logger: createLogger(),
- http: {
- fetch: (op)=>(op.data && typeof op.data != “string” && (op.body = JSON.stringify(op.data)), HTTP.fetch(op.url, op).json())
- }
- }, pushConfig, pushConfig.title || “asign 运行推送”, msg);
- }
- }
- // index.ts
- function main(cookie, option) {
- if (!cookie) return;
- let logger = createLogger({
- pushData: option && option.pushData
- }), $ = {
- api: createApi(createSimpleRequest({
- “content-type”: “application/json”,
- “user-agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0”,
- cookie: cookie
- })),
- logger: logger,
- sleep: Time.sleep
- };
- $.logger.info(“————–“), run($);
- }
- var sheet = Application.Sheets.Item(“夸克网盘”) || Application.Sheets.Item(“quark”) || ActiveSheet, usedRange = sheet.UsedRange, columnA = sheet.Columns(“A”), len = usedRange.Row + usedRange.Rows.Count – 1, pushData = [];
- for(let i = 1; i <= len; i++){
- let cell = columnA.Rows(i);
- cell.Text && (console.log(`\u6267\u884C\u7B2C ${i} \u884C`), main(cell.Text, {
- pushData: pushData
- }));
- }
- sendWpsNotify(pushData, getPushConfig());
延伸阅读:
月入2万:我在云众推找到了「不熬夜、不囤货」的副业密码
最近后台总有人私信我:“有没有不用熬夜、不用囤货,普通人也能做的副业?”“刷手机就能赚钱是真的吗?”“怕被割韭菜,求推荐...

2025一刻相册无限空间激活方法、激活码AA6688
