2025年12月27日星期六

即梦签到任务脚本

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

# -*- coding: utf-8 -*-

import osimport timefrom datetime import datetimefrom pathlib import Path
from playwright.sync_api import sync_playwright, TimeoutError as PWTimeoutError

HOME_URL = "https://jimeng.jianying.com/ai-tool/home"
# 登录态目录(保存 Cookie / LocalStorage 等)STATE_DIR = Path(os.getenv("JIMENG_STATE_DIR""./jimeng_state"))STATE_DIR.mkdir(parents=True, exist_ok=True)
# 截图目录SHOT_DIR = Path(os.getenv("JIMENG_SHOT_DIR""./screenshots"))SHOT_DIR.mkdir(parents=True, exist_ok=True)
# 是否无头HEADLESS = os.getenv("JIMENG_HEADLESS""false").strip().lower() in ("1""true""yes""on")
# 首次是否强制等待你手动登录WAIT_LOGIN = os.getenv("JIMENG_WAIT_LOGIN""true").strip().lower() in ("1""true""yes""on")
# 最多尝试找"签到按钮"的次数(有些页面加载慢)MAX_TRY = int(os.getenv("JIMENG_MAX_TRY""5"))

def now_str():    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def save_screenshot(page, name_prefix="jimeng"):    fp = SHOT_DIR / f"{name_prefix}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.png"    page.screenshot(path=str(fp), full_page=True)    return str(fp)

def wait_user_login(page):    """    用于首次登录:给你时间手动完成登录(扫码/手机号等)    脚本通过观察页面上是否出现"头像/个人入口/已登录特征"来判断(尽量通用)    """    print("🔐 请在打开的浏览器里完成登录(扫码/手机号等均可)")    print("   完成后脚本会自动继续(或你也可以直接回车继续尝试)")
    # 这里用"轮询 + 常见登录态特征"判断;如果站点改版,最多就是多等一会    start = time.time()    while time.time() - start < 300:  # 最多等 5 分钟        try:            # 常见:右上角头像、个人中心入口、或者页面出现"资产/画布"等需要登录的功能可用            if page.get_by_text("资产").count() > 0 and page.get_by_text("画布").count() > 0:                # 不代表一定登录,但通常首页导航存在,继续检查头像/用户入口更稳                pass
            # 尝试找"登录/注册"按钮:如果还存在通常代表没登录            if page.get_by_text("登录").count() > 0:                time.sleep(2)                continue
            # 尝试找"退出登录/个人中心"等            if page.get_by_text("退出").count() > 0 or page.get_by_text("个人").count() > 0:                print("✅ 检测到疑似已登录状态")                return True
            # 有些站点头像是按钮/图标,不一定能直接文字识别            # 我们退而求其次:如果页面没出现"登录",也认为可能已登录            if page.get_by_text("登录").count() == 0:                print("✅ 未发现"登录"入口,视为已登录(或已进入登录态页面)")                return True
        except Exception:            pass
        time.sleep(2)
    print("⚠️ 等待登录超时(仍会继续尝试执行签到,但大概率会失败)")    return False

def goto_activity(page):    """    进入"活动"页面:    - 首页顶栏一般有"活动"入口,直接点击    - 如果找不到就尝试滚动/刷新后再找    """    page.goto(HOME_URL, wait_until="domcontentloaded")    page.wait_for_timeout(1500)
    # 多次尝试点击"活动"    for _ in range(3):        try:            if page.get_by_text("活动").first.is_visible():                page.get_by_text("活动").first.click(timeout=3000)                page.wait_for_timeout(2000)                return True        except Exception:            pass        page.reload(wait_until="domcontentloaded")        page.wait_for_timeout(1500)
    return False

