美文网首页js逆向
AST转化网易易盾的部分代码

AST转化网易易盾的部分代码

作者: 后山小鲨鱼 | 来源:发表于2020-07-08 15:59 被阅读0次

用AST把

转成这样

打开网站https://blogz.gitee.io/ast/
把代码复制到这个网站解析成AST

分析一下
1.遍历ObjectProperty节点
2.获取它的key,value
3.得到key的值
4.替换value里面的id为key
5.保存替换后的结果

代码如下:

const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const t = require("@babel/types");
const generator = require("@babel/generator").default;
 
const fs = require('fs');
//读取要转换的js
let jscode = fs.readFileSync("./yuan.js", {
    encoding: "utf-8"
});


let newF = []
const visitor = {
    "ObjectProperty"(path)
    { 
        const {key,value} = path.node;
        let fname = key.name
        if(!t.isFunctionExpression(value)) return;
        if(value.id == null){
            value.id = t.identifier(fname)
        }else{
            value.id=t.identifier(fname)
        }
        path.replaceInline(value)
        newF.push(path.toString())
        
    },
}

let ast = parser.parse(jscode);
traverse(ast,visitor);
let {code} = generator(ast);
let newString = newF.join("\n")

fs.writeFile('result.js', newString, (err)=>{}); //把结果写入新的js文件

相关文章

网友评论

    本文标题:AST转化网易易盾的部分代码

    本文链接:https://www.haomeiwen.com/subject/obeccktx.html