由吾爱大神本脚本可自动为夸克网盘账号执行每日签到任务,获取额外存储空间,支持多账号签到,并内置 Server酱推送通知结果到微信。适合懒人挂机、定时任务、云函数、青龙等场景使用。
功能简介:
支持多账号签到(通过 COOKIE 环境变量配置)
支持签到前状态查询、未签自动补签
查询网盘总容量、签到容量、连签进度
支持 Server酱一键推送签到结果到微信
出错信息、接口异常均会捕获并提示
使用方法:
抓取签到参数,手机打开抓包工具(如 HttpCanary、Stream、Reqable等)
1.打开夸克APP → 进入签到页
2.查找 https://drive-m.quark.cn/1/clouddrive/capacity/growth/info 的请求
3.提取请求中的以下参数:kps=xxxx;sign=xxxx;vcode=xxxx
4.修改代码内的 os.environ['COOKIE'] = ... 替换为你的参数
5.运行脚本即可
6.多个账号使用$进行分割
代码如下:
import os
import re
import sys
import requests
# 配置变量
os.environ['COOKIE'] = '...'
# 添加 Server酱 推送函数
def send_to_server(title, desp):
server_key = "Server酱KEY"
url = f"https://sctapi.ftqq.com/{server_key}.send"
data = {
"title": title,
"desp": desp
}
try:
response = requests.post(url, data=data)
if response.status_code == 200:
print("Server酱推送成功")
else:
print(f"Server酱推送失败:{response.text}")
except Exception as e:
print(f"Server酱推送异常:{str(e)}")
def get_env():
# 判断 COOKIE是否存在于环境变量
if "COOKIE" in os.environ:
# 读取系统变量以$分割变量
cookie_list = os.environ.get('COOKIE').split('$')
else:
error_msg = '❌未添加COOKIE变量'
print(error_msg)
send_to_server('夸克自动签到', error_msg)
sys.exit(0)
return cookie_list
class Quark:
def __init__(self, user_data):
self.param = user_data
def convert_bytes(self, b):
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):
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()
if response.get("data"):
return response["data"]
else:
return False
def get_growth_sign(self):
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()
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()
if response.get("data"):
return response["data"]["balance"]
else:
return response["msg"]
def do_sign(self):
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 main():
msg = ""
global cookie_quark
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:]})
log = f"🙍🏻♂️ 第{i + 1}个账号"
msg += log
# 登录
log = Quark(user_data).do_sign()
msg += log + "\n"
i += 1
# 打印结果并发送通知
print(msg)
send_to_server('夸克自动签到', msg)
return msg[:-1]
if __name__ == "__main__":
print("----------夸克网盘开始签到----------")
main()
print("----------夸克网盘签到完毕----------")