def click_checkin(page):    """    核心签到逻辑:在活动页找"签到/每日签到/立即签到/去签到"等按钮并点击    采用"多关键词 + 多轮重试",尽量适配页面文案变化    """    keywords = ["每日签到""立即签到""去签到""签到""领取""领积分""领奖励"]
    for attempt in range(1, MAX_TRY + 1):        print(f"🔎 第 {attempt}/{MAX_TRY} 次尝试查找签到入口...")
        # 尝试滚动触发懒加载        try:            page.mouse.wheel(0900)            page.wait_for_timeout(800)        except Exception:            pass
        # 逐个关键词找按钮/可点击元素        for kw in keywords:            try:                locator = page.get_by_text(kw).first                if locator.count() > 0 and locator.is_visible():                    locator.click(timeout=3000)                    page.wait_for_timeout(2000)                    return Truef"点击到入口:{kw}"            except Exception:                continue
        # 可能需要刷新一下        try:            page.reload(wait_until="domcontentloaded")            page.wait_for_timeout(1500)        except Exception:            pass
    return False"未找到可点击的签到入口(可能未登录/页面改版/活动入口变化)"

def main():    print(f"🚀 即梦每日签到脚本启动:{now_str()}")    print(f"   headless={HEADLESS}  state_dir={STATE_DIR.resolve()}")
    with sync_playwright() as p:        browser = p.chromium.launch(headless=HEADLESS)        context = browser.new_context(            locale="zh-CN",            viewport={"width"1440"height"900},            user_agent=(                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "                "AppleWebKit/537.36 (KHTML, like Gecko) "                "Chrome/122.0.0.0 Safari/537.36"            ),            # 关键:复用登录态            storage_state=None,        )
        # 使用持久化上下文:更稳(包含 cookies + localStorage)        # Playwright 的 persistent context 需要 launch_persistent_context        browser.close()
    with sync_playwright() as p:        context = p.chromium.launch_persistent_context(            user_data_dir=str(STATE_DIR),            headless=HEADLESS,            locale="zh-CN",            viewport={"width"1440"height"900},        )        page = context.new_page()
        try:            page.goto(HOME_URL, wait_until="domcontentloaded")            page.wait_for_timeout(1500)
            # 首次需要人工登录            if WAIT_LOGIN and not HEADLESS:                wait_user_login(page)
            ok = goto_activity(page)            if not ok:                shot = save_screenshot(page, "activity_not_found")                print(f"❌ 未能进入活动页,已截图:{shot}")                return 1
            success, msg = click_checkin(page)            shot = save_screenshot(page, "checkin_result")            if success:                print(f"✅ 签到流程执行完成:{msg}")                print(f"📸 截图:{shot}")                return 0            else:                print(f"❌ 签到失败:{msg}")                print(f"📸 截图:{shot}")                return 2
        except PWTimeoutError as e:            shot = save_screenshot(page, "timeout_error")            print(f"❌ 页面操作超时:{e}")            print(f"📸 截图:{shot}")            return 3        except Exception as e:            shot = save_screenshot(page, "runtime_error")            print(f"❌ 程序异常:{e}")            print(f"📸 截图:{shot}")            return 4        finally:            try:                context.close()            except Exception:                pass

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

该脚本为即梦签到任务脚本,主要作用是:

每天自动进入即梦网站的"活动"页面,找到签到入口并完成点击签到,从而领取每日奖励/积分(如果站点提供)。

同时为了适配"需要登录的网站",它采用了持久化登录态方式:

  • 第一次你手动登录一次

  • 后面脚本就复用本地浏览器的 user_data_dir(保存 cookie/localStorage)来实现自动签到

主要方法

  1. wait_user_login(page)

    • 作用:首次运行时给你时间在浏览器里手动完成登录

    • 逻辑:轮询页面特征(是否还出现"登录"按钮、是否出现个人/退出等特征)判断"疑似已登录"

  2. goto_activity(page)

    • 作用:从首页进入**"活动"页**

    • 逻辑:打开首页 → 查找并点击"活动"入口 → 若找不到则刷新重试

  3. click_checkin(page)

    • 作用:在活动页执行"签到"

    • 逻辑:用多个关键词(每日签到/立即签到/去签到/签到/领取…)循环查找可点击元素;页面慢就滚动、刷新、多轮重试

  4. save_screenshot(page, prefix)

    • 作用:无论成功失败都截图,方便你排查"没找到活动/没找到签到/未登录/页面改版"等问题

  5. main()

    • 作用:整体流程编排

    • 流程:启动浏览器(持久化上下文)→ 首页 →(可选等待手动登录)→ 活动页 → 找签到并点击 → 截图并输出结果码


注意

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


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

没有评论:

发表评论

即梦签到任务脚本

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