javascript代码混淆工具
是否有推荐的javascript代码混淆工具 我在stackoverflow中搜索过,有人建议使用“YUI压缩机” 但是,它只需执行以下操作: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
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
功能。查看更多信息。