2025年10月9日星期四

鲲鹏学苑自动刷任务脚本

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

1.购买服务器

阿里云:

服务器购买地址

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

若失效,可用地址

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

from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timeimport random
# --- 配置部分 ---LOGIN_URL = "https://kunpeng.askpcb.com/login.html"  # 替换为你的实际登录页URLVIDEO_URL = "https://kunpeng.askpcb.com/kng/#/course/play?kngId=0040e5d6-5f0e-405d-8fb3-d2233eceb3d0&projectId=&btid=&gwnlUrl=&locateshare=94d6a796-d46a-4c28-a12d-3287c5c2d283" # 替换为你想看的视频页面URLCHROMEDRIVER_PATH = "E:\chromedriver-win64\chromedriver.exe" # 如果没加到PATH,需要指定驱动路径WATCH_TIME_SECONDS = 300  # 计划观看时长(秒)# ---------------
# ---------------service = Service(executable_path=CHROMEDRIVER_PATH)driver = webdriver.Chrome(service=service)
try:    # 1️⃣ 打开登录页    driver.get(LOGIN_URL)    print("\n" + "="*50)    print("   🛑 请在打开的浏览器中手动登录")    print("   ⏳ 正在自动检测登录状态...")    print("="*50 + "\n")
    # 自动检测登录状态,出现首页按钮即认为已登录    login_success = False    for i in range(60):  # 最多等待60秒        try:            # 检查页面是否出现"首页"按钮            driver.find_element(By.XPATH, '//a[@href="/main/#/index" and contains(text(), "首页")]')            login_success = True            print("🚀 检测到首页按钮,已登录,脚本继续执行...")            break        except:            time.sleep(1)    if not login_success:        print("❌ 未检测到登录成功(未找到首页按钮),请检查账号或网络!")        driver.quit()        exit(1)
    # 2️⃣ 登录成功后,跳转到视频页面    driver.get(VIDEO_URL)    print("🎬 视频页面已加载")    time.sleep(5)
    # 3️⃣ 尝试播放视频(原有逻辑)    # ✅ 确保视频在播放    try:            # 方法1:通过内部 span 文字定位            try:                play_button = WebDriverWait(driver, 10).until(                    EC.element_to_be_clickable((By.XPATH, '//button[.//span[text()="开始学习"]]'))                )                play_button.click()                print("▶️ 已点击'开始学习'按钮")            except:                # 如果找不到"开始学习"按钮,尝试找"继续学习"按钮                continue_button = WebDriverWait(driver, 10).until(                    EC.element_to_be_clickable((By.XPATH, '//button[.//span[text()="继续学习"]]'))                )                continue_button.click()                print("▶️ 已点击'继续学习'按钮")    except Exception as e:            print(f"⚠️ 未找到或无法点击播放按钮: {e}")
        # 4️⃣ 保持观看...(无限时长,持续保持页面活动)    print("⏳ 已进入视频页面,自动保持活动,无时间限制。按 Ctrl+C 退出。")    while True:        driver.execute_script("window.scrollBy(0, 1);")        time.sleep(random.randint(1030))
except Exception as e:        print(f"❌ 发生错误: {e}")
finally:        driver.quit()        print("👋 浏览器已关闭")
    # # ⚠️ 备选方案:直接点击隐藏的 checkbox input(不推荐,可能被遮挡)    # try:    #     agree_element = WebDriverWait(driver, 10).until(    #         EC.presence_of_element_located((By.XPATH, '//label[@class="yxt-checkbox core-custom-checkbox"]//span[contains(text(), "已阅读并同意")]'))    #     )    #     # 使用 JavaScript 点击(绕过 Selenium 原生点击限制)    #     driver.execute_script("arguments[0].click();", agree_element)    #     print("✅ 已通过 JS 点击同意隐私政策")    # except Exception as e:    #     print(f"⚠️ JS点击同意条款失败: {e}")    #     driver.save_screenshot("js_click_error.png")  # 截图留证
    # # 2️⃣ 定位用户名输入框 —— 使用 placeholder 或 class 定位(因为 name="username" 有歧义)    # username_field = WebDriverWait(driver, 10).until(    #     EC.presence_of_element_located((By.XPATH, '//input[@placeholder="请输入员工邮箱/账号"]'))    # )    # username_field.clear()    # username_field.send_keys(USERNAME)    # print("✅ 已输入用户名")
    # # 3️⃣ 定位密码输入框 —— 使用 type="password" + class 定位    # password_field = WebDriverWait(driver, 10).until(    #     EC.presence_of_element_located((By.XPATH, '//input[@type="password" and @class="yxtf-input__inner yxtf-input__inner--border"]'))    # )    # password_field.clear()    # password_field.send_keys(PASSWORD)    # print("✅ 已输入密码")
    # # ✅ 终极方案:手动派发 mousedown -> mouseup -> click 事件    # try:    #     login_button = WebDriverWait(driver, 10).until(    #         EC.presence_of_element_located((By.XPATH, '//button[span/span[text()="登 录"]]'))    #     )
    #     # 滚动到按钮    #     driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", login_button)    #     time.sleep(1)
    #     # 手动派发三个事件(模拟真实点击)    #     driver.execute_script("""    #         var btn = arguments[0];    #         // 模拟鼠标按下的事件    #         var evt1 = new MouseEvent('mousedown', {    #             bubbles: true,    #             cancelable: true,    #             view: window,    #             clientX: btn.getBoundingClientRect().left + btn.offsetWidth / 2,    #             clientY: btn.getBoundingClientRect().top + btn.offsetHeight / 2    #         });    #         btn.dispatchEvent(evt1);
    #         // 模拟鼠标抬起的事件    #         var evt2 = new MouseEvent('mouseup', {    #             bubbles: true,    #             cancelable: true,    #             view: window,    #             clientX: btn.getBoundingClientRect().left + btn.offsetWidth / 2,    #             clientY: btn.getBoundingClientRect().top + btn.offsetHeight / 2    #         });    #         btn.dispatchEvent(evt2);
    #         // 模拟点击事件(通常由 mousedown+mouseup 触发)    #         var evt3 = new MouseEvent('click', {    #             bubbles: true,    #             cancelable: true,    #             view: window,    #             clientX: btn.getBoundingClientRect().left + btn.offsetWidth / 2,    #             clientY: btn.getBoundingClientRect().top + btn.offsetHeight / 2    #         });    #         btn.dispatchEvent(evt3);    #     """, login_button)
    #     print("✅ 已模拟完整鼠标事件点击登录按钮")    # except Exception as e:    #     print(f"❌ 模拟鼠标事件失败: {e}")    #     driver.save_screenshot("mouse_events_fail.png")    #     raise
