查看: 84|回覆: 1

[资源分享] 青龙面板 夸克签到领取永久空间

[複製鏈接]
游戏达人
游戏达人
累计完成10局游戏
活跃度勋章 · 中级
连胜新星
连胜新星
连续获得3场胜利
胜利勋章 · 中级
首胜纪念
首胜纪念
获得第一场胜利
胜利勋章 · 初级
人机挑战者
人机挑战者
在人机对战中击败AI
特殊成就勋章 · 中级
五子棋新手
五子棋新手
在五子棋中完成第一局游戏
游戏专项勋章 · 初级
初出茅庐
初出茅庐
完成第一局游戏
活跃度勋章 · 初级
象棋新手
象棋新手
在中国象棋中完成第一局游戏
游戏专项勋章 · 初级

30

主題

4

回帖

3706

積分

管理员

金币
3383
閲讀權限
255
精華
0
威望
0
贡献
0
在線時間
189 小時
註冊時間
2008-1-1
發表於 昨天 22:21 | 顯示全部樓層 |閲讀模式
青龙面板脚本
夸克签到领取永久空间
  1. '''
  2. new Env('夸克自动签到')
  3. cron: 0 9 * * *

  4. 目前有效
  5. 使用移动端接口修复每日自动签到,移除原有的“登录验证”,参数有效期未知

  6. Author: BNDou
  7. Date: 2024-03-15 21:43:06
  8. LastEditTime: 2025-11-18 03:49:26
  9. FilePath: \Auto_Check_In\checkIn_Quark.py
  10. Description:
  11. 抓包流程:
  12.     【手机端】
  13.     ①打开抓包,手机端访问抽奖页
  14.     ②找到url为 https://drive-m.quark.cn/1/clouddrive/act/growth/reward 的请求信息
  15.     ③复制整段url,该链接后面必须要有参数: kps sign vcode,粘贴到环境变量
  16.     环境变量名为 COOKIE_QUARK 多账户用 回车 或 && 分开
  17.     user字段是用户名 (可是随意填写,多账户方便区分)
  18.     例如: user=张三; url=https://drive-m.quark.cn/1/clouddrive/act/growth/reward?xxxxxx=xxxxxx&kps=abcdefg&sign=hijklmn&vcode=111111111;
  19.     旧版环境变量格式也兼容,例如: user=张三; kps=abcdefg; sign=hijklmn; vcode=111111111;
  20. '''
  21. import os
  22. import re
  23. import sys

  24. import requests

  25. # 测试用环境变量
  26. # os.environ['COOKIE_QUARK'] = ''

  27. # 初始化通知模块
  28. notify = None
  29. try:
  30.     # 优先导入第三方notify模块
  31.     from notify import send as notify_send
  32.     notify = notify_send
  33.     print("✅ 成功加载notify通知模块")
  34. except ImportError:
  35.     try:
  36.         # 兼容旧版utils.notify路径
  37.         from utils.notify import send as utils_notify_send
  38.         notify = utils_notify_send
  39.         print("✅ 成功加载utils.notify通知模块")
  40.     except Exception as err:
  41.         print(f"⚠️ 通知模块加载失败: {err},将仅输出日志不发送通知")


  42. # 获取环境变量
  43. def get_env():
  44.     # 判断 COOKIE_QUARK是否存在于环境变量
  45.     if "COOKIE_QUARK" in os.environ:
  46.         # 读取系统变量以 \n 或 && 分割变量
  47.         cookie_list = re.split('\n|&&', os.environ.get('COOKIE_QUARK'))
  48.     else:
  49.         # 标准日志输出
  50.         print('❌未添加COOKIE_QUARK变量')
  51.         if notify:
  52.             notify('夸克自动签到', '❌未添加COOKIE_QUARK变量')
  53.         # 脚本退出
  54.         sys.exit(0)

  55.     return cookie_list


  56. class Quark:
  57.     '''
  58.     Quark类封装了签到、领取签到奖励的方法
  59.     '''
  60.     def __init__(self, user_data):
  61.         '''
  62.         初始化方法
  63.         :param user_data: 用户信息,用于后续的请求
  64.         '''
  65.         self.param = user_data

  66.     def convert_bytes(self, b):
  67.         '''
  68.         将字节转换为 MB GB TB
  69.         :param b: 字节数
  70.         :return: 返回 MB GB TB
  71.         '''
  72.         units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
  73.         i = 0
  74.         while b >= 1024 and i < len(units) - 1:
  75.             b /= 1024
  76.             i += 1
  77.         return f"{b:.2f} {units[i]}"

  78.     def get_growth_info(self):
  79.         '''
  80.         获取用户当前的签到信息
  81.         :return: 返回一个字典,包含用户当前的签到信息
  82.         '''
  83.         url = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/info"
  84.         querystring = {
  85.             "pr": "ucpro",
  86.             "fr": "android",
  87.             "kps": self.param.get('kps'),
  88.             "sign": self.param.get('sign'),
  89.             "vcode": self.param.get('vcode')
  90.         }
  91.         response = requests.get(url=url, params=querystring).json()
  92.         #print(response)
  93.         if response.get("data"):
  94.             return response["data"]
  95.         else:
  96.             return False

  97.     def get_growth_sign(self):
  98.         '''
  99.         获取用户当前的签到信息
  100.         :return: 返回一个字典,包含用户当前的签到信息
  101.         '''
  102.         url = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/sign"
  103.         querystring = {
  104.             "pr": "ucpro",
  105.             "fr": "android",
  106.             "kps": self.param.get('kps'),
  107.             "sign": self.param.get('sign'),
  108.             "vcode": self.param.get('vcode')
  109.         }
  110.         data = {"sign_cyclic": True}
  111.         response = requests.post(url=url, json=data, params=querystring).json()
  112.         #print(response)
  113.         if response.get("data"):
  114.             return True, response["data"]["sign_daily_reward"]
  115.         else:
  116.             return False, response["message"]

  117.     def queryBalance(self):
  118.         '''
  119.         查询抽奖余额
  120.         '''
  121.         url = "https://coral2.quark.cn/currency/v1/queryBalance"
  122.         querystring = {
  123.             "moduleCode": "1f3563d38896438db994f118d4ff53cb",
  124.             "kps": self.param.get('kps'),
  125.         }
  126.         response = requests.get(url=url, params=querystring).json()
  127.         # print(response)
  128.         if response.get("data"):
  129.             return response["data"]["balance"]
  130.         else:
  131.             return response["msg"]

  132.     def do_sign(self):
  133.         '''
  134.         执行签到任务
  135.         :return: 返回一个字符串,包含签到结果
  136.         '''
  137.         log = ""
  138.         # 每日领空间
  139.         growth_info = self.get_growth_info()
  140.         if growth_info:
  141.             log += (
  142.                 f" {'88VIP' if growth_info['88VIP'] else '普通用户'} {self.param.get('user')}\n"
  143.                 f"💾 网盘总容量:{self.convert_bytes(growth_info['total_capacity'])},"
  144.                 f"签到累计容量:")
  145.             if "sign_reward" in growth_info['cap_composition']:
  146.                 log += f"{self.convert_bytes(growth_info['cap_composition']['sign_reward'])}\n"
  147.             else:
  148.                 log += "0 MB\n"
  149.             if growth_info["cap_sign"]["sign_daily"]:
  150.                 log += (
  151.                     f"✅ 签到日志: 今日已签到+{self.convert_bytes(growth_info['cap_sign']['sign_daily_reward'])},"
  152.                     f"连签进度({growth_info['cap_sign']['sign_progress']}/{growth_info['cap_sign']['sign_target']})\n"
  153.                 )
  154.             else:
  155.                 sign, sign_return = self.get_growth_sign()
  156.                 if sign:
  157.                     log += (
  158.                         f"✅ 执行签到: 今日签到+{self.convert_bytes(sign_return)},"
  159.                         f"连签进度({growth_info['cap_sign']['sign_progress'] + 1}/{growth_info['cap_sign']['sign_target']})\n"
  160.                     )
  161.                 else:
  162.                     log += f"❌ 签到异常: {sign_return}\n"
  163.         else:
  164.             log += f"❌ 签到异常: 获取成长信息失败\n"

  165.         return log


  166. def extract_params(url):
  167.     '''
  168.     从URL中提取所需的参数
  169.     :param url: 包含参数的URL
  170.     :return: 返回一个字典,包含所需的参数
  171.     '''
  172.     # 提取URL中的查询参数部分(?后面的内容)
  173.     query_start = url.find('?')
  174.     query_string = url[query_start + 1:] if query_start != -1 else ''

  175.     # 解析查询参数
  176.     params = {}
  177.     for param in query_string.split('&'):
  178.         if '=' in param:
  179.             key, value = param.split('=', 1)
  180.             params[key] = value

  181.     # 返回所需的参数
  182.     return {
  183.         'kps': params.get('kps', ''),
  184.         'sign': params.get('sign', ''),
  185.         'vcode': params.get('vcode', '')
  186.     }


  187. def main():
  188.     '''
  189.     主函数
  190.     :return: 返回一个字符串,包含签到结果
  191.     '''
  192.     msg = ""
  193.     cookie_quark = get_env()

  194.     print("✅ 检测到共", len(cookie_quark), "个夸克账号\n")

  195.     i = 0
  196.     while i < len(cookie_quark):
  197.         # 获取user_data参数
  198.         user_data = {}  # 用户信息
  199.         for a in cookie_quark[i].replace(" ", "").split(';'):
  200.             if not a == '':
  201.                 user_data.update({a[0:a.index('=')]: a[a.index('=') + 1:]})
  202.         
  203.         # 从url参数中提取额外信息
  204.         if 'url' in user_data:
  205.             url_params = extract_params(user_data['url'])
  206.             user_data.update(url_params)
  207.         # print(user_data)
  208.         
  209.         # 开始任务
  210.         log = f"🙍🏻‍♂️ 第{i + 1}个账号"
  211.         msg += log
  212.         print(log)  # 实时输出日志
  213.         # 执行签到
  214.         sign_log = Quark(user_data).do_sign()
  215.         msg += sign_log + "\n"
  216.         print(sign_log)  # 实时输出签到日志

  217.         i += 1

  218.     # 输出完整日志
  219.     print("\n" + "="*50)
  220.     print("📝 签到结果汇总:")
  221.     print(msg)
  222.     print("="*50)

  223.     # 发送通知(如果通知模块加载成功)
  224.     if notify:
  225.         try:
  226.             notify('夸克自动签到', msg)
  227.             print("✅ 通知发送成功")
  228.         except Exception as err:
  229.             print(f"❌ 通知发送失败: {err}")
  230.     else:
  231.         print("⚠️ 未加载到通知模块,跳过发送通知")

  232.     return msg[:-1]


  233. if __name__ == "__main__":
  234.     print("----------夸克网盘开始签到----------")
  235.     main()
  236.     print("----------夸克网盘签到完毕----------")
複製代碼


回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 昨天 22:21 | 顯示全部樓層
哇,感谢楼主分享这么实用的脚本!太棒了

一直想搞个自动签到,之前手动签到总是忘记,现在有了这个脚本应该方便多了。赞一个

想请教一下:

1. 这个脚本需要一直挂着青龙面板运行吗?还是配置一次就行?
2. 签到领取的空间是永久的吗?会不会过期?
3. 多账户的话是用回车分割还是用&&分割?

另外提醒一下各位小伙伴,抓包的时候记得保护好自己的Cookie信息,不要随意泄露,安全第一!

再次感谢楼主的分享,祝大家都能拿到永久空间!

圆梦公社 - 感谢楼主的无私分享!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部