- UID
- 1
- 積分
- 3706
- 金币
- 3383
- 精華
- 0
- 威望
- 0
- 贡献
- 0
- 閲讀權限
- 255
- 註冊時間
- 2008-1-1
- 最後登錄
- 2026-8-30
- 在線時間
- 189 小時
管理员
- 金币
- 3383
- 閲讀權限
- 255
- 精華
- 0
- 威望
- 0
- 贡献
- 0
- 在線時間
- 189 小時
- 註冊時間
- 2008-1-1
|
青龙面板脚本
夸克签到领取永久空间
- '''
- new Env('夸克自动签到')
- cron: 0 9 * * *
- 目前有效
- 使用移动端接口修复每日自动签到,移除原有的“登录验证”,参数有效期未知
- Author: BNDou
- Date: 2024-03-15 21:43:06
- LastEditTime: 2025-11-18 03:49:26
- FilePath: \Auto_Check_In\checkIn_Quark.py
- Description:
- 抓包流程:
- 【手机端】
- ①打开抓包,手机端访问抽奖页
- ②找到url为 https://drive-m.quark.cn/1/clouddrive/act/growth/reward 的请求信息
- ③复制整段url,该链接后面必须要有参数: kps sign vcode,粘贴到环境变量
- 环境变量名为 COOKIE_QUARK 多账户用 回车 或 && 分开
- user字段是用户名 (可是随意填写,多账户方便区分)
- 例如: user=张三; url=https://drive-m.quark.cn/1/clouddrive/act/growth/reward?xxxxxx=xxxxxx&kps=abcdefg&sign=hijklmn&vcode=111111111;
- 旧版环境变量格式也兼容,例如: user=张三; kps=abcdefg; sign=hijklmn; vcode=111111111;
- '''
- import os
- import re
- import sys
- import requests
- # 测试用环境变量
- # os.environ['COOKIE_QUARK'] = ''
- # 初始化通知模块
- notify = None
- try:
- # 优先导入第三方notify模块
- from notify import send as notify_send
- notify = notify_send
- print("✅ 成功加载notify通知模块")
- except ImportError:
- try:
- # 兼容旧版utils.notify路径
- from utils.notify import send as utils_notify_send
- notify = utils_notify_send
- print("✅ 成功加载utils.notify通知模块")
- except Exception as err:
- print(f"⚠️ 通知模块加载失败: {err},将仅输出日志不发送通知")
- # 获取环境变量
- def get_env():
- # 判断 COOKIE_QUARK是否存在于环境变量
- if "COOKIE_QUARK" in os.environ:
- # 读取系统变量以 \n 或 && 分割变量
- cookie_list = re.split('\n|&&', os.environ.get('COOKIE_QUARK'))
- else:
- # 标准日志输出
- print('❌未添加COOKIE_QUARK变量')
- if notify:
- notify('夸克自动签到', '❌未添加COOKIE_QUARK变量')
- # 脚本退出
- sys.exit(0)
- return cookie_list
- class Quark:
- '''
- Quark类封装了签到、领取签到奖励的方法
- '''
- def __init__(self, user_data):
- '''
- 初始化方法
- :param user_data: 用户信息,用于后续的请求
- '''
- self.param = user_data
- def convert_bytes(self, b):
- '''
- 将字节转换为 MB GB TB
- :param b: 字节数
- :return: 返回 MB GB TB
- '''
- units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
- i = 0
- while b >= 1024 and i < len(units) - 1:
- b /= 1024
- i += 1
- return f"{b:.2f} {units[i]}"
- def get_growth_info(self):
- '''
- 获取用户当前的签到信息
- :return: 返回一个字典,包含用户当前的签到信息
- '''
- url = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/info"
- querystring = {
- "pr": "ucpro",
- "fr": "android",
- "kps": self.param.get('kps'),
- "sign": self.param.get('sign'),
- "vcode": self.param.get('vcode')
- }
- response = requests.get(url=url, params=querystring).json()
- #print(response)
- if response.get("data"):
- return response["data"]
- else:
- return False
- def get_growth_sign(self):
- '''
- 获取用户当前的签到信息
- :return: 返回一个字典,包含用户当前的签到信息
- '''
- url = "https://drive-m.quark.cn/1/clouddrive/capacity/growth/sign"
- querystring = {
- "pr": "ucpro",
- "fr": "android",
- "kps": self.param.get('kps'),
- "sign": self.param.get('sign'),
- "vcode": self.param.get('vcode')
- }
- data = {"sign_cyclic": True}
- response = requests.post(url=url, json=data, params=querystring).json()
- #print(response)
- if response.get("data"):
- return True, response["data"]["sign_daily_reward"]
- else:
- return False, response["message"]
- def queryBalance(self):
- '''
- 查询抽奖余额
- '''
- url = "https://coral2.quark.cn/currency/v1/queryBalance"
- querystring = {
- "moduleCode": "1f3563d38896438db994f118d4ff53cb",
- "kps": self.param.get('kps'),
- }
- response = requests.get(url=url, params=querystring).json()
- # print(response)
- if response.get("data"):
- return response["data"]["balance"]
- else:
- return response["msg"]
- def do_sign(self):
- '''
- 执行签到任务
- :return: 返回一个字符串,包含签到结果
- '''
- log = ""
- # 每日领空间
- growth_info = self.get_growth_info()
- if growth_info:
- log += (
- f" {'88VIP' if growth_info['88VIP'] else '普通用户'} {self.param.get('user')}\n"
- f"💾 网盘总容量:{self.convert_bytes(growth_info['total_capacity'])},"
- f"签到累计容量:")
- if "sign_reward" in growth_info['cap_composition']:
- log += f"{self.convert_bytes(growth_info['cap_composition']['sign_reward'])}\n"
- else:
- log += "0 MB\n"
- if growth_info["cap_sign"]["sign_daily"]:
- log += (
- f"✅ 签到日志: 今日已签到+{self.convert_bytes(growth_info['cap_sign']['sign_daily_reward'])},"
- f"连签进度({growth_info['cap_sign']['sign_progress']}/{growth_info['cap_sign']['sign_target']})\n"
- )
- else:
- sign, sign_return = self.get_growth_sign()
- if sign:
- log += (
- f"✅ 执行签到: 今日签到+{self.convert_bytes(sign_return)},"
- f"连签进度({growth_info['cap_sign']['sign_progress'] + 1}/{growth_info['cap_sign']['sign_target']})\n"
- )
- else:
- log += f"❌ 签到异常: {sign_return}\n"
- else:
- log += f"❌ 签到异常: 获取成长信息失败\n"
- return log
- def extract_params(url):
- '''
- 从URL中提取所需的参数
- :param url: 包含参数的URL
- :return: 返回一个字典,包含所需的参数
- '''
- # 提取URL中的查询参数部分(?后面的内容)
- query_start = url.find('?')
- query_string = url[query_start + 1:] if query_start != -1 else ''
- # 解析查询参数
- params = {}
- for param in query_string.split('&'):
- if '=' in param:
- key, value = param.split('=', 1)
- params[key] = value
- # 返回所需的参数
- return {
- 'kps': params.get('kps', ''),
- 'sign': params.get('sign', ''),
- 'vcode': params.get('vcode', '')
- }
- def main():
- '''
- 主函数
- :return: 返回一个字符串,包含签到结果
- '''
- msg = ""
- cookie_quark = get_env()
- print("✅ 检测到共", len(cookie_quark), "个夸克账号\n")
- i = 0
- while i < len(cookie_quark):
- # 获取user_data参数
- user_data = {} # 用户信息
- for a in cookie_quark[i].replace(" ", "").split(';'):
- if not a == '':
- user_data.update({a[0:a.index('=')]: a[a.index('=') + 1:]})
-
- # 从url参数中提取额外信息
- if 'url' in user_data:
- url_params = extract_params(user_data['url'])
- user_data.update(url_params)
- # print(user_data)
-
- # 开始任务
- log = f"🙍🏻♂️ 第{i + 1}个账号"
- msg += log
- print(log) # 实时输出日志
- # 执行签到
- sign_log = Quark(user_data).do_sign()
- msg += sign_log + "\n"
- print(sign_log) # 实时输出签到日志
- i += 1
- # 输出完整日志
- print("\n" + "="*50)
- print("📝 签到结果汇总:")
- print(msg)
- print("="*50)
- # 发送通知(如果通知模块加载成功)
- if notify:
- try:
- notify('夸克自动签到', msg)
- print("✅ 通知发送成功")
- except Exception as err:
- print(f"❌ 通知发送失败: {err}")
- else:
- print("⚠️ 未加载到通知模块,跳过发送通知")
- return msg[:-1]
- if __name__ == "__main__":
- print("----------夸克网盘开始签到----------")
- main()
- print("----------夸克网盘签到完毕----------")
複製代碼
|
|