#     # 5️⃣ 等待登录跳转完成(比如URL变化或出现某个元素)#     try:#         home_link = WebDriverWait(driver, 20).until(#             EC.presence_of_element_located((By.XPATH, '//a[@href="/main/#/index" and contains(text(), "首页")]'))#         )#         print("✅ 登录成功!检测到'首页'链接")#     except Exception as e:#         print(f"❌ 登录失败:未检测到'首页'元素,可能账号密码错误或网络问题")#         driver.save_screenshot("login_failed_no_home.png")#         raise  # 停止脚本,方便调试
#     # 6️⃣ 跳转到视频页面#     driver.get(VIDEO_URL)#     print("🎬 视频页面已加载")#     time.sleep(5)
#     # 7️⃣ 尝试播放视频(原有逻辑,根据你视频页元素修改)#     try:#         play_button = driver.find_element(By.XPATH, '//button[contains(text(), "播放")]')  # 示例,需根据实际修改#         play_button.click()#         print("▶️ 播放按钮已点击")#     except Exception as e:#         print(f"⚠️ 未找到播放按钮: {e}")
#     # 8️⃣ 保持观看...#     WATCH_TIME_SECONDS = 300#     print(f"⏳ 开始观看视频,计划时长 {WATCH_TIME_SECONDS} 秒...")#     start_time = time.time()#     while time.time() - start_time < WATCH_TIME_SECONDS:#         driver.execute_script("window.scrollBy(0, 1);")#         time.sleep(random.randint(10, 30))#         print(f"⏱️ 已观看 {int(time.time() - start_time)} 秒")
解析

该脚本为鲲鹏学苑自动刷视频任务脚本,主要作用包括:

  1. 手动完成一次登录(脚本负责检测是否已登录);

  2. 自动跳转到指定课程视频页面

  3. 尝试点击"开始学习/继续学习"进入播放;

  4. 通过定时轻微滚动页面,保持页面活跃以防止暂停或超时;

  5. 无限时长方式持续"观看"(需要你 Ctrl+C 结束)。

主要方法

  • Selenium 初始化

    • Service(executable_path=CHROMEDRIVER_PATH) + webdriver.Chrome(service=service)
      启动 ChromeDriver 与浏览器实例。

  • 登录流程(人工登录 + 自动检测)

    • driver.get(LOGIN_URL) 打开登录页;

    • 循环 60 次每秒检查一次:是否出现 //a[@href="/main/#/index" and contains(text(), "首页")]
      若匹配到"首页"链接,则判定登录成功,继续后续流程;否则 60 秒后退出。

    • 用意:你在打开的浏览器里手动输入账号验证码,脚本只负责检测登录状态

  • 进入视频页并尝试播放

    • //button[.//span[text()="开始学习"]]

    • //button[.//span[text()="继续学习"]]

    • driver.get(VIDEO_URL) 跳转到指定视频页;

    • 使用 WebDriverWait(...).until(EC.element_to_be_clickable(...))
      依次尝试点击:

    • 用意:兼容首次学习和继续学习两种按钮文案,确保进入播放状态。

  • 保持活跃(防止超时/暂停)

    • 进入无限循环

      driver.execute_script("window.scrollBy(0, 1);")
      time.sleep(random.randint(10, 30))

      每 10–30 秒做一次 1px 的轻微滚动,模拟用户活动。
      用意:防"长时间未操作"的弹窗或被动暂停;没有固定观看时长,需要手动 Ctrl+C终止。

  • 异常处理与退出

    • 外层 try/except/finally:发生异常时打印错误;

    • finally 中 driver.quit() 确保关闭浏览器与驱动。

备注

  • 脚本顶部的 WATCH_TIME_SECONDS = 300并未实际使用(当前实现是无限循环);如果你想按固定时长观看,可将 while True 改为基于起始时间判断的循环。

  • XPATH 选择器依赖站点的具体 DOM 结构("开始学习/继续学习"按钮文本),若站点改版,可能需要更新 XPATH。

  • CHROMEDRIVER_PATH 需要与你本机 Chrome 版本匹配;或把驱动加入 PATH。

  • 代码里有部分注释掉的"自动填写账号/密码/点击登录按钮"备用方案,当前默认是手动登录更稳。

  • 无头模式(headless)未启用;如果要后台运行,需额外配置 ChromeOptions


注意

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


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

没有评论:

发表评论

Meta更新:你排除了这个版位?不行,你没有我懂

从10月8日起,Meta将在广告版位中推出一项新功能,该功能 将你最多5%的预算分配给每个被排除的版位 ,前提是这样做有可能提升广告表现。 解读 此举将进一步巩固Advantage+在Facebook广告体系中的首选地位,让手动设置广告逐渐退出历史舞台。 有哪些变化? 目前,...