网课突破限制与网页倍速/拖动刷课全流程教程

本教程梳理了如何从手机端的限制中提取课程链接,并利用电脑端的 Chrome 浏览器突破网页限制、实现任意倍速播放与学的全流程。

一、 整体操作流程图解

1
2
3
4
5
6
7
8
graph TD
A["手机端网课"] --> B["微信分享卡片"]
B --> C["PC微信内置浏览器打开"]
C --> D["再次分享生成完整带参URL"]
D --> E["修改URL防刷控制参数"]
E --> F["配置 Chrome 微信环境 (F12)"]
F --> G["粘贴修改后的 URL"]
G --> H["Console 注入倍速代码"]

二、 详细操作步骤

步骤 1:利用手机侧边栏唤出分享按钮

大部分培训 APP 默认隐藏了微信分享按钮或锁定了页面。

  1. 打开手机的 “游戏魔盒 / 游戏助手”(如 iQOO/vivo 的游戏魔盒),将网课 APP 强行添加为游戏。
  2. 从手机屏幕侧边向内滑动呼出侧边栏,绕过 APP 内部限制,点出课程的 “微信分享” 按钮。
  3. 将课程分享至微信(如发送给“文件传输助手”)。

步骤 2:在 PC 端提取完整播放链接(两次分享法)

手机直接分享的链接通常包含 OAuth 鉴权中转(openid 授权),在 PC 浏览器直接访问会产生白屏,需进行二次提取:

  1. 第一次点击:在 PC 微信客户端中,点击刚才收到的分享卡片,此时会在 PC 微信内置浏览器中弹出课程窗口。
  2. 第二次分享:在 PC 微信内置窗口里点击视频播放,点击窗口右上角的 ...(或分享按钮),再次选择 “发送给朋友 ➔ 文件传输助手”
  3. 复制最终 URL:回到 PC 微信聊天框,在刚刚第二次发送的卡片上鼠标右键,点击 “复制链接”。此时你将拿到带有 tms.mingya.com.cn 域名的完整真实播放地址。

步骤 3:修改 URL 关键控制参数

拿到形如以下的完整 URL 后:

1
https://tms.mingya.com.cn/#/Weixin?type=11&courseId=2389&lessonId=732&projectId=2407&authenFlag=0&recallFlag=0&enableSkip=0&enableSpeed=0&maxSpeedLimit=1&fileUrl=undefined&openId=xxxx&serialno=xxxx

手动修改地址中的前端防刷课参数:

  • enableSkip=0 → 修改为 enableSkip=1 (允许拖动/快进)
  • enableSpeed=0 → 修改为 enableSpeed=1 (允许开启倍速)
  • maxSpeedLimit=1 → 修改为 maxSpeedLimit=1.5 或更高 (解除官方最大倍速限制)

步骤 4:配置 Chrome 浏览器微信伪装环境

由于平台写有客户端检测逻辑,非微信环境直接打开会返回白屏。需要在 Chrome 中伪装身份:

  1. 打开 Chrome 浏览器,按 F12(或 Ctrl + Shift + I)开启开发者工具。

  2. 点击开发者工具右上角的 三点图标(⋮)More toolsNetwork conditions

  3. 在底部的 User agent 区域:

    • 取消勾选 Use browser default(使用浏览器默认)。

    • 在下拉列表中选择 Custom...,并粘贴微信专属的身份识别代码(User-Agent):

      1
      Mozilla/5.0 (Windows NT 10.0; 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
  4. 保持 F12 开发者工具全程开启,将步骤 3 中修改好的 URL 粘贴至 Chrome 地址栏并按回车访问。

步骤 5:Console 注入代码开启倍速

页面加载并开始播放视频后:

  1. 切到 F12 开发者工具的 Console(控制台) 标签页。

  2. 输入以下代码并回车(设置视频播放倍速):

    1
    document.querySelector('video').playbackRate = 1.25;

    (注:若需强行显示浏览器原生的拖动进度条,可输入:document.querySelector('video').controls = true;)

三、 原理解释与常见报错分析

1. 为什么必须用两次分享法?

  • OAuth 2.0 鉴权与单次 Token 机制:网课系统使用微信授权进行身份识别,生成的 serialno 包含唯一的会话密钥。第一层分享链接常为微信中转鉴权页,通过 PC 微信再次分享,能够捕获带有 openId 和实时 serialno 的实际渲染页面 URL。
  • 单课时生命周期serialno 通常是一次性的,因此每一节新课程都必须重新在微信中复制/分享一次新链接,才能保证播放完成后的学时“心跳包(Heartbeat)”正常发送至服务端并记入学时。

2. Chrome 用户代理伪装(User-Agent)原理

网页前端通过 navigator.userAgent 检查访问者身份。传入含有 MicroMessenger 标识的字符串后,能让服务器误以为 Chrome 就是微信客户端,从而正常渲染网页。

3. 倍速报错与限制分析

问题现象:在 Console 中输入大于 10 的倍速时报错(其实是大于16报错)

如输入 document.querySelector('video').playbackRate = 19; 时,控制台抛出以下错误:

1
Uncaught NotSupportedError: Failed to set the 'playbackRate' property on 'HTMLMediaElement': The provided playback rate (19) is not in the supported playback range.
1
2
3
4
5
【报错场景界面示意】
> document.querySelector('video').playbackRate = 19;
❌ Uncaught NotSupportedError: Failed to set the 'playbackRate' property on 'HTMLMediaElement'...
> document.querySelector('video').playbackRate = 10;
< 10

报错原因:

  • 浏览器底层的物理极限:该错误并非网页代码的拦截,而是基于 Chromium(Chrome)内核对 HTML5 <video> 元素设置的底层硬性保护。绝大多数 Chromium 内核浏览器硬性限制 playbackRate 的最大有效范围为 0.0625 ~ 16(部分设备或解码模式下限制为 10)。超出该范围会自动终止脚本并报错。

建议倍速:

  • 推荐区间1.25x ~ 2.0x(兼顾刷课效率与服务器端防刷课的心跳频率校验,避免出现“显示播完但后台学时为 0”的情况)。
  • 极速区间2.0x ~ 10.0x(适用于心跳包仅校验播放完成状态的平台)。