WebAssembly案例分析和爬取实战
WebAssembly 是一种可以使用非 JavaScript 编程语言编写代码并且能在测览器上运行的技术方案。
前面我们也简单介绍过了,借助 Emscripten 编译工具,我们能将 C/C++ 文件转成 wasm 格式的文件,JavaScript 可以直接调用该文件执行其中的方法。
这样做的好处如下:
-
一些核心逻辑(比如 API 参数的加密逻辑)使用 C/C++ 实现,这样这些逻辑就可以 “隐藏” 在编译生成的 wasm 文件中,其逆向难度比 JavaScript 更大。
-
一些逻辑是基于 C/C++ 编写的,有更高的执行效率,这使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行。
对于这种类型的网站,一般我们会看到网站会加载一些 wasm 后缀的文件,这就是 WebAssembly 技术常见的呈现形式,即原生代码被编译成了 wasm 后缀的文件,JavaScript 通过调用 wasm 文件得到对应的计算结果,然后配合其他 JavaScript 代码实现页面数据的加载和页面的喧染。
本节中,我们就来通过一个集成 WebAssembly 的案例网站来认识下 WebAssembly,并通过简易的模拟技术来实现网站的爬取。