精华内容
下载资源
问答
  • 批量压缩混淆js文件

    2018-01-17 14:36:03
    批量压缩混淆js文件批量压缩混淆js文件批量压缩混淆js文件
  • 压缩工具 YUI Compressor ...使用工具进行混淆压缩js/css文件 必须保证电脑上装有java运行环境 打开cmd窗口 输入命令进行混淆压缩,将命令中的文件名替换为自己的文件名,点击回车 java -jar yuicompressor-2.

    压缩工具

    YUI Compressor
    github: https://github.com/yui/yuicompressor
    下载地址:https://github.com/yui/yuicompressor/releases
    在这里插入图片描述

    解压提取工具包

    将压缩文件中的jar包复制到本地任意文件夹中
    在这里插入图片描述
    在这里插入图片描述

    使用工具进行混淆压缩js/css文件

    必须保证电脑上装有java运行环境

    打开cmd窗口
    在这里插入图片描述
    输入命令进行混淆压缩,将命令中的文件名替换为自己的文件名,点击回车
    java -jar yuicompressor-2.4.8.jar demo.js > demo.min.js

    在这里插入图片描述
    无报错标识压缩成功
    在这里插入图片描述
    结束

    展开全文
  • js分包混淆压缩-python

    2018-06-22 16:35:04
    cocos2dx-js 分批次混淆压缩文件,ant+ Closure Compiler + python
  • javaScript 压缩混淆混淆

    千次阅读 2019-09-03 23:29:13
    javaScript 压缩混淆反混淆压缩混淆的意义1. 压缩2. 混淆如何压缩混淆案例Unicode转义序列(Unicode Escape Sequence)压缩代码(Compact code)转换对象的键(Transform Object Keys)死代码注入(Dead Code ...

    压缩混淆的意义

    1. 压缩

    压缩顾名思义就是将js文件大小进行缩减。 一般情况下可以去除代码中的 空格 换行 注释等来实现。文件大小影响下载速度,通过压缩能够提高下载速度。

    在压缩情况下可以通过对代码格式来进行还原,基本不会改变代码内容。

    2. 混淆

    与压缩不同,对js脚本进行混淆操作的主要目的是不让其他人员肆无忌惮的获取到自己编写的js代码,保护自己的劳动成果或者不被他人破解等。
    混淆常用的操作有变量重命名,增加前缀,使用字符串数组等来进行。

    如何压缩混淆

    这里使用压缩工具为javascript-obfuscator可以在网站上进行使用,也可以使用npm进行本地安装使用。

    另外也有其他js代码混淆工具, 这里不一一说明。

    案例

    /**
     * @author superlin10
     */
    
    const sayContent = {
        'hello': 'hello',
        'world': 'world'
    }
    function say(content) {
        console.log(content);
        return;
    }
    
    say(sayContent['hello']);
    say(sayContent['world']);
    

    将这段代码只使用如下图所示的压缩选项进行压缩我们得到
    压缩配置

    var superLin10a=['\x68\x65\x6c\x6c\x6f','\x77\x6f\x72\x6c\x64','\x6c\x6f\x67'];(function(c,d){var e=function(f){while(--f){c['push'](c['shift']());}};e(++d);}(superLin10a,0x9c));var superLin10b=function(c,d){c=c-0x0;var e=superLin10a[c];return e;};const sayContent={};sayContent['\x68\x65\x6c\x6c\x6f']=superLin10b('0x0');sayContent[superLin10b('0x1')]='\x77\x6f\x72\x6c\x64';function say(c){console[superLin10b('0x2')](c);return;}say(sayContent['\x68\x65\x6c\x6c\x6f']);say(sayContent[superLin10b('0x1')]);
    

    现在我们来分析各个参数的作用

    Unicode转义序列(Unicode Escape Sequence)

    将代码中的字符串转义为Unicode序列在代码中出现\x68 这样的字眼, 这个就是典型的unicode字符,这个可以通过自行做字符转义。 或者直接加上引号变成字符串丢在浏览器的控制台(console)中即可。
    unicode转义

    压缩代码(Compact code)

    这选项对应着压缩。 代码中的 空格 换行 注释 都消失了。这里可以使用代码格式化工具来进行还原。

    转换对象的键(Transform Object Keys)

    改变对象的键, 将原本清楚的对象键名进行拆分。 将原有的sayContent对象拆分成多句。

    const sayContent = {};
    sayContent['hello'] = superLin10b('0x0');
    sayContent[superLin10b('0x1')] = 'world';
    

    死代码注入(Dead Code Injection)

    这个选项的意思是在代码中插入一段不会影响正常代码运行的死代码。例如这里就出现了

    var superLin10a = ['hello', 'world', 'log'];
    (function (c, d) {
        var e = function (f) {
            while (--f) {
                c['push'](c['shift']());
            }
        };
        e(++d);
    }(superLin10a, 0x9c));
    

    标识符生成(Identifier Names Generator)

    对应标识符名称修改。这里say方法的参数变为c, 这就是标识符从content替换为c.(这个选项有两个,这里使用的是mangled)

    前缀(Indentifiers PreFix)

    对应着修改变量名的前缀, 在这里我添加了superLin10这个前缀,所以在代码中的变量会加上他

    字符串数组(String Array)

    使用字符串数组, 可以将使用到的对象键名,字符串常量等放置在一个数组中。 这样可以在用到的时候冲数组中进行取值。
    例如示例中的 var superLin10a = ['hello', 'world', 'log'];

    总结

    js代码的压缩混淆能够带来一定的安全性,但是这并不是绝对的。只要有耐心还是能够一步步破解的。 另外混淆还会带来体积增大性能变差等问题,需要对其进行权衡,不能一味的进行混淆。

    另外这里只介绍了常用的参数,其他参数可以自己查看下方的说明。如果还觉得不够可以尝试使用混淆的代码再次进行混淆。

    展开全文
  • 应项目需要,采用yuicompressor对js/css文件进行压缩混淆,于是编写了一个java文件,接收参数目前只开放两个,一个为目录(可以是整个项目路径),一个是是否混淆(默认true)。程序会循环目录下所有的js/css文件,...

    应项目需要,采用yuicompressor对js/css文件进行压缩混淆,于是编写了一个java文件,接收参数目前只开放两个,一个为目录(可以是整个项目路径),一个是是否混淆(默认true)。程序会循环目录下所有的js/css文件,已经是min文件的除外,进行压缩之后覆盖原文件,因此一般用于开发完成测试之前做。日志文件会显示出处理的具体文件,以及由于编写不规范导致无法压缩的文件。个人碰到过一个CSS文件,文件末尾多了写了/*!,整个压缩过程就一直停留在这里了。因此使用此工具要求文件编写要规范。

    public class JsAndCssZip {
    
        static Logger logger = Logger.getLogger(JsAndCssZip.class.getName());
    
        int linebreakpos = -1;// 无断行
    
        boolean munge = true;// 混淆
    
        boolean verbose = false;// 显示信息性消息和警告
    
        boolean preserveAllSemiColons = true; // 保留所有分号
    
        boolean disableOptimizations = true; // 禁用所有微优化
    
        public static void main(String[] args) {
            PropertyConfigurator.configure("./src/log4j.properties");
            if (args == null || args.length == 0) {
                logger.error("pls input the file or dir params!");
                return;
            }
            File file = new File(args[0]);
            logger.debug("zip path:" + args[0]);
            if (!file.exists()) {
                logger.error("the file or dir do not exist!");
                return;
            }
            JsAndCssZip inst = new JsAndCssZip();
            if (args.length > 1) {
                inst.munge = args[1].equalsIgnoreCase("false") ? false : true;
            }
            logger.debug("munge:" + inst.munge);
            Date d = new Date();
            logger.debug("start time : " + d);
            try {
                inst.checkFile(file);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            Date d1 = new Date();
            logger.debug("end time " + d1);
            logger.debug("FINISHED AND COST TIME(ms):" + (d1.getTime() - d.getTime()));
        }
    
        public void checkFile(File file) throws Exception {
            if (file.getName().endsWith(".svn"))
                return;
            if (file.isFile()) {
                jsZip(file);
                return;
            }
            File[] files = file.listFiles();
            if (files == null || files.length == 0)
                return;
            for (File f : files) {
                if (file.getName().endsWith(".svn"))
                    return;
                if (file.isFile()) {
                    jsZip(file);
                    continue;
                }
                checkFile(f);
            }
        }
    
        public void jsZip(File file) throws Exception {
            String fileName = file.getName();
            if (fileName.endsWith(".js") == false && fileName.endsWith(".css") == false) {
                return;
            }
            if (fileName.endsWith(".min.js") == true || fileName.endsWith(".min.css") == true) {
                return;
            }
            Reader in = new InputStreamReader(new FileInputStream(file), "utf-8");
            String filePath = file.getAbsolutePath();
            logger.debug("DEAL FILE:" + filePath);
            File tempFile = new File(filePath + ".tempFile");
            Writer out = new OutputStreamWriter(new FileOutputStream(tempFile), "utf-8");
            if (fileName.endsWith(".js")) {
                try {
                    JavaScriptCompressor jscompressor = new JavaScriptCompressor(in, new ErrorReporter() {
                        public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) {
                            if (line < 0) {
                                // logger.error("[WARNING] " + message);
                            }
                            else {
                                // logger.error("[WARNING] " + line + ':' + lineOffset + ':' + message);
                            }
                        }
    
                        public void error(String message, String sourceName, int line, String lineSource, int lineOffset) {
                            if (line < 0) {
                                // logger.error("[ERROR] " + message);
                            }
                            else {
                                // logger.error("[ERROR] " + line + ':' + lineOffset + ':' + message);
                            }
                        }
    
                        public EvaluatorException runtimeError(String message, String sourceName, int line,
                            String lineSource, int lineOffset) {
                            error(message, sourceName, line, lineSource, lineOffset);
                            return new EvaluatorException(message);
                        }
                    });
                    jscompressor.compress(out, linebreakpos, munge, verbose, preserveAllSemiColons, disableOptimizations);
                }
                catch (org.mozilla.javascript.EvaluatorException e) {
                    logger.error("[ERROR] " + file.getPath());
                    out.close();
                    in.close();
                    tempFile.delete();
                    return;
                }
    
            }
            else if (fileName.endsWith(".css")) {
                CssCompressor csscompressor = new CssCompressor(in);
                csscompressor.compress(out, linebreakpos);
            }
    
            out.close();
            in.close();
            file.delete();
            tempFile.renameTo(file);
            tempFile.delete();
        }
    
    }

      需依赖yuicompressor.jar。

    展开全文
  • js压缩混淆工具

    2015-07-02 20:46:39
    js压缩混淆工具,具有良好的操作界面,可对文件夹下的js文件js代码块进行压缩混淆
  • javascript混淆压缩

    千次阅读 2018-05-25 15:55:57
    做Web前端开发,总是要考虑页面的打开速度,如果文件数量越少、文件长度越小,就可以直接的提升网页的访问速度。UglifyJS是一个Javascript开发的通用的语法分析、代码压缩、...javascript混淆压缩_在线javascript混...

    做Web前端开发,总是要考虑页面的打开速度,如果文件数量越少、文件长度越小,就可以直接的提升网页的访问速度。UglifyJS是一个Javascript开发的通用的语法分析、代码压缩、代码优化的一个工具包。UglifyJS是基于Nodejs环境开发,支持CommonJS模块系统的任意的Javascript平台。本工具基于UglifyJS2开发。


    javascript混淆压缩_在线javascript混淆压缩工具_程序开发_好工具网  http://www.nicetool.net/app/uglifyjs.html

    展开全文
  • JS代码的压缩和代码的混淆可以使得文件变小,还可以有效的防止网站的数据被网络爬虫获取。代码混淆可以把变量名变成a, b, c等字母,可以防止爬虫获取到JS代码中的Ajax,从而防止网站数据被他人获取。目前最流行的...
  • 由于我们当前游戏框架的结构是平台形式的就是一个大厅里面有若干个子游戏,所以在发布的时候得区分子游戏和大厅 了解了一下 project.json 里面有一个 jsList 可以把所有放进去的js文件压缩混淆成一个大的文件但是...
  • 【gulp】JS文件压缩混淆与雪碧图

    千次阅读 2017-03-15 18:39:01
    插件:gulp-uglify用于压缩混淆JS文件;gulp.spritesmit用于制作雪碧图 【JS文件压缩混淆】 var gulp = require("gulp"); var uglifyjs = require("gulp-uglify");//压缩混淆js gulp.task("hunxiao",...
  • JavaScript压缩混淆我们都知道JavaScript是一种在客户端浏览器中执行的解释型语言。浏览器以纯文本的形式下载JavaScript,然后在需要的时候执行JavaScript代码。通过使用浏览器的查看源代码功能,用户总是能够...
  • 将要压缩js文件放在批处理文件的同一路径,yuicompressor.jar也放在同一路径运行批处理文件,在该路径下会生成一个min文件夹,里面的*.min.jar就是压缩混淆后的js文件css文件同上操作一下是批处理脚本的内容:...
  • 支持大的js文件混淆压缩处理. 为了方便大家,特意提供了一个反混淆工具供大家分析,学习使用. 【注】对于一些核心的js,不建议使用在线js混淆压缩服务,因为在线工具都有人服务日志等,可能会被泄露
  • JS 压缩混淆

    2017-07-19 10:25:07
    昨天接到了一个任务,H5 app 的JS CSS 需要压缩混淆。 然后怎么办呢? 首先理解下压缩混淆是指什么 压缩 compress: 去掉空格,换行,注释等,格式紧凑,节约存储空间。 混淆 obfuscate/garble:替换变量名或...
  • gulp 压缩合并Css 混淆压缩js

    千次阅读 2016-04-28 00:07:49
    gulp 压缩css 混淆压缩js1.安装gulp环境 pm install gulp -g (global环境) npm install gulp –save-dev (项目环境)2.安装所需要的库 npm install gulp-minify-css gulp-concat gulp-uglify gulp-rename del –...
  • 使用UglifyJS进行js代码压缩混淆混淆后的代码的可读性...例如将 a.js 进行压缩混淆后输出为aa.js(不指定输出文件,将压缩混淆后的代码直接在控制台输出)(这里演示的是全局,当局部安装时,需要指定到uglifyjs的目录
  • 文章目录项目目录输出目录实现package.jsongulpfile.js执行命令 项目目录 输出目录 实现 package.json { "name": "project", "version": "1.0.0", "description": "", "main": "gulpfile.js", "scripts": { ...
  • 原本有一个混淆压缩工具,因为内部服务器挂掉了工具也没有了。 使用的压缩算法来自http://dean.edwards.name/packer/ 。 这里只是做了一些简单的合并调用。 上面的算法有一些缺点,如果源码缺少必要的分号或者...
  • webpack 混淆压缩 javascript 后端代码

    千次阅读 2017-09-10 13:50:12
    需求背景JavaScript 是脚本... 这个时候, 就需要对源码进行混淆压缩处理. 经过处理后的代码体积变小, 不再可读. 本篇介绍利用 webpack 打包工具来完成对后端代码的混淆压缩.安装配置 webpack 安装 npm i babel-core b
  • js批量压缩混淆工具

    2011-09-22 19:45:49
    可以将js文件批量压缩混淆。 配制compress.ini 文件后,请执行 batchyuicompressor.jar。 2011.9 修复.svn目录被复制的问题
  • 下载 yuicompressor jar包到本地路径 ...运行批处理文件,在该路径下会生成一个min文件夹,里面的*.min.jar就是压缩混淆后的js文件 css文件同上操作 一下是批处理脚本的内容: echo off set PathName=%cd%se...
  • JavaScript压缩混淆

    2017-06-09 09:46:37
    为什么要压缩JavaScript | Why Compression 随着Ajax的应用普及,JavaScript已经得到了越来越多程序员的重视。JS不好调试,代码多了也会严重影响速度,当你...要想JS的下载速度快,就需要尽量减少js文件的大小,另外
  • 这篇对之前那边进行稍微一点修改 js压缩 并不是网上那种混淆 网上那种压缩混淆没什么卵用.分分钟给弄回来 也是逗死我了 只是一些简单的混淆而已 解密只需要将 eval 替换成 document.write就行了 分分钟回来 ...
  • 混合开发:node grunt混淆压缩 android中的angularjsionic 文件;在做android混合开发,web部分中的文件时用angularjs/ionic 写的;我们经常会用到Directive,Config,Factory,Controller;我在做混淆的时候,先要...
  • js 代码压缩混淆

    2021-01-04 15:04:35
    需求: 前端js代码压缩混淆 目的: 增加破解难度,一点点 使用工具: uglifyjs uglifyjs 文档(包含安装): https://github.com/LiPinghai/UglifyJSDocCN bat脚本例子(方便快速进行文件压缩混淆): @echo...
  • JS/CSS文件批量压缩混淆、美化、格式化工具》功能特点:1、可以在备份目录下生成还原脚本。此还原脚本的作用不是压缩备份原文件,而是可以将最近一次用SoCompressor备份的原文件以其备份前的文件名还原到其各自...
  • 它兼顾了压缩混淆和加密三大功能,用户可以选择只压缩或只混淆或只加密,也可以选择既混淆又加密,给Javascript代码加上双保险。它还可以将乱七八糟的代码转化成排版工整的易于阅读的代码。它还可以进行批量文件...
  • js混淆压缩加密分析

    千次阅读 2016-10-12 17:15:09
    请看原文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,415
精华内容 5,366
关键字:

js文件混淆压缩实现