通过 WebSockets 与复古浏览器绕过 AI Web Sandbox

发布: (2026年1月18日 GMT+8 08:54)
3 min read
原文: Dev.to

Source: Dev.to

设置概览

我使用 Tampermonkey 用户脚本(MCP_v6_FULL_UNBLOCK.jsGemini MCP v0.6)构建了一个环境,这些脚本会向 Claude、Gemini 和 ChatGPT 的网页界面注入 JavaScript。脚本拦截特定命令(例如 /[mcp] dir C:\/[mcp] Get-Process),并通过 WebSocket 将它们转发到本地 Node.js 服务器。

Tampermonkey 用户脚本

  • MCP_v6_FULL_UNBLOCK.js
  • Gemini MCP v0.6

这些脚本:

  1. 挂钩聊天 UI。
  2. 检测以 /[mcp] 为前缀的命令。
  3. 将解析后的命令负载通过 WebSocket 连接发送到后端服务器。

Node.js 服务器(server.js

服务器监听 9999 端口(可选通过 ngrok 对外暴露以实现远程访问),并实现 JSON‑RPC 协议,提供多个系统工具:

方法描述
shell/exec执行任意 Shell/PowerShell 命令。
filesystem/read读取本地文件系统中的文件。
filesystem/write向本地文件系统写入文件。
vscode/open在 VS Code 中打开文件。

示例服务器代码片段

// server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 9999 });

wss.on('connection', ws => {
  ws.on('message', async msg => {
    const request = JSON.parse(msg);
    // Dispatch based on request.method …
  });
});

这些操作的结果会通过 WebSocket 流回用户脚本,脚本随后将输出注入到 AI 聊天界面中。

复古浏览器(Zeno)

我还使用 Zeno Bro Web Core 创建了一个 iframe 复古浏览器。该浏览器的沙箱限制极少,使得 AI 更难检测到它运行在普通浏览器环境中,从而更接近原生系统访问。

测试结果

在对 Claude 的一次测试中,AI 在我的机器上盲目执行了数分钟的 PowerShell 命令,直至我介入并告知其正在进行的活动。随后 Claude 停止执行并报告“无法继续”。系统仍然有不少粗糙之处,需要进一步打磨,但实验表明仍有空间进一步突破限制。

截图

  • ngrok 隧道状态(已激活)
  • Zeno 浏览器窗口运行中
  • Gemini 界面已连接 MCP
  • 浏览器中加载的 Tampermonkey 脚本

(此 markdown 版本中省略了截图。)

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...