2025年11月8日星期六

名创优品任务脚本

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.代码如下

# cron: 20 8 * * *import requestsimport re,timeimport os,sys,jsonfrom notify import senddef pr(message):    msg.append(message + "\n" )    print(message)
msg = []

def get_headers(uid,skey):    return {    'User-Agent'"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/13839",    'Content-Type'"application/json",    'content-longude'"121.5440902709961",    'content-latitude'"31.221139907836914",    'tenant'"MINISO",    'content-uid': uid,    'content-skey': skey,    'Referer'"https://servicewechat.com/wx2a212470bade49bf/982/page-frame.html",    'Accept-Language'"zh-CN,zh;q=0.9"    }def index(uid,skey):    url = "https://api-saas.miniso.com/task-manage-platform/api/activity/signInTask/award/receive"    header = get_headers(uid, skey)    data = {"activityId":"18","taskId":79}
    response = requests.post(url=url,headers=header,data=json.dumps(data))    response.encoding = "utf-8"    info = json.loads(response.text)    if 200 == info['code']:        pr("初始化签到")        time.sleep(3)        index(uid,skey)    elif 500 == info['code']:        pattern = re.compile(r'当前手机号(.*?)今日')        matches = pattern.findall(info['message'])        pr(f"用户名:{matches[0]}")        pr("签到成功")        time.sleep(3)        task_liulan(uid,skey)        time.sleep(3)        wx_info(uid,skey)    else:        pr(info['message'])def sicxs_id(): #任务远程接口    url = "https://api.xxx.cn/i/mcyp.php"    response = requests.get(url=url)    response.encoding = "utf-8"    info = json.loads(response.text)    return info['msg']


def task_liulan(uid,skey):#浏览任务    pr("正在开始浏览任务"    url = "https://api-saas.miniso.com/task-manage-platform/api/activity/task/uvClick"    header = get_headers(uid, skey)    taskId = sicxs_id()    for i in taskId:     data = {"activityId":"18","taskId":i,"taskType":5}     response = requests.post(url=url,headers=header,data=json.dumps(data))     time.sleep(10)     response.encoding = "utf-8"     info = json.loads(response.text)     if 200 == info['code']:
         task_wc(uid,skey,i)         task_lq(uid,skey,i)     else:        pr(info['message']) def task_wc(uid,skey,id):#完成浏览任务    url = "https://api.multibrands.miniso.com/multi-configure-platform/api/activity/task/browse/finish"    header = get_headers(uid, skey)    data = {"activityId":"18","taskId":id}    response = requests.post(url=url,headers=header,data=json.dumps(data))    time.sleep(30)    response.encoding = "utf-8"    info = json.loads(response.text)    if 200 == info['code']:        pr("浏览任务成功"    else:        pr("浏览任务失败")def task_lq(uid,skey,id):#领取奖励    url = "https://api-saas.miniso.com/task-manage-platform/api/activity/periodTask/award/receive"    header = get_headers(uid, skey)    data = {"activityId":"18","taskId":id,"taskType":5}    response = requests.post(url=url,headers=header,data=json.dumps(data))    time.sleep(30)    response.encoding = "utf-8"    info = json.loads(response.text)    if 200 == info['code']:        pr("领取任务奖励成功"    else:        pr(info['message'])    
def wx_info(uid,skey):    url = "https://api-saas.miniso.com/task-manage-platform/api/virtualCoin/member"    header = {        "authority""api-saas.miniso.com",        "method""GET",        "content-latitude""31.221139907836914",        "content-longude""121.49022668457031",        "tenant-code""MINISO",        "x-client-source""MINISO_WX_MINI",        "user-agent""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) XWEB/8555",        "tenant""MINISO",        "content-uid": uid,        "content-type""application/json",        "content-skey": skey,        "referer""https://servicewechat.com/wx2a212470bade49bf/924/page-frame.html",        }    response = requests.get(url=url,headers=header)    response.encoding = "utf-8"    info = json.loads(response.text)    pr(f"当前mini币:{info['data']['quantity']}")

