WebPack插件实现:打包之后自动混淆加密JS文件

news2024/10/6 2:24:24

在WebPack中调用JShaman,实现对编译打包生成的JS文件混淆加密

一、插件实现

1、插件JShamanObfuscatorPlugin.js,代码:

class JShamanObfuscatorPlugin {
apply(compiler) {
compiler.hooks.emit.tapAsync('JShamanObfuscatorPlugin', (compilation, callback) => {
Object.keys(compilation.assets).forEach((fileName) => {
// 检查文件名是否以.js结尾
if (fileName.endsWith('.js')) {
const asset = compilation.assets[fileName];
const input = asset.source();

try {

var obfuscatedCode = input;

/**
* JShaman配置部分
*/
//JShaman.com VIP码,免费使用设为"free",如已购买VIP码,在此修改
const vip_code = "free";
//混淆加密参数配置,免费使用时无需配置
//参数详细说明请参见JShaman官网,设为"true"启用功能、设为"false"不启用
const config = {
//压缩代码
compact: "true",
//混淆全局变量名和函数名
renameGlobalFunctionVariable: "false",
//平展控制流
controlFlowFlattening: "true",
//僵尸代码植入
deadCodeInjection: "false",
//字符串阵列化
stringArray: "true",
//阵列字符串加密
stringArrayEncoding: "false",
//禁用命令行输出
disableConsoleOutput: "false",
//反浏览器调试
debugProtection: "false",
//时间限定
time_range: "false",
//时间限定起始时间、结束时间,时间限定启用时此2参数生效
time_start: "20240118",
time_end: "20240118",
//域名锁定
domainLock: [],
//保留关键字
reservedNames: [],
}
/**
* 以下代码实现向JShaman.com WebApi发送请求完成JavaScript混淆加密
*/
const request = require("sync-request");
//使用free为VIP码、免费调用JShaman WebAPI接口时,不能配置参数,仅可实现较低强度代码保护
//如果购买了JShaman的VIP码,则可启用配置,实现高强度JavaScript混淆加密
var json_options = {
json: {
//JavaScript代码
"js_code": input,
//JShaman VIP码
"vip_code": vip_code,
}
}
if(vip_code != "free"){
//混淆加密参数
json_options.json.config = config;
console.log(config);
}
console.log("正在向JShaman.com提交混淆加密请求...")
//发送请求到JShaman服务器,进行JavaScript混淆加密
var res = request("POST", "https://www.jshaman.com:4430/submit_js_code/", json_options);
var json_res = JSON.parse(res.getBody('utf8'));
//返回状态值为0是成功标识
if(json_res.status == 0){

//输出返回消息
console.log(json_res.message);

obfuscatedCode = json_res.content.toString();

} else {
console.error("向JShaman.com发送请求时出现错误:", json_res, "混淆加密失败...");
}
// 更新compilation.assets中的文件内容为混淆后的代码
compilation.assets[fileName] = {
source: () => obfuscatedCode,
size: () => obfuscatedCode.length,
};

} catch (error) {
console.error(error);
// 在这里可以决定如何处理错误,比如跳过当前文件或抛出异常
}
}
});

// 调用callback以通知Webpack插件处理完成
callback();
});
}
}
module.exports = JShamanObfuscatorPlugin;

2、webpack.config.js配置代码:

const path = require('path');
const JShamanObfuscatorPlugin = require('./JShamanObfuscatorPlugin');
module.exports = {
entry: './example.js',
plugins: [
new JShamanObfuscatorPlugin(),
],
output: {
path: path.resolve(__dirname, ''),
filename: 'bundle.js',
},
};

二、功能测试

Example.js,代码:

var mod = require("./mod.js");
mod.fun();
console.log("done.");

Mod.js,代码:

exports.fun = function (){
var name = "Tom"
var age = 100;
console.log(name + " is " + age + " years old.");
}

Webpack编译:

生成的bundle.js,其中的js代码已被混淆加密:

而如果未使用此插件,生成的bundle.js代码如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度神经网络——什么是迁移学习?

1.概述 在练习机器学习时,训练模型可能需要很长时间。从头开始创建模型架构、训练模型,然后调整模型需要大量的时间和精力。训练机器学习模型的一种更有效的方法是使用已经定义的架构,可能具有已经计算出的权重。这是背后的主要思想 迁移学习…

嵌入式进阶——OLED显示器(SPI)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 SPI协议原理图字库芯片中文显示屏原理API的使用 SPI协议 SPI(Serial Peripheral Interface)是一种同步串行…

使用Django实现WebSocket

文章目录 安装依赖编写Consumer配置路由在模板中使用WebSocket运行应用 WebSocket是一种在单个TCP连接上进行全双工通信的协议,在Web开发中被广泛应用于实时通信和数据推送。本文将介绍如何在Django中使用WebSocket来实现实时通信功能。 安装依赖 首先&#xff0…

