Vishnu-tppr/Project-KillCode
GitHub: Vishnu-tppr/Project-KillCode
一款用于绕过 SkillRack 平台编程限制并集成多种 AI 模型自动求解编程题的 Tampermonkey 浏览器用户脚本。
Stars: 1 | Forks: 0
# Anti-Cheat 绕过
适用于 [skillrack.com](https://skillrack.com) 的 Tampermonkey 用户脚本。它能够屏蔽标签页切换检测、恢复剪贴板功能、解决验证码问题,并使用你的 ChatGPT 账号生成代码解决方案 —— 无需 API key,完全免费。
**版本:** `5.0f` · **匹配:** `*.skillrack.com/*`
## 功能说明
| 功能 | 实现方式 |
|---------|-----|
| 标签页切换检测 | 伪造 `document.visibilityState` → 始终保持 `visible` |
| 复制 / 粘贴 / 剪切 | 在 jQuery 处理程序运行前拦截剪贴板事件 |
| 强制全屏 | 拦截 `requestFullscreen()`,伪造 `fullscreenElement` |
| 多显示器检测 | 伪造 `screen.left`、`screen.top` 和 `screen.isExtended` |
| 心跳 / 遥测数据 | 阻止发往监考端点的 XHR 和 Fetch 请求,并返回伪造的 200 状态码 |
| ACE 编辑器限制 | 屏蔽 `bte` 命令注册,覆盖 `cs()` 差异检查 |
| 拖放操作 | 移除所有元素的 `ondragstart`/`ondrop`/`onselectstart` 属性 |
| 验证码 | 使用 Tesseract.js OCR 识别数学验证码图片(失败时自动重试) |
| AI 解答 | 使用 7 种提供程序之一生成代码,并自动填入 ACE 编辑器 |
| 自动求解器 | 全自动流程:验证码 → AI 求解 → 运行 → 跳转至下一题 |
## 安装说明
1. 安装 [Tampermonkey](https://www.tampermonkey.net/)(支持 Chrome/Firefox/Edge)
2. 点击 → **[安装脚本](https://raw.githubusercontent.com/Vishnu-tppr/skillrack-script/refs/heads/main/Anti-Cheat%20Bypass%205.0.user.js)**
3. Tampermonkey 将打开安装页面 —— 点击 **安装**
4. 打开 SkillRack。首次加载时需接受免责声明。
该脚本会自动从 GitHub 更新(`@updateURL` 已在头部设置)。
## 通过 ChatGPT 免费使用 AI —— 无需 API key
这是使用本脚本的主要原因。OpenAI 对 API 访问收取约 $15/百万 token 的费用,而 ChatGPT 账户可以免费获得相同的计算能力。该脚本利用你的 ChatGPT OAuth token 直接调用 `chatgpt.com/backend-api/codex` —— 模型完全相同,但零成本。
它有两种运行模式。脚本会优先尝试模式 1,并自动回退:
```
Mode 1: GM_xmlhttpRequest → chatgpt.com/backend-api/codex (browser-only)
↓ 401 / 403 / network error
Mode 2: http://127.0.0.1:10531/v1 (local npx openai-oauth proxy)
↓ proxy not running
Error: "Sign in or start npx openai-oauth"
```
### 设置(仅需浏览器,无需终端)
**第 1 步 —— 安装“Sign in with ChatGPT”扩展程序**
此扩展程序会在浏览器层级拦截 OpenAI 的 OAuth 回调。无需服务器。
- Chrome:[Chrome 网上应用店](https://chromewebstore.google.com/detail/sign-in-with-chatgpt/odbgboachaefbbbdiffcefhpkekhfcna)
- Firefox:[Firefox 附加组件](https://addons.mozilla.org/firefox/addon/sign-in-with-chatgpt/)
- 或者从 `chrome-extension/` 目录加载已解压的扩展程序(开发者模式)
主机权限:仅限 `http://localhost:1455/*`。任何数据都不会离开你的设备。
**第 2 步 —— 登录**
1. 打开 SkillRack → 点击右下角的 ⚙️ 图标
2. 设置 **AI Provider** → **ChatGPT (openai-oauth)**
3. 点击 **Sign in with ChatGPT**
4. 在 OpenAI 页面登录 → 扩展程序拦截回调 → 显示“Continue to skillrack.com” → 点击继续
5. Token 将作为 `oai_oauth_session` 保存在 `localStorage` 中
完成。无需终端,无需 API key。
**第 3 步 —— (可选)本地代理回退**
如果直接调用被阻止(例如 Cloudflare 拦截、token 过期等):
```
npx openai-oauth@latest
```
将在 `127.0.0.1:10531/v1` 启动兼容 OpenAI 的 API 端点。可用模型取决于你的 ChatGPT 订阅计划:`gpt-5.6-terra`、`gpt-5.6-sol`、`gpt-5.5`、`gpt-5.4-mini`、`gpt-image-2`。
后台命令:
```
npx openai-oauth --detach # run in background
npx openai-oauth status
npx openai-oauth logs --follow
npx openai-oauth stop
npx openai-oauth login # sign in without starting server
```
### OAuth 流程工作原理

```
Script → OAuthLogin.initiateLogin() → PKCE auth URL → auth.openai.com
↓
User logs in
↓
OpenAI redirects → http://localhost:1455/auth/callback?code=...&state=...
↓
Extension (declarativeNetRequest) intercepts → chrome-extension://.../confirm.html
↓
User clicks "Continue to skillrack.com"
↓
Page reloads with ?code=...&state=...&oo2_cb=1
↓
Script exchanges code → https://auth.openai.com/oauth/token via GM_xmlhttpRequest
↓
Token stored in localStorage → used as Bearer on chatgpt.com/backend-api/codex
```
## 其他 AI 提供程序
| 提供程序 | 费用 | 备注 |
|----------|------|-------|
| **ChatGPT (openai-oauth)** | 免费 | 使用你自己的账号,无需密钥 |
| **DuckDuckGo AI** | 免费 | 无需账号 |
| **Google Gemini** | 免费额度 | 需要从 [AI Studio](https://aistudio.google.com/app/apikey) 获取 API key |
| **OpenRouter** | 免费 + 付费 | 提供 300 多种模型,[获取密钥](https://openrouter.ai/keys) |
| **G4F** | 免费 | 需要 [g4f.space](https://g4f.space) 账号 |
| **OpenAI direct** | 付费 | 标准 API key |
| **YuppBridge** | 自托管 | 通过 [YuppBridge](https://github.com/cloudWaddie/yuppbridge) 提供 200 多种模型 |
### DuckDuckGo(零配置)
将提供程序设置为 **DuckDuckGo AI**。选择一个模型。就这么简单。
可用模型包括:GPT-4o Mini、GPT-5 Mini、GPT-OSS 120B、Llama 4 Scout、Claude 3.5 Haiku、Mixtral Small 3。
### OpenRouter
通过 API 动态获取模型列表。缓存时间为 6 小时。支持按名称搜索、仅筛选免费模型。默认模型:`google/gemini-2.0-flash:free`。回退模型:`openrouter/free`。
## 设置面板
点击右下角的 ⚙️ 图标。所有设置都会持久化保存在 `localStorage` 中。
**绕过检测**
| 设置 | 默认值 |
|---------|---------|
| 绕过标签页检测 | ✅ |
| 绕过复制/粘贴限制 | ✅ |
| 绕过全屏限制 | ✅ |
| 绕过多显示器检测 | ✅ |
| 阻止遥测数据 | ✅ |
**编辑器**
| 设置 | 默认值 |
|---------|---------|
| 拖放操作 | ✅ |
| 文本选择 | ✅ |
| 右键菜单 | ✅ |
**验证码**
| 设置 | 默认值 |
|---------|---------|
| 自动求解验证码 | ✅ |
| 用户名(用于验证码解析) | 为空 |
如果你的用户名中包含 `+` 和数字(例如 `abcd123+21@xyz.com`),请设置此项。
**AI**
| 设置 | 默认值 |
|---------|---------|
| 启用 AI 求解器 | ❌ |
| 自动求解器 | ❌ |
| 提供程序 | Gemini |
## 自动求解器
⚠️ 实验性功能。
当同时启用 **AI Solver** 和 **Auto Solver** 时:
1. 等待验证码通过验证
2. 点击紫色的“🤖 AI Solution”按钮
3. 等待代码生成完成,并粘贴到编辑器中
4. 点击运行
5. 成功则跳转至下一题。失败则重试(最大重试次数可配置)。
随时点击 **STOP** 即可停止运行。
## 验证码求解器
使用 Tesseract.js(通过 `@require` 加载)。反转验证码图片以提升 OCR 准确率。动态检测验证码图片 —— 适用于不同的 SkillRack 页面布局。
首次运行需要几秒钟来初始化 Tesseract。随后的运行速度会很快。
## ACE 编辑器绕过详情
SkillRack 使用多层防护来阻止在代码编辑器中进行复制/粘贴:
| SkillRack 的做法 | 脚本的做法 |
|---------------------|----------------------|
| `commands.addCommand({name:'bte', bindKey:'ctrl-c\|ctrl-v\|...'})` | 拦截包含 `bte` 键的 `addCommand` 调用 |
| `commands.on("exec", ...)` 粘贴拦截 | 剔除包含粘贴相关逻辑的 exec 处理程序 |
| `container.addEventListener("drop", ...)` | 在捕获阶段添加有效的拖放处理程序 |
| 批量粘贴拦截(如果粘贴超过 30 个字符则重置编辑器) | 拦截 `setValue()` 和 change 处理程序 |
| `cs()` 差异检查 | 将其覆盖,始终允许代码同步 |
该脚本会在 SkillRack 的代码执行之前(`@run-at document-start`)拦截 `ace.edit()`,因此所有限制措施在被应用之前就已经被解除了。
## MFIB —— 多项填空题
某些 SkillRack 题目包含多个与静态代码混合的内联填空处(`[BLANK_0]`、`[BLANK_1]` 等)。
该脚本会:
1. 解析模板,识别每一个填空处
2. 向 AI 发送结构化的 JSON 提示词
3. 解析返回的 JSON 数组响应
4. 使用标准的浏览器事件填充每个输入框(以便 React/Angular 框架能正确记录数据更改)
## 启动流程
```
document-start: all event interceptors installed
↓
Kill switch check: fetches kill.txt from GitHub
↓ (if true)
Update check: compares @version against GitHub
↓ (if current)
Disclaimer modal (first run only, saved in localStorage)
↓ (accepted)
UI initialised: settings panel, AI button, captcha solver
```
## 终止开关
脚本在每次加载时都会检查本仓库中的 `kill.txt` 文件。
- `true` → 正常运行
- `false` → 显示“Script Disabled”并停止运行
用于紧急情况(例如 SkillRack 更新了某些内容,导致绕过机制严重失效)。
## 故障排除
**剪贴板依然被阻止**
检查控制台是否输出“Blocked” —— 这意味着 jQuery 处理程序在脚本之前运行了。请确认在 Tampermonkey 的脚本设置中勾选了 `@run-at document-start`。
**ACE 编辑器空白 / `getSession is not a function`**
通常意味着编辑器在拦截机制生效前就已经加载。请尝试强制刷新(Ctrl+Shift+R)。
**验证码无法求解**
首次运行时请等待 3-5 秒(正在下载 Tesseract)。如果陷入死循环,请关闭并重新打开该标签页。
**ChatGPT 提供程序无法使用**
- 未安装扩展程序? → [Chrome](https://chromewebstore.google.com/detail/sign-in-with-chatgpt/odbgboachaefbbbdiffcefhpkekhfcna) / [Firefox](https://addons.mozilla.org/firefox/addon/sign-in-with-chatgpt/)
- Token 过期? → 在设置中重新登录
- 遇到 403 错误? → OpenAI 可能已经修补了该端点。[提交 Issue](https://github.com/Vishnu-tppr/Skillrack-Script/issues)
- 仍然被阻止? → 运行 `npx openai-oauth@latest` 作为代理回退方案
**OpenRouter 模型未加载**
点击模型选择器中的 🔄 按钮。模型缓存时间为 6 小时。
## 免责声明
本脚本按“原样”提供。使用它可能会违反 SkillRack 的服务条款以及你所在机构的相关学术诚信政策。你需要对自己如何使用该脚本负责。
ChatGPT 集成功能使用了 [openai-oauth](https://github.com/EvanZhouDev/openai-oauth),这是一个非官方的社区项目。它不隶属于 OpenAI,也未获得 OpenAI 的认可。你必须遵守 OpenAI 的[使用条款](https://openai.com/policies/terms-of-use/)。
**在实际考试期间,请务必禁用此脚本。**
## 更新日志
### v5.0f
- 通过 openai-oauth 集成 ChatGPT 提供程序(仅需浏览器,无需 API key)
- 使用 `GM_xmlhttpRequest` 直接调用 `chatgpt.com/backend-api/codex`
- 遇到 401/403 错误时自动回退至 `npx openai-oauth` 代理
### v5.1
- 支持多项填空题 (MFIB),采用 JSON 提示词与响应格式
- 重构 `window.ace` 拦截机制(修复了编辑器空白的 Bug)
- 仅执行运行的 AutoSolver(不自动点击提交)
- OpenRouter:默认使用 `gemini-2.0-flash:free`,回退使用 `openrouter/free`
### v5.0
- 支持 C/C++ 语言标签识别与注释剥离
- 提交前进行代码相似度检查
- 接入 YuppBridge 提供程序(200 多种模型)
- 接入 DuckDuckGo AI 提供程序(免费,无需密钥)
### v4.6
- 强制更新检查与阻塞式弹窗提示
- 首次使用免责声明
- 通过 `kill.txt` 实现远程终止开关
### v4.5
- 动态加载 OpenRouter 模型(通过 API 获取,缓存 6 小时)
- 仅显示免费模型的过滤器
- 自动求解器 (Auto Solver) 停止按钮
### v4.4
- 接入 G4F 提供程序
- 自动求解器(实验性功能)
## 致谢- **[ToonTamilIndia](https://github.com/ToonTamilIndia)** — 主要开发
- **[adithyagenie](https://github.com/adithyagenie/skillrack-captcha-solver)** — 验证码求解器
- **[EvanZhouDev/openai-oauth](https://github.com/EvanZhouDev/openai-oauth)** — openai-oauth SDK (Apache-2.0)
- **[vishnu-tppr](https://github.com/vishnu-tppr)** — ChatGPT 集成与逆向工程
MIT License
标签:AI辅助编程, CMS安全, JavaScript, 数据可视化, 油猴脚本, 浏览器自动化, 策略控制器, 自定义脚本, 防作弊绕过