2025年12月25日星期四

京东每日签到领京豆任务脚本

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

1.购买服务器

阿里云:

服务器购买地址

https://t.aliyun.com/U/55RK8C

若失效,可用地址

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 -*-
"""京东每日签到领京豆(多账号)依赖:pip install requests用法:  export JD_COOKIE='pt_key=xxx;pt_pin=xxx;&pt_key=yyy;pt_pin=yyy;'  python jd_daily_sign.py"""
import osimport jsonimport timeimport randomimport refrom typing import DictAnyListTupleOptional
import requests

JD_SIGN_URL = "https://api.m.jd.com/client.action"JD_USERINFO_URL = "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion"

def load_cookies_from_env(env_name: str = "JD_COOKIE") -> List[str]:    """从环境变量读取 Cookie,支持 & 或换行分隔。"""    raw = os.getenv(env_name, "").strip()    if not raw:        return []    # 兼容多种分隔    if "\n" in raw:        parts = [x.strip() for x in raw.splitlines() if x.strip()]    else:        parts = [x.strip() for x in raw.split("&"if x.strip()]    return parts

def parse_jsonp(text: str) -> Dict[strAny]:    """解析 JSONP / JSON 响应为 dict。"""    text = text.strip()    if not text:        return {}    # JSONP: callback({...})    if "(" in text and text.endswith(")"):        start = text.find("(") + 1        end = text.rfind(")")        payload = text[start:end].strip()        return json.loads(payload) if payload else {}    # JSON    return json.loads(text)

def cookie_to_pin(cookie: str) -> str:    """从 Cookie 中提取 pt_pin(用于展示账号标识)。"""    m = re.search(r"pt_pin=([^;]+)", cookie)    return m.group(1if m else "UNKNOWN"

def build_headers(cookie: str) -> Dict[strstr]:    """构造更接近移动端的请求头。"""    ua_pool = [        "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",        "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",    ]    return {        "User-Agent": random.choice(ua_pool),        "Accept""application/json, text/plain, */*",        "Content-Type""application/x-www-form-urlencoded; charset=UTF-8",        "Cookie": cookie,        "Referer""https://h5.m.jd.com/",        "Origin""https://h5.m.jd.com",    }

def get_user_info(session: requests.Session, cookie: str) -> str:    """获取京东账号昵称(可选,仅用于展示)。"""    try:        resp = session.get(JD_USERINFO_URL, headers=build_headers(cookie), timeout=15)        data = resp.json()        # 不同返回结构可能不一样,做兼容        if isinstance(data, dict):            user = (data.get("data"or {}).get("userInfo"or {}            nickname = user.get("baseInfo", {}).get("nickname"or user.get("baseInfo", {}).get("curPin")            if nickname:                return str(nickname)    except Exception:        pass    return cookie_to_pin(cookie)

def jd_sign_bean(session: requests.Session, cookie: str) -> Tuple[boolstrint]:    """    京豆签到(signBeanAct)    返回:success, message, beans    """    callback = f"jsonp_{int(time.time() * 1000)}_{random.randint(1000099999)}"    params = {        "functionId""signBeanAct",        "appid""ld",        "client""apple",        "clientVersion""10.0.4",        "networkType""wifi",        "osVersion""16.6",        "jsonp": callback,        "body": json.dumps({}, separators=(","":")),    }
    resp = session.get(JD_SIGN_URL, params=params, headers=build_headers(cookie), timeout=20)    data = parse_jsonp(resp.text)
    # 常见结构:code + msg + data.dailyAward.beanAward.beanCount    code = str(data.get("code"""))    msg = str(data.get("msg""")) or str(data.get("message"""))
    # 成功    if code == "0":        beans = 0        try:            daily_award = (data.get("data"or {}).get("dailyAward"or {}            bean_award = daily_award.get("beanAward"or {}            beans = int(bean_award.get("beanCount"or 0)        except Exception:            beans = 0        return True, (msg or "签到成功"), beans
    # 已签到(不同地区/版本可能文案不同)    text = json.dumps(data, ensure_ascii=False)    if "已签到" in text or "already" in text.lower():        return True"今日已签到"0
    # Cookie 失效常见:code=3 或提示缺少 pt_key/登录态    if code in {"3""13"or "pt_key" in text or "登录" in text:        return False"Cookie疑似失效/未登录(请更新 JD_COOKIE)"0
    return Falsef"签到失败:code={code} msg={msg}".strip(), 0

def main():    cookies = load_cookies_from_env("JD_COOKIE")    if not cookies:        print("❌ 未检测到环境变量 JD_COOKIE")        print("💡 示例:export JD_COOKIE='pt_key=xxx;pt_pin=xxx;&pt_key=yyy;pt_pin=yyy;'")        return
    print(f"✅ 检测到 {len(cookies)} 个账号,开始执行京豆签到...\n")
    session = requests.Session()    results = []    total_beans = 0
    for idx, ck in enumerate(cookies, 1):        # 账号间随机等待,降低触发频控概率        if idx > 1:            time.sleep(random.uniform(25))
        nickname = get_user_info(session, ck)        ok, message, beans = jd_sign_bean(session, ck)
        total_beans += beans        results.append((idx, nickname, "成功" if ok else "失败", beans, message))
        print(f"[{idx}{nickname} -> {'✅' if ok else '❌'} {message}(京豆 +{beans})")
    print("\n================= 汇总 =================")    for idx, nickname, status, beans, message in results:        print(f"{idx}{nickname} | {status} | +{beans} | {message}")    print("----------------------------------------")    print(f"🎯 账号数:{len(results)}")    print(f"🎁 今日累计京豆:{total_beans}")    print("========================================")

if __name__ == "__main__":    main()
解析

该脚本为京东每日签到领京豆任务脚本,主要作用包括:

  1. 从环境变量 JD_COOKIE 读取单账号/多账号 Cookie

  2. 对每个账号调用京东"京豆签到接口",完成每日签到领京豆

  3. 输出每个账号的执行结果,并在最后给出汇总统计

主要方法

  • load_cookies_from_env()
    从环境变量读取 Cookie,支持 & 或换行分隔,返回账号 Cookie 列表。

  • parse_jsonp()
    京东部分接口会返回 JSONP(callback(...)),这个方法把 JSONP/JSON 统一解析为字典。

  • build_headers()
    生成请求头(包含 Cookie、UA 等),并做简单 UA 轮换,提升请求稳定性。

  • get_user_info()
    调用用户信息接口,尽量拿到昵称用于日志展示;失败则退化为 pt_pin

  • jd_sign_bean()
    核心签到逻辑:请求 signBeanAct 接口并解析返回,判断

    • 是否成功

    • 是否已签到

    • 是否 Cookie 失效
      同时尝试提取本次获得的京豆数量。

  • main()
    主流程:按账号逐个执行签到、控制随机等待、打印结果并汇总。


注意

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


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

没有评论:

发表评论

Topcashback一个推荐又恢复到50刀了

点击上方蓝字关注我吧我前几天分享过几个比较大的返利网的会员推荐项目,我自己也在测试,Topcashback注册 点击上方 蓝字 关注我吧 我前几天分享过几个比较大的返利网的会员推荐项目,我自己也在测试, Topcashback注册量不多,但是给的推荐奖励比较多,之前是40刀。...