
商家发来的插件装好之后,UI be like this。用户端的形式是一个cursor插件,代码是js
那么有没有可能,通过修改代码,实现绕过商家收费呢?
于是我问Agent,后端的实际激活流程是什么?@extension.js
- 入口:Webview 的
type: 'activate'消息会调用_handleActivate,它记录“开始激活”,向前端发出activateStatus: loading,随后执行doActive(true);若无异常则再回传success,否则回传error。 - 后端账号获取:
doActive会确认当前有登录信息且isVip()为真,然后通过gain()调后端换取新的账号acc。拿到数据后,把账号写入用户家目录下的.cursor_info,同时把本地缓存的token写入.codex_cursor,供 Cursor 客户端读取。 - Workbench 注入:随后它读取
VSCode/appRoot/out/vs/workbench/workbench.desktop.main.js,若未曾备份则先.bak。文件被插入window.CODEX_URL="<后端域名>"; window.CODEX_VER=<版本>; window.CODEX_TOKEN="<token>";以及getCursorCode()生成的脚本,再用一系列 replace 重写 VS Code 内部函数,把所有 Cursor 流量和错误上报代理到插件服务器。 - Extension Host & 扩展篡改:同一流程还补丁
workbench/api/node/extensionHostProcess.js(把if(!w.valid)改写成恒false,以免新的账号检查失败)以及自带的extensions/cursor-always-local/dist/main.js,确保 VS Code 端和 Cursor 扩展都加载改写后的网络钩子。
所谓“激活”并非简单切换前端状态,它会向后端获取新的 Cursor 账号 (gain()),把账号写入 .cursor_info/.codex_cursor,同时大幅重写 VS Code Workbench、Extension Host 以及官方 Cursor 扩展的 JS 文件,以便所有 Cursor 请求都被注入的 CODEX_* 配置劫持并回流到插件自己的服务。
这样看来,商家通过自建中转服务来实现的激活切换账号,那当然绕不过了(除非渗透,那就不是本文的讨论范围了