def sicxs():    config_path = 'config.py'    if os.path.exists(config_path):      import config      else:      with open(config_path, 'w'as f:         pr("首次运行,已创建配置文件 config.py,请按照说明填写相关变量后再次运行脚本。")        f.write('#可以在此文件中添加配置变量,例如:\nsfsy = ""\n')    try:        env_cookie = os.environ.get("wx_mcyp")        si_cookie = getattr(config, 'wx_mcyp'''        if env_cookie and si_cookie:            cookies = env_cookie + "\n" + si_cookie        elif env_cookie:            cookies = env_cookie        elif si_cookie:            cookies = si_cookie        else:            pr("请设置变量 export wx_mcyp='' 或在 config.py 中设置 wx_mcyp =")            sys.exit()    except Exception as e:        pr("请设置变量 export wx_mcyp='' 或在 config.py 中设置 wx_mcyp =")        sys.exit()
    list_cookie = [c for c in re.split(r'\n|&', cookies) if c.strip()]    total_cookies = len(list_cookie)    for i, list_cookie_i in enumerate(list_cookie):        try:            print(f'\n----------- 账号【{i + 1}/{total_cookies}】执行 -----------')            pr(f"账号【{i + 1}】开始执行:")            list = list_cookie_i.split("#")            index(list[0], list[1])        except Exception as e:            pr(f"账号【{i + 1}/{total_cookies}】执行出错")        finally:            send("名创优品小程序"''.join(msg))            msg.clear()        
    print(f'\n-----------  执 行  结 束 -----------')
if __name__ == '__main__': sicxs()
解析

该脚本为名创优品自动签到脚本。

主要作用

  • 名创优品小程序自动化:完成每日签到,串行执行浏览任务 → 任务完成上报 → 领取奖励,最后查询并回显mini币余额,并通过 notify.send("名创优品小程序", …) 推送结果。

  • 多账号支持:从环境变量或 config.py 读取 wx_mcyp,多账号用换行或 & 分隔,每个账号是 uid#skey。逐个账号执行并分别通知。

  • 定时运行:示例 cron 20 8 * * *(每日 08:20)。脚本内已包含必要的等待(10s/30s)以配合任务时长判定。

主要方法

  • pr(message):统一日志累积到全局 msg单账号执行完再一次性推送,随后清空,便于多账号循环复用。

  • get_headers(uid, skey):构造公共请求头(UA、经纬度、tenantcontent-uid/skey 等),供任务接口复用,确保鉴权字段一致

  • index(uid, skey):入口。请求 signInTask/award/receive 触发签到:

    • code == 200:视为初始化(服务端预热),打印"初始化签到",随后再次调用 index 执行真正签到流程(注意:这是递归式二次触发)。

    • code == 500:解析返回文案中的手机号(正则),视为已成功签到;之后依次调用 task_liulan → wx_info

    • 其他:直接打印 message 作为错误提示。

  • sicxs_id():从远端 https://api.xxx.cn/i/mcyp.php 拉取浏览任务 taskId 列表(返回 msg 字段)。用于避免把 taskId 写死在仓库。

  • task_liulan(uid, skey):逐个任务 POST /task/uvClick 触发UV 点击,等待约 10s,再进入:

    • task_wc(uid, skey, id)/task/browse/finish 上报浏览完成(等待约 30s 确保达标);成功打印"浏览任务成功"。

    • task_lq(uid, skey, id)/periodTask/award/receive领取奖励(再等 30s);成功打印"领取任务奖励成功"。

  • wx_info(uid, skey):查询 virtualCoin/member,输出当前 mini 币余额(注意脚本注释:mini 币90 天有效)。

  • sicxs()配置读取 + 多账号调度。合并环境变量与 config.py,切分账号后循环:index → 通知 → 清空日志;最后打印"执行结束"。

  1. 递归风控(重要)
    index 中 code == 200 会再次调用 index。建议加最多 1 次的初始化重试标记(如参数 init=False/True 或全局标记),避免异常情况下无限递归/循环

  2. 超时与重试

    • 给所有 requests 补 timeout=10;对初始化签到领取奖励接口做最多 2–3 次指数退避(2s→4s→8s)重试。

    • 远端 sicxs_id 失败时,打印"任务清单获取失败"并跳过浏览流程但仍执行 wx_info,不让整次任务中断。

  3. 健壮解析

    • index 里 500 分支解析手机号使用正则,建议判空后再 pr,否则解析失败会抛异常。

    • 所有 json.loads 前先判断 response.headers.get('Content-Type') 是否含 json;否则打印响应摘要(截断)并跳过。

  4. 接口一致性

    • task_wc 使用的域名是 api.multibrands.miniso.com,其余多为 api-saas.miniso.com。这是常见的多域网关设计,但若出现 403/跨域限流,建议在日志中明确打印具体域名与 status_code,以便复盘。

  5. 等待时长与并发

    • 你已设置 10s / 30s 等待,基本满足"浏览计时"与"奖励结算"。如 IDs 较多可增加随机抖动(±2–5s)以降低同 IP 同步触发的风控概率。

    • 保持串行(当前做法正确),不要对任务做并发。

  6. 鉴权与位置

    • 头里有固定经纬度(上海系示例)。若官方对地理位置敏感,建议改为可配置(环境变量),避免长期同坐标被判为异常。

  7. 过期提示

    • mini 币 90 天有效,可在 wx_info 输出余额时同时提示"有效期 90 天",或在余额>0 时追加"请在有效期内使用"。

  8. 错误分级日志

    • 对 code ≠ 200 的场景,建议按模块打印:[签到失败] message=...[浏览失败] taskId=... code=...,便于快速定位是哪一步失败。

常见异常与定位

  • code == 403/401:常为 uid/skey 失效或请求头不全,核对 content-uid/skey/tenant 是否随账号变化正确填充。

  • 领取奖励失败:多为浏览完成未达条件或等待不足,延长 task_wc 前后的等待(如 30→40s)。

  • sicxs_id 无返回:远端接口临时不可用,建议脚本打印"使用空任务清单,跳过浏览流程"。

运行与多账号格式

  • 环境变量export wx_mcyp="uid1#skey1\nuid2#skey2"(换行或 & 均可)。

  • cron20 8 * * *(系统时区为准)。

  • 通知:每个账号结束单独推送一次,便于分账号查看成功/失败。


注意

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


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

没有评论:

发表评论

还得是小红书!这个不露脸、高利润的玩法,粉丝不过百照样开单!

      发现一个牛批的玩法。 不露脸、不拍视频,一部手机,靠卖 虚拟资料 ,日入2K+! 新手两周内出单 , 甚至都不需要跟客户聊天,自动成交。 📍  "小红书虚拟资料"是什么? 简单来说,就是 在小红书上,通过开店或引流的方式,卖各种考试资料、学习...