2025年12月20日星期六

喵御宅任务脚本

1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/Bg6shY若失效,可用地址

1.购买服务器

阿里云:

服务器购买地址

https://t.aliyun.com/U/Bg6shY

若失效,可用地址

https://www.aliyun.com/daily-act/ecs/activity_selection?source=5176.29345612&userCode=49hts92d

腾讯云:

https://curl.qcloud.com/wJpWmSfU

若失效,可用地址

https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console

华为云

https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

3.代码如下

#!/usr/bin/env python3# -*- coding: utf-8 -*-
import osimport sysimport requestsimport jsonimport timeimport refrom datetime import datetime
def get_env_variable(var_name):    """从环境变量获取配置"""    value = os.environ.get(var_name)    if not value:        print(f"❌ 错误: 环境变量 {var_name} 未设置")        sys.exit(1)    return value
def validate_token(token):    """验证token格式和有效性"""
    # 检查token是否存在    if not token or token.strip() == "":        return {            "valid"False,            "message""❌ Token为空或未设置",            "error_type""empty"        }
    # 检查token长度(基本格式验证)    if len(token) < 10:        return {            "valid"False,            "message""❌ Token格式异常,长度过短",            "error_type""format"        }

def test_token_validity(token):    """测试token是否有效(通过检查API响应内容)"""
    # 使用一个简单的API端点来测试token有效性    test_url = "https://mfuns.net/v1/history/get" #仅用来测试是否为正确凭证,不会对数据做处理
    headers = {        "Authorization": token,        "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0",        "Origin""https://www.mfuns.net",        "Referer""https://www.mfuns.net"    }
    try:        response = requests.get(test_url, headers=headers, timeout=10)
        # 检查响应内容,而不是仅仅检查状态码        if response.status_code == 200:            try:                data = response.json()                # 检查响应中的code字段                if "code" in data:                    if data["code"] == 401:                        return {                            "valid"False,                            "message""❌ Token已过期或无效",                            "status""expired"                        }                    elif data["code"] == 1:                        return {                            "valid"True,                            "message""✅ Token有效性测试通过",                            "status""active"                        }                # 如果没有code字段,但响应成功,也认为是有效的                return {                    "valid"True,                    "message""✅ Token有效性测试通过",                    "status""active"                }            except json.JSONDecodeError:                # 如果无法解析JSON,但状态码是200,认为是有效的                return {                    "valid"True,                    "message""✅ Token有效性测试通过",                    "status""active"                }        else:            return {                "valid"False,                "message"f"❌ Token测试失败,HTTP状态码: {response.status_code}",                "status""unknown"            }
    except requests.exceptions.RequestException as e:        return {            "valid"False,            "message"f"❌ Token测试网络错误: {str(e)}",            "status""network_error"        }
def sign_in(cookie, retry_count=1):    """执行签到操作,支持重试"""
    # API配置    url = "https://mfuns.net/v1/sign/sign"  # 签到api端口
    # 请求头    headers = {        "Authorization": cookie,        "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0",        "Origin""https://www.mfuns.net",        "Referer""https://www.mfuns.net",        "sec-fetch-mode""cors"    }
    for attempt in range(retry_count + 1):        try:            # 发送签到请求            response = requests.get(url, headers=headers, timeout=30)
            # 检查响应状态            if response.status_code != 200:                if attempt < retry_count:                    print(f"⚠️ 第{attempt + 1}次签到失败,HTTP错误: {response.status_code}{3}秒后重试...")                    time.sleep(3)                    continue                return {                    "success"False,                    "message"f"HTTP错误: {response.status_code}",                    "data"None,                    "attempts": attempt + 1                }
            # 解析响应数据            result = response.json()
            # 根据API文档,code为1表示成功,0表示已签到            if result.get("code") == 1:                return {                    "success"True,                    "message": result.get("msg""签到成功"),                    "data": result,                    "attempts": attempt + 1                }            elif result.get("code") == 0:                return {                    "success"True,                    "message": result.get("msg""今日已签到"),                    "data": result,                    "attempts": attempt + 1                }            else:                if attempt < retry_count:                    print(f"⚠️ 第{attempt + 1}次签到失败: {result.get('msg''未知错误')}{3}秒后重试...")                    time.sleep(3)                    continue                return {                    "success"False,                    "message"f"签到失败: {result.get('msg''未知错误')}",                    "data": result,                    "attempts": attempt + 1                }
        except requests.exceptions.RequestException as e:            if attempt < retry_count:                print(f"⚠️ 第{attempt + 1}次网络请求失败: {str(e)}{3}秒后重试...")                time.sleep(3)                continue            return {                "success"False,                "message"f"网络请求失败: {str(e)}",                "data"None,                "attempts": attempt + 1            }        except json.JSONDecodeError as e:            if attempt < retry_count:                print(f"⚠️ 第{attempt + 1}次响应数据解析失败: {str(e)}{3}秒后重试...")                time.sleep(3)                continue            return {                "success"False,                "message"f"响应数据解析失败: {str(e)}",                "data"None,                "attempts": attempt + 1            }
    # 理论上不会执行到这里,但为了完整性    return {        "success"False,        "message""签到失败: 重试次数已用完",        "data"None,        "attempts": retry_count + 1    }
