本文环境为win10系统,兼容各win系统(只需区分32位及64位操作系统),linux环境请自行下载测试。
一.安装nodejs
安装地址:
https://nodejs.org/zh-cn/download/
打开后,下载长期支持版,然后傻瓜式安装即可。
安装完成后,自动加入了环境变量,在cmd模式下输入 node,查看版本:
出现这个,即表示安装成功。
二.安装babel库
1.什么是Babel?
根据官网介绍,它是一个JavaScript 编译器,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。
对爬虫工程师来说,没有必要那么深入的去了解Babel库的边边角角。只需要去学习如何将复杂难以阅读的代码 改造 成简单易懂的代码,即通过js代码改造js代码。
2.如何安装Babel库?
经过多次多个win系统的采坑后,这里 强烈建议不要全局安装,直接安装到某个目录下即可,安装命令:
npm install @babel/core --save-dev
安装成功示意图:
我们可以 导入某个库,看看是否可以正常调用:
在导入 @babel/parser 库后没有报错,那说明可以正常使用babel库了。
三.学习babel库
JavaScript源代码转AST结构,@babel/parser,代码路径:
node_modules\@babel\parser\lib
在 node_modules\@babel\parser\bin\babel-parser.js 该文件中有一段打印AST的代码,如下:
var filename = process.argv[2]; if (!filename) { console.error("no filename specified"); } else { var file = fs.readFileSync(filename, "utf8"); var ast = parser.parse(file); console.log(JSON.stringify(ast, null, " ")); }
AST结构转JavaScript源代码,@babel/generator,代码路径:
node_modules\@babel\generator\lib\generators
遍历 AST结构 的相关api,@babel/traverse,代码路径:
node_modules\@babel\traverse\lib
该路径下的 path 和scope 子文件夹是学习的重点。
构建新的节点,@babel/types,代码路径:
node_modules\@babel\types\lib
解混淆能用到的api,基本就在这四个目录里面了,建议直接从源代码开始学习。
当然也有很多是不需要弄懂的代码,就看自己的时间了。
说明:本文是 利用AST解混淆先导知识:概念相关 这篇文章的简化版,旨在给星友们一个更愉悦的阅读方式。请勿乱喷。
欢迎关注本人微信公众号,谢谢!