VMware vSphere 8.0 Update 2c 下载 - 企业级工作负载平台

VMware vSphere 8.0 Update 2c 下载 - 企业级工作负载平台 ESXi 8.0U2 & vCenter Server 8.0U2 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u2/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org …

《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网…

IDM究竟有哪些优势:全面解析高速下载与管理利器!

一、引言 Internet Download Manager(简称IDM)是一款功能强大的文件下载工具,它具备许多优势,使得用户在下载文件时能够获得更快的速度和更好的体验。本文将详细介绍IDM的优势。 二、IDM简介 IDM是一款流行的下载管理软件&#…

绘唐app官方版绘唐3AI工具

绘唐app官方版绘唐3AI工具 激活授权方式:https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf 绘唐app是一款基于人工智能和摄影技术的应用程序,旨在帮助用户将照片转化为唐朝画风的艺术作品。 该应用程序使用先进的图像处理算法&#xf…

Epic Pen Pro v3 解锁版安装教程 (屏幕实时标记注释工具)

前言 Epic Pen是一款功能强大的屏幕标记工具,允许您在屏幕上绘图或书写,而无需在后台与软件交互。这意味着您几乎可以注释任何东西!使用我们流行的屏幕标记和Windows数字白板工具Epic Pen编写、绘制和突出显示,包括演示文稿软件&…

深入解析绘图范式:面向对象与直接操作的较量

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 第一节:面向对象绘图的魅力 第二节:直接操作绘图模块的便捷性 第三…

Linux查看设备信息命令

dmidecode | grep Product Name 查看grub版本号:rpm -qa | grep -i "grub" 客户端操作系统版本: cat /etc/issue cat /etc/redhat-release 处理器品牌及型号: less /proc/cpuinfo |grep model

基于BP神经网络的64QAM解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ....................................................... % 第一部分:加载并可视…

触觉训练技巧:盲人感知世界的第二双“眼”

在当今科技日新月异的时代,辅助技术正逐步成为残障人士融入社会的重要桥梁。其中,一款名为““蝙蝠避障””的创新软件,凭借其实时避障和拍照识别功能,为盲人朋友的日常生活带来了前所未有的便捷与安全。然而,技术的辅…

社区电商系统业务架构:打造线上线下融合的智慧生活圈

在数字化时代,社区电商系统已成为连接线上线下的重要纽带,为居民提供便捷的购物体验和多样化的生活服务。本文将深入探讨社区电商系统的业务架构,揭示其在构建智慧生活圈中的关键作用。 ### 1. 概述 社区电商系统是基于互联网技术构建的一种…

【iOS】UI学习(一)

UI学习(一) UILabelUIButtonUIButton事件 UIViewUIView对象的隐藏UIView的层级关系 UIWindowUIViewController定时器与视图对象 UISwitch UILabel UILabel是一种可以显示在屏幕上,显示文字的一种UI。 下面使用代码来演示UILabel的功能&#…

数据分析中的列与行交换技巧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:数据交换的重要性 二、列交换的基本原理 三、列交换的代码实现 1. 使…

[docker] docker 安全知识 - docker api, 权限提升 资源管理

[docker] docker 安全知识 - docker api, 权限提升 & 资源管理 这是 docker 安全的最后一篇 暴露 docker api 在 [docker] docker 安全知识 - docker 系统性简介 中曾经提到,docker cli 使用 restful api 与客户端和 docker daemon 之间交流。默认情况下&…

优化效率,简化流程:探索工资结算系统的重要性与实施方法

在现代企业中,工资结算是一项重要而复杂的任务。为了更好地管理和处理员工的工资事务,许多企业采用工资结算系统。本文将探讨工资结算系统的重要性,并介绍一些实施该系统的方法。 ### 1. 概述 工资结算系统是一种自动化的软件系统&#xff0…

Pycharm无法关闭-一直显示正在关闭项

界面上一直显示,正在关闭项目,而且我大部分项目,都能正常关闭,主要是一个由Selenium的项目关不掉,分享一下如何解决。 操作系统版本:Windows 10 专业版 22H2 软件版本:PyCharm Professional 2…

激光雷达测试板智能系统应用

在自动驾驶技术和机器人感知系统的迅猛发展中,激光雷达(Lidar)作为一种先进的测距技术,正逐渐成为这些系统不可或缺的组成部分。而在这一技术的实际应用前,对激光雷达进行精确的测试和校准是至关重要的一步。激光雷达测…

微乐校园管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,叫车管理,代跑管理,二手商品管理 司机账户功能包括:系统首页,个人中心,叫车管理&#xff0c…