若HTML源码被混淆,可通过五种方法解析:一、追踪JS执行流程并查看渲染后DOM;二、提取并手动执行嵌入式解密逻辑;三、禁用JavaScript查看原始响应;四、用抓包工具捕获未加密HTTP响应;五、反编译分析WebAssembly解密模块。

如果您在浏览器中查看网页源代码时发现HTML内容被混淆或加密,无法直接阅读原始结构和逻辑,则可能是开发者使用了JavaScript动态解密或字符串编码技术。以下是针对此类加密HTML源码的常见解析方法:
一、检查页面加载时的JavaScript执行流程
许多前端加密方案依赖于页面加载后立即执行的JS脚本对DOM进行动态还原,原始HTML可能被隐藏在变量、注释或base64字符串中,需追踪初始化逻辑。
1、打开浏览器开发者工具,切换到“Sources”面板,刷新页面,观察首次加载的JS文件执行顺序。
2、在“Console”中输入document.documentElement.outerHTML,查看当前渲染完成后的完整HTML结构。
立即学习“前端免费学习笔记(深入)”;
3、搜索页面中是否存在形如eval(、atob(、decodeURIComponent(或自定义decrypt(等函数调用,定位解密入口点。
二、提取并手动执行嵌入式解密逻辑
部分加密HTML将核心内容以编码形式存于script标签内,通过即时执行函数(IIFE)解密并写入body,可将其复制至独立环境运行以获取明文。
1、在“Elements”面板中查找包含大量乱码字符串的<script>块,尤其是紧邻</body>前的脚本。
2、右键该script节点,选择“Break on — attribute modifications”,或在可疑函数首行设置断点,暂停执行。
3、在断点暂停状态下,于“Console”中执行console.log(解密函数名(加密字符串变量)),验证输出是否为可读HTML。
4、若解密函数依赖全局变量或闭包状态,需将整个script块复制到新tab的控制台中,补全依赖后执行。
三、禁用JavaScript后查看原始响应内容
某些站点在服务端返回已加密HTML,但未强制依赖JS解密;禁用JS可绕过前端还原步骤,直接暴露传输层原始载荷。
1、打开开发者工具,进入“Settings” → “Preferences” → 勾选“Disable JavaScript”。
2、刷新页面,切换至“Network”面板,找到主HTML请求(通常为Document类型),点击进入。
3、在“Response”选项卡中查看未经JS处理的原始响应体,注意是否存在/*encrypted:...*/注释或data-html="..."属性值。
4、若响应体为base64或十六进制字符串,使用atob("字符串")或String.fromCharCode(...)在控制台中尝试解码。
四、利用Fiddler或mitmproxy捕获未加密的HTTP响应
当加密发生在服务端且响应内容在传输过程中未被二次混淆时,抓包工具可截获原始HTML字节流,避免受客户端JS干扰。
1、配置浏览器代理指向本地Fiddler或mitmproxy监听地址(如127.0.0.1:8888)。
2、刷新目标页面,在抓包工具中筛选出状态码为200且Content-Type为text/html的请求。
3、右键该请求,选择“Copy Response Body”或“Open Response in Notepad++”,检查是否含明文HTML标签。
4、若响应头中存在Content-Encoding: gzip,需先在Fiddler中启用“Decode responses”选项再查看。
五、分析WebAssembly模块中的解密逻辑
高级保护方案可能将核心解密算法编译为Wasm模块,通过fetch()加载.wasm文件并在内存中执行,需结合wabt工具链反编译分析。
1、在“Network”面板中筛选扩展名为.wasm的资源,下载该二进制文件。
2、使用wabt提供的wasm-decompile命令将wasm转为wat文本格式:wasm-decompile payload.wasm -o payload.wat。
3、在生成的wat文件中搜索关键词decrypt、html、string或memory.grow,定位数据读取与拼接逻辑。
4、确认导出函数名(如run_decrypt),在控制台中通过WebAssembly实例调用该函数,并传入已知加密输入验证行为。











