如何对Javascript代码进行二次压缩(混淆)

对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间。但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法)可以被混淆,而属性的变量(方法)就不行了。我们自己是知道这些属性(方法)是不会被外部访问和修改的,所以可以很放心地对其进行二次混淆。那么,如何自己定义混淆规则并进行二次混淆呢?

首先,页面上至少要用一个输入框和一个按钮。我这里设置有2个输入框,分别加上“uncompress”和“compress”两个类,表示为压缩和已压缩的。点击按钮,就开始压缩。

然后,自定义混淆规则,把压缩前和压缩后的字符串分别存在两个数组里面,然后,使用replace方法进行替换就可以了。代码如下:

var beforeArr = ['addUniqueClass', 'longValue', 'IDontKnowWhatIsIt'],afterArr = ['au', 'lv', 'idk'];
$("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {value = value.replace(beforeArr[i], afterArr[i]);}$(".compressed").val(value);
});

好了,当我们用这个方法去压缩代码后,觉得不放心,看看是不是确实都替换了。在代码里面搜一搜有没有压缩前的字符串,发现还真有,这是怎么回事?原来,当我们只是用字符串替换字符串时,是只能替换一次的,如果后面还有就无法继续替换了。不过正则表达式里面有全局替换的功能,所以把字符串转换成全局的正则表达式就可以了。

$("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {var exg = new RegExp(beforeArr[i], 'g');value = value.replace(exg, afterArr[i]);}$(".compressed").val(value);
});

  

这下,代码里面就搜不到压缩前的字符串了。

但还有一点不满意,就是维护性差了些,如果添加新的规则还好办,如果要修改或删除原有规则,那就没那么容易一一对应了。所以要做成映射关系比较直观的数组,像这样:

var Arr = ['addUniqueClass → au','longValue → lv', 'IDontKnowWhatIsIt → idk'
];

  

这样,看起来就直观多了,剩下的只是把箭头两侧的字符串分别存在两个数组里面就可以了。

另外,为了避免像$这样的符号无法被识别出来,可以在正则表达式前面加上'\\'。

完整代码如下:

var Arr = ['addUniqueClass → au','longValue → lv', 'IDontKnowWhatIsIt → idk'
],beforeArr = [],afterArr = [],arrLength = Arr.length;
for(var i = 0; i < ArrLength; i ++){var value = arr[i].split('→')[0].trim();beforeArr.push(value);value = arr[i].split('→')[1].trim();afterArr.push(value);
}$("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {var exg = new RegExp('\\' + beforeArr[i], 'g');value = value.replace(exg, afterArr[i]);}$(".compressed").val(value);
});

  

转载于:https://www.cnblogs.com/linzb1993/p/5949281.html

如何对Javascript代码进行二次压缩(混淆)相关推荐

  1. [转载]用UglifyJS2合并压缩混淆JS代码——javascript系列

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  2. java 代码压缩javascript_利用Java来压缩 JavaScript 代码详解

    通过移除空行和注释来压缩 JavaScript 代码 /** * This file is part of the Echo Web Application Framework (hereinafte ...

  3. java 代码压缩javascript_通过Java压缩JavaScript代码实例分享

    通过移除空行和注释来压缩 javascript 代码 /** * this file is part of the echo web application framework (hereinafte ...

  4. Java 压缩/混淆 JavaScript 代码

    基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少.我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便.虽然咱们可以外部调用 node 等专 ...

  5. JavaScript中的二叉搜索树删除节点代码

    JavaScript中的二叉搜索树删除节点代码 提示:只有删除的节点的操作哦~ 二叉搜索树的删除节点操作: 删除二叉搜索树节点会出现的情况 1.删除的是叶子节点,即其左右均为空节点 2. 删除的是只有 ...

  6. 100个JavaScript代码片段

    实现字符串长度截取 function cutstr(str, len) {var temp;var icount = 0;var patrn = /[^\x00-\xff]/;var strre = ...

  7. mysql插入ㄖ_原生JavaScript代码100个实例

    1.原生JavaScript实现字符串长度截取 function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^\x00-\x ...

  8. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】

    作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...

  9. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

最新文章

  1. 百度最近开源了分布式配置中心,名叫BRCC
  2. python2和python3区别
  3. 长沙校园招聘总结-做为技术面试官
  4. 搭建和测试Android JAVA NDK
  5. PST文件的读取(待整理)
  6. 计算机网络(十四)-CSMA/CD协议
  7. 微服务精华问答:什么是微服务架构中的DRY?| 技术头条
  8. java如何恢复视图_Java - 如何用reformation+Moshi创建回收站视图_java_酷徒编程知识库...
  9. 从技术、服务到共创 声网 Agora 携手合作伙伴共建 RTC 生态
  10. linux下升级php5.4到php5.6
  11. mysql 查询 一天的时间_MySQL怎么查询每天打卡的最早时间和最晚时间?
  12. React 深度学习:ReactFiberRoot
  13. 【ntp时间校准配置】
  14. MySQL数据仓库基础
  15. 阿里云国际版云服务器自助诊断系统-Unirech
  16. 基于pam实现的批量执行命令工具-Cyberark
  17. 微信跳一跳辅助之JAVA版(最容易理解的算法)实现原理分析
  18. 密度聚类:OPTICS算法详解
  19. 拷贝主机文件到VirtualBox虚拟机
  20. Python中ASCII转十六进制、C中BCD转十进制、十六进制学习记录

热门文章

  1. 数据库去重查询问题详解
  2. windows docker 空出C盘 迁移到其他盘
  3. 软件公司管理基本原则
  4. 多个摄像机之间的切换
  5. 数据结构03栈和队列
  6. Oracle Study之--Oracle等待事件(5)
  7. Exchange 2010无法安装问题解决方法
  8. multi-mechanize error: can not find test script: v_user.py问题
  9. Unity Camera的两种模式
  10. php中Session的生成机制、回收机制和存储机制探究