Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript代码混淆工具_Javascript_Obfuscation - Fatal编程技术网

javascript代码混淆工具

javascript代码混淆工具,javascript,obfuscation,Javascript,Obfuscation,是否有推荐的javascript代码混淆工具 我在stackoverflow中搜索过,有人建议使用“YUI压缩机” 但是,它只需执行以下操作: 删除注释/空白/新行 替换局部变量 或者其他什么 但它不会替换一个对象的属性 假设我有这样一个代码: var a=obj.fun(); var b=obj.pro; var xxx,yy,zz; xxx=obj['yy'](); yy=obj['zz']; 我想要这样的东西: var a=obj.fun(); var b=obj.pro; var

是否有推荐的javascript代码混淆工具

我在stackoverflow中搜索过,有人建议使用“YUI压缩机”

但是,它只需执行以下操作:

  • 删除注释/空白/新行

  • 替换局部变量

  • 或者其他什么

  • 但它不会替换一个对象的属性

    假设我有这样一个代码:

    var a=obj.fun();
    var b=obj.pro;
    
    var xxx,yy,zz;
    xxx=obj['yy']();
    yy=obj['zz'];
    
    我想要这样的东西:

    var a=obj.fun();
    var b=obj.pro;
    
    var xxx,yy,zz;
    xxx=obj['yy']();
    yy=obj['zz'];
    
    然后,即使人们重新格式化我的代码,他甚至不能知道一个对象的属性/方法,除非他重新进行方法/属性替换

    这只是一个例子,我只是想让这个工具做更多的模糊处理,而不仅仅是压缩


    有什么建议吗?

    试试这个。在高级模式下,它还会重构部分代码,并通过这种方式提高性能。

    以我在这方面的有限知识。我建议使用google闭包编译器:


    它说他们做了属性重命名

    Javascript是一种动态类型的语言,与浏览器交互,因此几乎不可能进行适当的分析以找到代码中可以弹出对象的位置

    由于这些原因,您无法安全地重命名对象的属性。

    您应该尝试,它提供了三种写入级别:

  • 第一个是
    WHITESPACE\u ONLY
  • 第二个是
    SIMPLE\u优化
  • 第三个是
    ADVANCED\u优化
  • WHITESPACE_ONLY
    删除注释、修剪换行符和不必要的空格。输出代码与源JavaScript相同

    简单优化
    还重命名局部变量和函数参数

    ADVANCED_optimization
    是最具攻击性的,除了上述两个级别的优化之外,它还可以:

    • 全局变量重命名
    • 删除未调用的函数
    • 函数内联
    例如:

    //INPUT CODE
    function unusedFunction(note) {
      alert(note['text']);
    }
    
    function displayNoteTitle(note) {
      alert(note['title']);
    }
    
    var flowerNote = {};
    flowerNote['title'] = "Flowers";
    displayNoteTitle(flowerNote);
    
    仅空格
    结果为:

    //WHITESPACE_ONLY OUTPUT CODE
    function unusedFunction(note){alert(note["text"])}function displayNoteTitle(note){alert(note["title"])}var flowerNote={};flowerNote["title"]="Flowers";displayNoteTitle(flowerNote);
    
    简单的优化结果是:

    //SIMPLE_OPTIMIZATIONS OUTPUT CODE
    function unusedFunction(a){alert(a.text)}function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);
    
    //ADVANCED_OPTIMIZATIONS OUTPUT CODE
    alert("Flowers");
    
    高级优化
    结果是:

    //SIMPLE_OPTIMIZATIONS OUTPUT CODE
    function unusedFunction(a){alert(a.text)}function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);
    
    //ADVANCED_OPTIMIZATIONS OUTPUT CODE
    alert("Flowers");
    

    我认为
    SIMPLE\u optimization
    ADVANCED\u optimization
    可以满足您的需要。

    似乎
    ADVANCED\u OPTIMIZATIONS
    模式可能会更改对象的属性或方法,但是如果一个方法公开供外部使用呢?有编码标准吗?是的,会的。这使得它强大而危险。这里有两种解决方案——首先将所有js合并到一个文件中,然后进行编译。这个用途非常有限。第二个是探索外部程序的用法——您需要手动声明要保留的符号<代码>窗口['dontReplaceme']=dontReplaceme
    将保留
    dontReplaceme
    功能。查看更多信息。