免费搭建本地AI逆向工作站:Cloak浏览器与MCP协议实战指南
最近在尝试用AI辅助进行Web逆向和爬虫开发时发现很多工具要么收费昂贵要么限制重重要么环境配置复杂得让人头疼。经过一番折腾和整合我摸索出一套完全免费、功能强大且配置清晰的本地化AI逆向解决方案。这套方案的核心是一个经过特殊配置的浏览器环境配合本地运行的大语言模型LLM以及连接两者的MCPModel Context Protocol工具。本文将手把手带你从零开始搭建这套“AI逆向魔改浏览器 MCP”的强力组合让你也能轻松应对各种JS逆向、接口加密等爬虫难题。1. 核心概念与工具栈解析在开始动手之前我们有必要先理清这套方案中几个关键概念和它们之间的关系这能帮助你更好地理解每一步操作的目的。1.1 什么是AI逆向传统的Web逆向或爬虫逆向主要依赖开发者手动分析网页的JavaScript代码、网络请求、加密参数等过程繁琐且对经验要求高。AI逆向是指利用大语言模型如GPT-4、Claude、本地部署的Llama等的代码理解、逻辑推理和自然语言交互能力来辅助甚至自动化完成部分逆向分析工作。例如解释混淆代码将一段经过压缩和混淆的JS代码提交给AI让它用通俗的语言解释其功能或还原出清晰的逻辑。定位加密入口根据网络请求中加密的参数如sign、token让AI帮忙在庞大的JS文件中快速定位关键的加密函数。生成解密代码在分析出加密算法后直接让AI用Python或Node.js写出对应的解密函数。模拟浏览器行为指导AI编写Playwright或Puppeteer脚本绕过复杂的反爬机制。1.2 关键工具介绍Cloak浏览器与MCP我们的方案围绕两个核心工具展开魔改浏览器Cloak Browser它是什么一个基于Chromium深度定制的浏览器环境。这里的“Cloak” cloak 意为“伪装”并非指某个具体软件而是一种概念代表经过配置、能够隐藏自动化特征、绕过常见反爬检测的浏览器实例。我们可以通过Playwright或Selenium等自动化工具来启动和操控这样的浏览器。它能做什么模拟真人浏览行为如鼠标移动、随机延迟、修改WebDriver属性、注入特定JS以绕过指纹检测、管理Cookie和本地存储等。它为AI提供了一个“安全”的沙箱来执行动态页面渲染和交互。MCPModel Context Protocol它是什么由Anthropic公司提出的一种开放协议旨在标准化大语言模型LLM与外部工具、数据源之间的连接方式。你可以把它理解为LLM的“插件系统”或“驱动程序”。它如何工作MCP定义了一套标准接口Server各种工具如文件系统、数据库、浏览器通过实现MCP Server来暴露自己的能力。LLM客户端如Claude Desktop、自定义AI应用通过MCP Client连接到这些Server从而获得调用这些工具的能力。在本方案中MCP Server将作为我们本地浏览器自动化能力的“桥梁”让LLM可以直接控制浏览器进行页面导航、元素查找、脚本执行等操作。1.3 整体工作流程理解了核心组件后整个方案的工作流就清晰了环境层我们在本地电脑上部署一个LLM如Ollama运行的模型和一个支持MCP的AI客户端如Claude Desktop。工具层我们配置一个“Cloak”模式的浏览器通过Playwright并启动一个浏览器MCP Server。这个Server会持续运行等待指令。交互层你在AI客户端如Claude Desktop中向LLM提出逆向需求例如“帮我分析这个页面的登录接口加密参数”。执行层LLM通过MCP协议调用已连接的浏览器MCP Server。Server接收到指令后驱动“Cloak”浏览器访问目标网页执行页面操作、抓取网络请求、提取JS代码等。分析层LLM结合浏览器返回的实时数据HTML、网络日志、Console输出进行分析最终给你提供逆向结果、解释或生成可用的爬虫代码。接下来我们将一步步搭建这个强大的本地AI逆向工作站。2. 环境准备与安装本节将详细说明所需软件、工具的安装和基础配置。请确保你的操作系统Windows/Mac/Linux具备基本的开发环境。2.1 基础环境Node.js与Python我们的工具链主要基于Node.js和Python两者都需要安装。安装Node.js ( 18)访问 Node.js 官网 下载LTS版本并安装。安装完成后打开终端或CMD/PowerShell验证安装node --version npm --version建议配置npm淘宝镜像以加速后续安装npm config set registry https://registry.npmmirror.com安装Python ( 3.8)访问 Python 官网 下载最新稳定版。安装时务必勾选 “Add Python to PATH”。安装完成后验证安装python --version pip --version同样建议配置pip国内镜像pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2.2 本地大语言模型Ollama我们将使用Ollama来在本地运行开源LLM它简单易用且支持MCP。安装Ollama访问 Ollama 官网 下载对应操作系统的安装包。按照向导完成安装。安装后终端输入ollama应能看到帮助信息。拉取并运行一个轻量级模型我们先拉取一个适合代码分析的模型例如llama3.2:3b3B参数对硬件要求低或qwen2.5:7b代码能力强# 拉取模型 ollama pull llama3.2:3b # 运行模型会在后台启动服务 ollama run llama3.2:3b第一次运行会下载模型需要一些时间。运行后你可以直接在终端与模型对话测试。但我们的目标是通过MCP连接所以可以先按CtrlC退出交互模式。Ollama服务默认会在http://localhost:11434提供API。2.3 AI客户端Claude Desktop (支持MCP)我们需要一个能连接MCP Server的AI客户端。Anthropic的Claude Desktop原生支持MCP是当前最方便的选择。下载与安装访问 Claude.ai 并注册/登录账户。在下载页面获取 Claude Desktop 客户端并安装。配置Claude Desktop使用本地Ollama打开Claude Desktop点击左上角你的头像进入Settings-Developer。找到Custom configuration file部分。Claude Desktop的配置文件通常位于macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.jsonLinux:~/.config/Claude/claude_desktop_config.json用文本编辑器如VSCode打开或创建这个JSON文件输入以下内容{ defaultModel: ollama/llama3.2:3b, ollama: { baseUrl: http://localhost:11434, models: [ { name: ollama/llama3.2:3b, displayName: 本地 Llama 3.2 3B, provider: ollama, contextWindow: 8192 } ] } }保存文件完全重启Claude Desktop。重启后在聊天界面左上角模型选择处应该能看到“本地 Llama 3.2 3B”选项选择它。现在你的对话就是与本地运行的Ollama模型进行了。2.4 浏览器自动化核心PlaywrightPlaywright是一个强大的浏览器自动化库我们将用它来启动和控制我们的“Cloak”浏览器。安装Playwright在你的项目目录下通过npm安装Playwrightnpm init -y # 如果目录没有package.json npm install playwright安装Playwright自带的浏览器Chromium, Firefox, WebKitnpx playwright install这个过程会下载浏览器需要一定时间。验证安装创建一个简单的测试脚本test_playwright.jsconst { chromium } require(playwright); (async () { const browser await chromium.launch({ headless: false }); // 有头模式打开 const page await browser.newPage(); await page.goto(https://example.com); console.log(页面标题:, await page.title()); await page.waitForTimeout(3000); // 等待3秒便于观察 await browser.close(); })();运行脚本node test_playwright.js如果能看到浏览器自动打开并访问 example.com控制台输出标题则说明Playwright安装成功。3. 构建“Cloak”魔改浏览器一个基础的浏览器实例很容易被网站的反爬系统识别。我们需要对Playwright启动的浏览器进行一系列“伪装”配置使其行为更接近真人用户。3.1 基础反检测配置创建一个名为cloak_browser.js的文件我们将在此实现基础伪装const { chromium } require(playwright); /** * 创建一个具有基础反检测能力的“Cloak”浏览器实例 * returns {Promiseimport(playwright).Browser} 浏览器实例 */ async function createCloakBrowser() { // 1. 启动参数配置这是最关键的一步 const browser await chromium.launch({ headless: false, // 调试时用有头模式生产环境可设为 true 或 ‘shell’ args: [ --disable-blink-featuresAutomationControlled, // 禁用自动化控制特征 --disable-dev-shm-usage, // 解决Docker等环境下的内存问题 --no-sandbox, // 非沙盒模式注意安全仅用于本地爬虫 --disable-web-security, // 禁用同源策略用于跨域请求调试慎用 --disable-featuresIsolateOrigins,site-per-process, // 禁用站点隔离有时能绕过指纹 --start-maximized // 启动时最大化窗口 ], // 2. 设置一个真实的用户数据目录避免每次都是全新会话 userDataDir: ./playwright_user_data, }); const context await browser.newContext({ // 3. 设置一个常见的视口大小 viewport: { width: 1920, height: 1080 }, // 4. 设置一个常见的用户代理User-Agent userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36, // 5. 设置语言和时区 locale: zh-CN, timezoneId: Asia/Shanghai, // 6. 启用权限如地理位置模拟真人 permissions: [geolocation], // 7. 设置地理位置可选 geolocation: { latitude: 39.9042, longitude: 116.4074 }, // 北京 // 8. 忽略HTTPS错误对于测试环境有用 ignoreHTTPSErrors: true, }); // 9. 注入JS代码覆盖常见的自动化检测属性 await context.addInitScript(() { // 覆盖 navigator.webdriver 属性 Object.defineProperty(navigator, webdriver, { get: () undefined, }); // 覆盖 chrome 对象Playwright会暴露 if (window.chrome) { Object.defineProperty(window, chrome, { get: () undefined, }); } // 覆盖 permissions API可选 const originalQuery navigator.permissions.query; navigator.permissions.query (parameters) ( parameters.name notifications ? Promise.resolve({ state: Notification.permission }) : originalQuery(parameters) ); }); return { browser, context }; } module.exports { createCloakBrowser };3.2 高级指纹伪装与行为模拟基础配置能绕过一部分检测但高级反爬系统会检测浏览器指纹Canvas, WebGL, AudioContext, Fonts等和用户行为。我们需要更精细的模拟。安装指纹伪装库可选但推荐 Playwright社区有一些插件可以帮助伪造指纹例如playwright-extra和puppeteer-extra-plugin-stealth的适配版本。但目前Playwright原生支持有限。一个更直接的方法是使用第三方反检测浏览器内核如undetected-playwright但配置复杂。对于大多数场景我们可以通过使用真实的Chrome/Edge浏览器代替Chromium来获得更真实的指纹。修改启动参数const { chromium } require(playwright); async function createCloakBrowserWithRealChrome() { // 指定你本地安装的Chrome或Edge浏览器的可执行文件路径 // Windows 示例C:\Program Files\Google\Chrome\Application\chrome.exe // macOS 示例/Applications/Google Chrome.app/Contents/MacOS/Google Chrome const browser await chromium.launch({ executablePath: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome, // 修改为你的路径 headless: false, args: [ --disable-blink-featuresAutomationControlled, --user-data-dir./chrome_user_data, // 使用Chrome的用户数据 // 可以添加更多Chrome flags ], }); // ... 后续context配置与之前类似 return browser; }模拟人类行为 创建页面操作时加入随机延迟、随机鼠标移动等。const { createCloakBrowser } require(./cloak_browser); async function simulateHumanInteraction(page) { // 随机延迟函数 const delay (ms) new Promise(resolve setTimeout(resolve, ms)); // 模拟随机鼠标移动在页面内随机移动 await page.mouse.move( Math.random() * 800 100, Math.random() * 600 100 ); await delay(Math.random() * 500 200); // 随机延迟200-700ms // 模拟滚动随机滚动一段距离 await page.evaluate(() { window.scrollBy({ top: Math.random() * 500, behavior: smooth }); }); await delay(Math.random() * 1000 500); } (async () { const { browser, context } await createCloakBrowser(); const page await context.newPage(); await page.goto(https://httpbin.org/headers); // 在操作前或操作间插入人类行为模拟 await simulateHumanInteraction(page); // 你的其他操作比如点击、输入 // ... await browser.close(); })();4. 搭建浏览器MCP Server这是连接本地浏览器与AIClaude Desktop的关键桥梁。我们将创建一个Node.js服务它遵循MCP协议暴露控制浏览器的能力。4.1 初始化MCP Server项目创建项目目录并初始化mkdir browser-mcp-server cd browser-mcp-server npm init -y安装依赖 我们需要modelcontextprotocol/sdk来构建MCP Server以及之前安装的playwright。npm install modelcontextprotocol/sdk playwright4.2 编写MCP Server核心代码创建一个文件server.js代码如下。这是一个功能完整的MCP Server示例它提供了几个核心工具Tools供AI调用const { Server } require(modelcontextprotocol/sdk/server/index.js); const { StdioServerTransport } require(modelcontextprotocol/sdk/server/stdio.js); const { chromium } require(playwright); // 创建MCP Server实例 const server new Server( { name: browser-automation-server, version: 1.0.0, }, { capabilities: { tools: {}, // 声明本Server提供工具 }, } ); // 全局变量用于保持浏览器和页面实例 let browser null; let page null; /** * 工具定义启动浏览器并打开新页面 */ server.setRequestHandler(tools/call, async (request) { const { name, arguments: args } request.params; try { switch (name) { case start_browser: { if (browser) { return { content: [ { type: text, text: 浏览器已经启动。, }, ], }; } // 使用之前定义的cloak配置启动浏览器 browser await chromium.launch({ headless: false, args: [--disable-blink-featuresAutomationControlled], }); const context await browser.newContext({ viewport: { width: 1280, height: 720 }, userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36, }); page await context.newPage(); return { content: [ { type: text, text: 浏览器启动成功新页面已创建。, }, ], }; } case navigate: { if (!page) { throw new Error(请先启动浏览器 (调用 start_browser)。); } const url args.url; if (!url || typeof url ! string) { throw new Error(参数 url 必须是一个有效的字符串。); } await page.goto(url, { waitUntil: networkidle }); const title await page.title(); return { content: [ { type: text, text: 已导航至: ${url}\n页面标题: ${title}, }, ], }; } case extract_network_requests: { if (!page) { throw new Error(请先启动浏览器并导航到页面。); } // 监听网络请求 const requests []; page.on(request, (request) { requests.push({ url: request.url(), method: request.method(), headers: request.headers(), }); }); // 等待一段时间收集请求或者触发页面操作 await page.waitForTimeout(3000); // 等待3秒 // 简单去重 const uniqueRequests Array.from( new Map(requests.map(req [req.url, req])).values() ); return { content: [ { type: text, text: 收集到 ${uniqueRequests.length} 个网络请求:\n uniqueRequests.map(req [${req.method}] ${req.url}).join(\n), }, ], }; } case get_page_content: { if (!page) { throw new Error(请先启动浏览器并导航到页面。); } // 获取页面HTML const html await page.content(); // 获取所有脚本内容对逆向很重要 const scripts await page.$$eval(script, (elements) elements.map((el) el.textContent || el.src).filter(Boolean) ); return { content: [ { type: text, text: 页面HTML已获取长度: ${html.length} 字符。\n 找到 ${scripts.length} 个脚本。\n 脚本来源/内容预览前3个:\n scripts.slice(0, 3).map((s, i) [${i}] ${s.substring(0, 200)}...).join(\n), }, ], }; } case execute_script: { if (!page) { throw new Error(请先启动浏览器并导航到页面。); } const script args.script; if (!script || typeof script ! string) { throw new Error(参数 script 必须是一个有效的JavaScript代码字符串。); } const result await page.evaluate(script); return { content: [ { type: text, text: 脚本执行结果: ${JSON.stringify(result, null, 2)}, }, ], }; } case close_browser: { if (browser) { await browser.close(); browser null; page null; return { content: [ { type: text, text: 浏览器已关闭。, }, ], }; } return { content: [ { type: text, text: 没有正在运行的浏览器实例。, }, ], }; } default: throw new Error(未知工具: ${name}); } } catch (error) { return { content: [ { type: text, text: 工具调用出错: ${error.message}, }, ], isError: true, }; } }); /** * 列出Server提供的所有工具Claude Desktop在连接时会调用 */ server.setRequestHandler(tools/list, async () { return { tools: [ { name: start_browser, description: 启动一个伪装好的浏览器实例并打开新页面。, inputSchema: { type: object, properties: {}, }, }, { name: navigate, description: 控制浏览器导航到指定的URL。, inputSchema: { type: object, properties: { url: { type: string, description: 要访问的完整URL地址。, }, }, required: [url], }, }, { name: extract_network_requests, description: 捕获当前页面在短时间内发出的网络请求用于分析API接口。, inputSchema: { type: object, properties: {}, }, }, { name: get_page_content, description: 获取当前页面的完整HTML内容和内联/外联脚本列表用于静态分析。, inputSchema: { type: object, properties: {}, }, }, { name: execute_script, description: 在当前页面上下文中执行一段JavaScript代码并返回结果。可用于动态提取数据或触发事件。, inputSchema: { type: object, properties: { script: { type: string, description: 要执行的JavaScript代码字符串。, }, }, required: [script], }, }, { name: close_browser, description: 关闭浏览器实例释放资源。, inputSchema: { type: object, properties: {}, }, }, ], }; }); // 启动Server使用stdio传输与Claude Desktop通信的标准方式 const transport new StdioServerTransport(); server.connect(transport).catch((error) { console.error(Server连接失败:, error); process.exit(1); }); console.error(Browser MCP Server 已启动等待Claude Desktop连接...);4.3 配置Claude Desktop连接MCP Server现在我们需要告诉Claude Desktop如何找到并连接我们刚刚编写的这个MCP Server。创建MCP Server配置文件 在Claude Desktop的配置目录下与之前的claude_desktop_config.json同级创建一个新文件mcp-servers.json。编辑mcp-servers.json{ mcpServers: { browser-automation: { command: node, args: [ /ABSOLUTE/PATH/TO/YOUR/browser-mcp-server/server.js ], env: { NODE_ENV: development } } } }重要将/ABSOLUTE/PATH/TO/YOUR/browser-mcp-server/server.js替换为你电脑上server.js文件的绝对路径。例如Windows:C:\\Users\\YourName\\projects\\browser-mcp-server\\server.jsmacOS/Linux:/Users/YourName/projects/browser-mcp-server/server.js重启Claude Desktop。验证连接重启后在Claude Desktop中新建对话选择你的本地模型。在输入框里尝试输入/start_browser如果配置成功Claude应该会理解这个命令因为它来自MCP工具并尝试调用。你可能会看到一个新的浏览器窗口被打开。如果Claude回复“我不明白这个命令”说明MCP连接可能未成功请检查配置文件路径和格式并查看Claude Desktop的日志通常在开发者设置中可找到。5. 实战使用AI进行逆向分析环境全部就绪现在我们来演示一个完整的AI逆向工作流。假设我们的目标是分析一个模拟登录页面的加密参数。5.1 场景设定目标网站示例一个虚构的登录页面https://httpbin.org/forms/post实际无加密仅演示流程。我们假设它的登录请求中有一个名为encrypted_token的加密字段。5.2 在Claude Desktop中与AI协作启动浏览器并导航 在Claude Desktop中输入请使用浏览器工具启动浏览器并导航到 https://httpbin.org/forms/post。Claude会调用start_browser和navigate工具。你会看到浏览器打开并跳转到目标页面。获取页面内容与脚本 接着输入获取当前页面的HTML内容和所有JavaScript脚本信息。Claude会调用get_page_content工具并将结果返回给你。AI可以开始分析页面结构。触发登录并捕获网络请求 我们需要AI模拟点击登录按钮。首先让AI查看页面元素查看页面找到登录表单和提交按钮。然后执行一段JavaScript代码来点击提交按钮。你可以建议AI使用execute_script工具// 假设提交按钮的id是submit document.getElementById(submit).click();或者让AI自己生成选择器。点击后立即让AI捕获网络请求现在捕获刚才点击后产生的网络请求。Claude会调用extract_network_requests工具列出所有请求的URL、方法等信息。我们假设从中发现了一个向/api/login发送的POST请求其请求体包含encrypted_token。定位加密函数 现在进入核心逆向环节。将捕获到的关键请求信息和页面中的JS脚本内容从上一步获得一起提交给AI分析我发现了登录请求它向 /api/login 发送了一个POST请求请求体包含一个加密字段 encrypted_token。这是页面中找到的一些JavaScript脚本内容可能包含加密逻辑 [这里粘贴 get_page_content 返回的脚本片段] 请分析这些脚本找出可能用于生成 encrypted_token 的函数或代码逻辑。本地LLM如Llama 3.2会分析代码可能会指出某个名为generateToken()或encryptData()的函数并解释其大致逻辑。生成解密/模拟代码 最后让AI根据分析结果生成可用的Python或Node.js代码根据你的分析这个 encrypted_token 看起来是通过函数 window.encrypt(JSON.stringify(data)) 生成的其中 data 包含用户名和时间戳。请为我写一个Python函数能够模拟这个加密过程生成有效的 encrypted_token。AI可能会返回类似下面的代码import time import json from hashlib import md5 import base64 def generate_encrypted_token(username, password): 模拟JS中的加密逻辑生成 encrypted_token。 假设原JS代码是 window.encrypt function(data) { return btoa(md5(data SALT)); } timestamp int(time.time() * 1000) data { username: username, timestamp: timestamp } json_str json.dumps(data, separators(,, :)) # 模拟JSON.stringify # 模拟 md5(data SALT) 然后 base64编码 to_hash json_str SALT hash_obj md5(to_hash.encode(utf-8)).hexdigest() encrypted base64.b64encode(hash_obj.encode(utf-8)).decode(utf-8) return encrypted # 使用示例 if __name__ __main__: token generate_encrypted_token(test_user, test_pass) print(f生成的 encrypted_token: {token})清理 完成后让AI关闭浏览器请关闭浏览器。Claude会调用close_browser工具。通过以上步骤你无需手动在开发者工具中搜索和调试JS而是通过自然语言指令让AI驱动浏览器完成页面交互、数据抓取和初步代码分析并最终生成可集成的爬虫代码片段。这极大地提升了逆向工程的效率。6. 常见问题与排查在搭建和使用过程中你可能会遇到以下问题6.1 Claude Desktop 无法连接本地 Ollama问题现象可能原因解决方案Claude Desktop 模型列表中没有本地模型选项。1. 配置文件路径错误。2. 配置文件格式错误。3. Ollama服务未启动。1. 检查claude_desktop_config.json文件路径和内容是否正确。2. 确保JSON格式正确无语法错误。3. 在终端运行ollama serve或ollama run 模型名确保Ollama API在http://localhost:11434可用。选择本地模型后Claude提示连接失败或超时。1. 防火墙或网络策略阻止连接。2. Ollama版本与Claude Desktop不兼容。1. 检查防火墙设置允许本地回环地址127.0.0.1通信。2. 尝试更新Ollama和Claude Desktop到最新版本。6.2 MCP Server 连接失败问题现象可能原因解决方案在Claude中输入MCP工具命令如/start_browser无反应或报错。1.mcp-servers.json路径或内容错误。2. MCP Server脚本本身有语法错误。3. Node.js路径或依赖问题。1. 确认mcp-servers.json位于正确目录且command和args中的绝对路径无误。2. 在终端直接运行node /path/to/server.js看是否有报错并修复。3. 确保在browser-mcp-server目录下已运行npm install安装所有依赖。Claude Desktop日志显示“Failed to start MCP server”。命令执行权限不足或环境变量问题。1. 确保node命令在系统PATH中。2. 在mcp-servers.json中可以尝试使用node的完整路径。6.3 浏览器自动化被网站检测到问题现象可能原因解决方案访问目标网站时页面提示“检测到自动化工具”或直接封锁。基础的--disable-blink-featuresAutomationControlled参数已不足以绕过高级检测。1.使用真实Chrome/Edge如3.2节所述指定executablePath指向已安装的浏览器。2.使用用户数据目录复用一个有正常浏览历史的Chrome用户目录使其指纹更真实。3.增加行为模拟更细致地模拟鼠标移动、点击、滚动轨迹和随机等待时间。4.考虑专业方案对于极高难度的网站可能需要研究undetected-playwright或付费的反检测浏览器服务。6.4 本地LLM分析能力不足问题现象可能原因解决方案AI无法理解复杂的JS混淆代码或生成的代码错误百出。本地小模型如3B、7B的代码理解和推理能力有限。1.升级模型在硬件允许的情况下Ollama拉取更大、代码能力更强的模型如codellama:13b,qwen2.5:14b,deepseek-coder:16b。2.分步引导不要一次性给AI太多代码。先让它找出关键函数名再让它解释函数片段最后再生成代码。3.结合传统工具使用像AST解析器、JS反混淆工具如de4js对代码进行预处理再将清晰化的代码交给AI分析。7. 最佳实践与进阶建议为了让这套AI逆向系统更稳定、高效可以参考以下建议项目管理与模块化将浏览器伪装配置、MCP Server工具、常用的AI提示词Prompt模板分别封装成模块。使用版本控制如Git管理你的browser-mcp-server项目。为不同的目标网站创建独立的配置文件和用户数据目录避免指纹交叉污染。优化AI提示词Prompt给AI明确的角色“你是一个专业的Web逆向工程师。”提供上下文“我们正在分析一个登录接口它的请求参数被加密了。”结构化任务“第一步分析这段JS代码找出所有可能与‘token’、‘encrypt’、‘sign’相关的函数。第二步解释其中最可能的一个函数的逻辑。第三步用Python实现该逻辑。”要求AI分步思考并输出可验证的结论。MCP Server功能增强当前的Server只实现了基础功能。你可以根据需求扩展更多工具例如screenshot: 截取页面截图并保存供AI分析页面布局。monitor_console: 捕获并返回浏览器控制台Console的输出这对调试JS错误至关重要。fill_form: 自动填充表单字段。switch_frame: 处理iframe内的元素。为工具添加更详细的参数验证和错误处理。安全与合规性仅用于合法学习和测试此工具仅应用于授权测试、个人学习或分析公开数据。严禁用于攻击、未授权爬取或任何违法活动。尊重robots.txt在自动化访问任何网站前检查其robots.txt文件。控制请求频率在MCP Server或脚本中添加延迟避免对目标服务器造成压力。数据最小化只收集和分析必要的数据。性能与稳定性对于长时间运行的MCP Server实现心跳检测和自动重启机制。浏览器实例会占用较多内存在使用close_browser工具后确保资源被正确释放。考虑使用浏览器上下文Context池来管理多个页面提高复用效率。这套将“Cloak”浏览器、本地LLM和MCP协议相结合的方案为你提供了一个高度可控、功能强大且完全免费的AI逆向研究环境。它改变了传统逆向工作中“人肉”阅读混淆代码的模式通过自然语言交互让AI成为你的得力助手。从环境搭建、工具配置到实战演练希望本文能为你打开一扇新的大门。