美文网首页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