def main():    """主函数"""
    # 配置重试次数    MAX_RETRY_COUNT = 1  # 最大重试次数
    # 获取当前时间    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")    print(f"🕐 开始执行签到任务 - {current_time}")    print(f"📋 配置: 最大重试次数 {MAX_RETRY_COUNT}")    print("=" * 50)
    # 获取Cookie    cookie = get_env_variable("NEKO_MFUNS_COOKIE")    print("✅ 成功获取Cookie")
    # Token有效性测试    print("🔍 正在测试Token有效性...")    validity_test = test_token_validity(cookie)    print(validity_test["message"])
    if not validity_test["valid"]:        print("❌ Token有效性测试失败,停止执行")        sys.exit(1)
    # 执行签到(带重试)    print(f"🔄 正在执行签到(最多重试{MAX_RETRY_COUNT}次)...")    result = sign_in(cookie, retry_count=MAX_RETRY_COUNT)
    # 输出结果    print("=" * 50)    if result["success"]:        print(f"✅ {result['message']}")        if result["attempts"] > 1:            print(f"📊 重试次数: {result['attempts'] - 1}")        if result["data"]:            print(f"📊 响应数据: {json.dumps(result['data'], ensure_ascii=False, indent=2)}")    else:        print(f"❌ {result['message']}")        print(f"📊 尝试次数: {result['attempts']}")        if result["data"]:            print(f"📊 响应数据: {json.dumps(result['data'], ensure_ascii=False, indent=2)}")
    print("=" * 50)    print("🎯 签到任务执行完成")
    # 根据结果返回适当的退出码    sys.exit(0 if result["success"else 1)
if __name__ == "__main__":    main()
解析

这是一个喵御宅(MFUNS)自动签到脚本,主要用于青龙面板/定时任务运行。整体流程是:

  1. 从环境变量读取 NEKO_MFUNS_COOKIE(实际上是 Authorization Token)

  2. 先调用一个"不会改数据"的接口 /v1/history/get 来 验证 Token 是否有效

  3. Token 有效则调用 /v1/sign/sign 执行签到(失败会按配置重试)

  4. 打印签到结果、重试次数、并以退出码表示成功/失败(成功 0,失败 1)

主要方法

1) get_env_variable(var_name)

读取环境变量

  • 取不到就打印错误并 sys.exit(1) 直接退出

  • 用于强制保证脚本必须配置存在(这里是 NEKO_MFUNS_COOKIE

2) validate_token(token)

Token 格式基础校验(但当前实现不完整)

  • 已写了两种失败情况的返回:

    • Token 为空

    • Token 长度过短

  • 但函数后面没有 return(也没在主流程里调用),所以目前 对脚本运行没有实际影响,属于"预留/未完成函数"。

3) test_token_validity(token)

Token 有效性测试(核心前置检查)

  • 请求:GET https://mfuns.net/v1/history/get

  • Header 用 Authorization: token 模拟登录态

  • 逻辑判断:

    • HTTP 200 且 JSON 中 code == 1 → 认为 token 有效

    • JSON 中 code == 401 → 认为 token 过期/无效

    • 能 200 但 JSON 解析失败 → 也视为有效(偏宽松)

    • 其他状态码/网络异常 → 视为无效,并返回原因

4) sign_in(cookie, retry_count=1)

执行签到(支持重试)

  • 请求:GET https://mfuns.net/v1/sign/sign

  • 按 retry_count 控制最多重试次数(默认 1 次重试,也就是最多请求 2 次)

  • 结果判断(按返回 JSON 的 code):

    • code == 1 → 签到成功

    • code == 0 → 今日已签到(仍算成功)

    • 其他 code → 失败,可重试

  • 同时捕获:

    • 网络异常(RequestException)

    • JSON 解析异常(JSONDecodeError)

  • 返回一个结构化结果:success/message/data/attempts

5) main()

主流程编排

  • 打印开始时间、重试配置

  • 读取 NEKO_MFUNS_COOKIE

  • 调用 test_token_validity():无效就退出码 1

  • 调用 sign_in():打印结果与响应 JSON(格式化输出)

  • 最终根据签到是否成功 sys.exit(0 or 1)



注意

本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。


历史脚本txt文件获取>>
服务器搭建,人工服务咨询>>

没有评论:

发表评论

AI内容矩阵获客实战:提升5倍效率,解决团队内容生产瓶颈

本文探讨如何利用AI工具解决矩阵获客中的内容生产效率瓶颈,实现单人日产出数百条视频内容。适用于正在操作矩阵获客、面临内容产能不足的团队或个人。核心方法包括建立知识库与选题库,通过AI自动化生产图文、视频素材,从而大幅提升人效与竞争力。文章源自嗨推第11期内容获客集训分享。 Tag...