gulp + javascript-obfuscator 混淆代码

javascript-obfuscator 相关参考 

前端js代码多文件混淆_背负你的星辰的博客-CSDN博客_前端代码混淆前端js代码混淆对于前端开发中的代码安全性一直是一个不可忽视的问题,前段时间公司就要求我们把我们小程序端的代码再进行混淆。看了很多网址,说的不是很明白,因此也就出了这篇文章和大家分享。1:首先分享一下一个插件链接:https://github.com/javascript-obfuscator/javascript-obfuscator。我用的就是这个javascript-obfuscator插件,这个插件使用教程是对单个文件进行混淆加密。2:相对的插件工具链接:https://www.obfuschttps://blog.csdn.net/qq_40358970/article/details/112952264下面直接代码

// gulpfile.js 代码压缩 生成新的文件
var gulp = require('gulp');
minifyCss = require('gulp-minify-css');
minifyHtml = require('gulp-minify-html');
uglify = require('gulp-uglify');

var paths = {
  src: {
    dir: './gen',
    html: './gen/src/html/*.html',
    images: './gen/assets/*.{JPG,jpg,png,gif}',
    script: './gen/src/js/*.js',
    styles: './gen/src/css/*.css',
  },
  dev: {
    dir: './dev'
  }
}

function pressCss () {
  return gulp.src([paths.src.styles], { base: paths.src.dir })
    .pipe(minifyCss())
    .pipe(gulp.dest(paths.dev.dir))
    .on('end', function () {
    });
}

function pressHtml () {
  return gulp.src([paths.src.html], { base: paths.src.dir })
    .pipe(minifyHtml())
    .pipe(gulp.dest(paths.dev.dir))
    .on('end', function () {
    });
}

function pressImg () {
  return gulp.src(paths.src.images, { base: paths.src.dir })
    .pipe(gulp.dest(paths.dev.dir))
    .on('end', function () {
    });
}

function pressJs () {
  return gulp.src([paths.src.script,'./extension/background.js'], { base: paths.src.dir })
    .pipe(uglify())
    .pipe(gulp.dest(paths.dev.dir))
}

function pressJson () {
  return gulp.src(['./extension/manifest.json'], { base: paths.src.dir })
    .pipe(gulp.dest(paths.dev.dir))
}

gulp.task('build', gulp.series(
  gulp.parallel(
    pressHtml,
    pressCss,
    pressImg,
    pressJs,
    pressJson
  )
));

// package.json
{
  "scripts": {
    "build": "gulp build && node ./index.js"
  },
  "devDependencies": {
    "gulp": "^4.0.2",
    "gulp-minify-css": "^1.2.4",
    "gulp-minify-html": "^1.0.6",
    "gulp-rev": "^9.0.0",
    "gulp-uglify": "^3.0.2"
  }
}
// index.json
{
	"compact": false,
	"controlFlowFlattening": true,
	"controlFlowFlatteningThreshold": 1,
	"numbersToExpressions": true,
	"simplify": true,
	"shuffleStringArray": true,
	"splitStrings": true,
	"stringArrayThreshold": 1
}
// index.js
// 检索的相对文件夹
const relativePath = './dev'
// 不需要混淆的js或文件夹
const exitFile = ['jquery-3.6.1.min.js']


var fs = require('fs')
var process = require('child_process');
var readDir = fs.readdirSync(relativePath);


// 需要存在的js
const czFile = []

var filePath = relativePath
var arr = new Array()
readFile(readDir, filePath)
// 读取相对路径下的所有文件
function readFile(readDir, filePath) {
	if (readDir.length > 0) {
		for (var i = 0; i < readDir.length; i++) {
			scannerFile(readDir[i], filePath)
		}
	}
}
// 扫描文件进行检索出js文件进行混淆
function scannerFile(file, filePath) {
	console.log("file-----" + file);
	var readdirpath = ""
	if (filePath == './') {
		readdirpath = filePath + file
	} else {
		readdirpath = filePath + "/" + file
	}
	if (exitFile.indexOf(file) < 0) {
		console.log('-->Start entering FS');
		fs.stat(readdirpath, (err, data) => {
			if (err) {
				console.log(err);
			} else {
				if (data.isDirectory()) {
					console.log('-->isDirectory:' + file);
					var readChildDir = fs.readdirSync(readdirpath);
					console.log(readChildDir);
					readFile(readChildDir, readdirpath)
				} else {
					console.log('-->isNotDirectory:' + file);
					if (file.indexOf('.js') >= 0 && file.indexOf('.json') < 0) {
						// 开始混淆代码
						console.log('-->Start confusing code:' + file);
						var cmd = ' javascript-obfuscator ' + readdirpath + ' --config index.json --output ' + readdirpath;
						process.exec(cmd, function(error, stdout, stderr) {
							console.log("error:" + error);
							console.log("stdout:" + stdout);
							console.log("stderr:" + stderr);
						});
						arr.push(readdirpath)
					} else {
						console.log('Non-folder - Non-js code :' + file);
					}
				}
			}
		})

	} else {
		console.log('-->skip------------');
	}
}

使用

1. 确保全局安装  npm install javascript-obfuscator -g

2. npm run build 生成 dev 文件就是混淆后的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 `gulp-useref` 并过滤指定 js 文件的示例: ```javascript const gulp = require('gulp'); const useref = require('gulp-useref'); gulp.task('build', function() { return gulp.src('src/*.html') .pipe(useref({ searchPath: ['src', '.'] })) // 过滤掉不需要处理的 js 文件 .pipe(gulp.dest('dist')); }); ``` 在这个示例中,我们使用 `gulp-useref` 来处理 HTML 文件,并将注释块中引用的 JS、CSS 文件合并到一个或多个文件中。同时,我们通过 `searchPath` 属性指定了搜索路径,这样 `gulp-useref` 就能够正确地解析 HTML 文件中的相对路径了。 接着,我们通过 `pipe` 方法将处理后的文件输出到 `dist` 目录中。在这个过程中,我们也可以使用 `gulp-if` 来过滤掉不需要处理的文件。例如,如果我们只想处理所有 `src` 目录下的 JS 文件,可以这样写: ```javascript const gulp = require('gulp'); const useref = require('gulp-useref'); const gulpIf = require('gulp-if'); gulp.task('build', function() { return gulp.src('src/*.html') .pipe(useref({ searchPath: ['src', '.'] })) // 只处理 src 目录下的 js 文件 .pipe(gulpIf('**/*.js', gulp.dest('dist'))) .pipe(gulp.dest('dist')); }); ``` 在这个示例中,我们使用 `gulp-if` 来过滤掉不需要处理的 JS 文件,而只处理 `src` 目录下的 JS 文件。这样,我们就能够只处理我们需要的文件了。 希望这个回答能够帮到你,如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值