WebAssembly案例分析和爬取实战

WebAssembly 是一种可以使用非 JavaScript 编程语言编写代码并且能在测览器上运行的技术方案。

前面我们也简单介绍过了,借助 Emscripten 编译工具,我们能将 C/C++ 文件转成 wasm 格式的文件,JavaScript 可以直接调用该文件执行其中的方法。

这样做的好处如下:

  • 一些核心逻辑(比如 API 参数的加密逻辑)使用 C/C++ 实现,这样这些逻辑就可以 “隐藏” 在编译生成的 wasm 文件中,其逆向难度比 JavaScript 更大。

  • 一些逻辑是基于 C/C++ 编写的,有更高的执行效率,这使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行。

对于这种类型的网站,一般我们会看到网站会加载一些 wasm 后缀的文件,这就是 WebAssembly 技术常见的呈现形式,即原生代码被编译成了 wasm 后缀的文件,JavaScript 通过调用 wasm 文件得到对应的计算结果,然后配合其他 JavaScript 代码实现页面数据的加载和页面的喧染。

本节中,我们就来通过一个集成 WebAssembly 的案例网站来认识下 WebAssembly,并通过简易的模拟技术来实现网站的爬取。

案例介绍

模拟执行

总结

本节中,我们了解了 WebAssembly 的基本概念并分析了一个 WebAssembly 的示例并用 Python 模拟执行 wasm 文件实现了数据爬取。