OpenCode+大模型自动补环境:JS逆向实战流程详解

用大模型配合System Prompt自动完成JS逆向中的补环境工作
文章介绍了一种利用大模型(如DeepSeek)配合OpenCode终端工具和精心编写的System Prompt,自动完成JS逆向工程中"补环境"任务的新方案。传统手动补环境需要逐一模拟浏览器对象属性,耗时且易出错。该方案通过将逆向工程师的领域知识、操作流程和代码模板注入System Prompt,让AI具备系统化补环境的能力,实测在淘宝、小红书等主流平台上约10分钟即可完成。
引言:让AI帮你干补环境的苦活
做过JS逆向的人都知道,"补环境"是整个流程中最磨人的环节。你得一个个排查JS代码里的环境检测点,手动模拟navigator、window、document这些浏览器对象,漏掉一个属性就可能被目标网站识别出来。
现在有一种新思路:用大模型(比如DeepSeek)配合OpenCode终端工具,再加上一份精心编写的System Prompt,把补环境这件事交给AI自动完成。据实测,这套方案在淘宝、小红书、拼多多、京东等主流平台上都跑通了,单次补环境只需要10分钟左右。
本文基于一位逆向工程师的实战分享,把这套AI辅助补环境的完整流程和关键细节拆解清楚。
什么是补环境?为什么手动补又慢又难
网站是怎么检测你不在浏览器里的
现代网站的反爬和反逆向机制,会在JS代码里埋大量的环境检测逻辑。值得注意的是,以Akamai、Cloudflare、Shape Security为代表的商业反爬方案,已将这套检测发展为多层次的浏览器指纹识别体系——它们在页面加载时注入数千行混淆JS代码,采集超过100个浏览器特征维度。这些检测不仅包括静态属性值,还会检测属性的访问顺序、时序特征,甚至通过Canvas/WebGL渲染差异来识别真实浏览器与模拟环境。常见的检测类型有这几类:
- 浏览器指纹检测:读取
navigator.userAgent、window.chrome、document.cookie等全局对象的属性,看值是否正常 - 函数保护检测:调用原生函数的
toString()方法,检查返回值是不是[native code],判断函数有没有被篡改 - 原型链检测:验证对象的
__proto__链条是否和真实浏览器一致 - 属性描述符检测:用
Object.getOwnPropertyDescriptor检查属性的configurable、enumerable等描述符
其中,函数toString检测是反爬系统中最难绕过的检测之一。在真实浏览器中,原生函数(如Array.prototype.push)调用toString()会返回'function push() { [native code] }'。当逆向工程师用JS重写这些函数时,toString()会暴露实际的JS代码实现。绕过这一检测需要用Proxy或直接修改函数的toString方法,但这本身又可能触发对Proxy的检测。高级反爬系统还会检测Function.prototype.toString是否被替换,形成多层嵌套的检测链,这也是为什么补环境需要严格遵循属性描述符规范。
当你把JS代码从浏览器里抠出来放到Node.js里跑时,这些检测全部会失败。这是因为Node.js虽然同样基于V8引擎,但缺少浏览器的Web API层。在浏览器中,JS运行时由渲染引擎(Blink)、JS引擎(V8)和浏览器API层共同构成,window、document等全局对象由C++层实现并暴露给JS。Node.js只有V8引擎,没有这个C++绑定层,因此原生缺失所有BOM/DOM对象。更关键的是,浏览器原生对象的属性描述符(configurable、writable、enumerable)和原型链结构是固定的,手动模拟时稍有偏差就会被检测出来。"补环境"就是在代码最前面手动构造这些缺失的浏览器对象,让代码"以为"自己还在浏览器里运行。

直接丢给ChatGPT补,为什么效果差
很多人试过把JS文件直接发给ChatGPT,让它帮忙补环境,但结果通常不理想。原因有三个:
- AI不了解目标网站的具体检测逻辑:每个网站的检测点不一样,泛泛地补一堆属性没用
- 补出来的环境不够真实:属性值是随便填的,原型链关系对不上,一检测就露馅
- 缺少系统化的补环境方法论:AI不知道该按什么顺序补、哪些属性必须补、描述符怎么设置
问题的关键不在于AI能力不够,而在于你没有给它足够的指导。你需要通过Prompt告诉AI:补环境的规则是什么、模板长什么样、按什么流程执行。
核心方案:System Prompt + OpenCode + 大模型
System Prompt:把逆向经验"喂"给AI
System Prompt工程化是将大模型应用于垂直领域的核心方法论。与通用对话不同,专业领域的Prompt需要包含三个层次:领域知识注入(告诉AI该领域的规则和约束)、操作流程定义(规定执行步骤和决策逻辑)、输出格式约束(确保结果可被下游工具直接使用)。这种模式被称为"专家系统Prompt",本质上是将人类专家的隐性知识(tacit knowledge)转化为AI可执行的显性规则。
这套方案的核心是一份精心编写的System Prompt(分享者称之为"Sky"),它正是按照这一范式设计的,具体干了这几件事:
- 定义补环境的规则:比如环境代码必须补在原始代码的上方,属性要按照真实浏览器的描述符来设置
- 提供代码模板:给AI一套经过验证的环境模拟代码模板,包括
window、navigator、document等核心对象的构造方式 - 规定触发机制:当用户说"帮我补环境"时,AI自动按照预设的5个步骤依次执行
- 约束输出格式:规定日志怎么输出、文件结构怎么组织
说白了,System Prompt就是把一个有经验的逆向工程师的方法论,用文字的形式"注入"到了AI里。AI的代码生成能力本来就强,缺的只是领域知识和操作规范,Prompt正好补上了这块。
OpenCode:让AI能直接操作你的文件
OpenCode属于"Agentic AI"工具范畴,与ChatGPT等对话式AI的根本区别在于其具备工具调用(Tool Use)能力。它通过Model Context Protocol(MCP)或类似机制,将文件系统操作、Shell命令执行等能力封装为AI可调用的工具函数——当AI决策需要读取文件时,它会调用read_file工具;需要执行代码时调用shell_exec工具。这种架构使AI从"建议者"变成"执行者",是当前AI Agent领域的主流实现模式,类似的工具还有Cursor、Cline、Devin等。
具体来说,OpenCode在这套方案中的能力体现为:
- 读取和写入本地文件
- 执行命令行操作(比如
node xxx.js来测试代码) - 支持接入多种大模型(DeepSeek、Claude、GPT等)
- 可以加载自定义的System Prompt
有了OpenCode,AI不只是"说
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。