javascript-obfuscator js混肴 (用户界面版)

server/2024/12/22 19:06:53/

javascript-obfuscator JS混肴

  • 混肴的作用
  • 预览图
  • mix.sh混肴脚本
  • config.json

混肴的作用

防止浏览器的js/html/css代码被他人盗用。下述只实现了js的混肴。html/css可仿照js逻辑实现

预览图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

mix.sh混肴脚本

#!/bin/bash  # 检查 terser 是否可用  
if ! command -v javascript-obfuscator &> /dev/null; then  echo "javascript-obfuscator 不可用,请安装后再运行此脚本。执行安装:npm install -g javascript-obfuscator"  exit 1  
fi # 获取当前目录下的所有子目录(只考虑一级子目录)并自然排序  
dirs=($(find . -maxdepth 1 -mindepth 1 -type d -exec basename {} \; | sort))  # 显示目录列表并让用户选择  
for (( i=0; i<${#dirs[@]}; i++ )); do  echo "$((i + 1)). ${dirs[$i]}"  
done  
read -p "请选择js存储目录(1-${#dirs[@]}):" choice1  # 检查输入是否有效  
if ! [[ "$choice1" =~ ^[1-9][0-9]*$ ]] || [[ "$choice1" -gt ${#dirs[@]} ]]; then  echo "无效的输入,请重新运行脚本"  exit 1  
fi  # 转换为0-based索引  
choice1=$((choice1-1))  
selected_dir="./${dirs[$choice1]}"  # 第二步:列出目录下的js文件并自然排序  
files=($(find "$selected_dir/js" -type f -name "*.js" | sort))  # 显示文件列表并让用户选择  
for (( i=0; i<${#files[@]}; i++ )); do  filename=$(basename -- "${files[$i]}")  echo "$(($i+1))). ${filename}"  
done  
read -p "请选择要混肴的js(1-${#files[@]})" choice2  # 检查输入是否有效  
if ! [[ "$choice2" =~ ^[1-9][0-9]*$ ]] || [[ "$choice2" -gt ${#files[@]} ]]; then  echo "无效的输入,请重新运行脚本"  exit 1  
fi  # 转换为0-based索引  
choice2=$((choice2-1))  
full_file_path="${files[$choice2]}"  
echo "混肴的js路径:$full_file_path"
# 第三步:执行混淆并保存到新位置  
dir_part="${full_file_path%/*}"  # 移除最后一个 / 及其后的内容  
dir_part="${dir_part#./}"   # 如果需要,移除开头的 ./  output_dir="./copy/$dir_part"  
mkdir -p "$output_dir"  # 确保目录存在 
output_file="./copy/${full_file_path#./}"   #去掉./前缀javascript-obfuscator "$full_file_path" --config "./config.json" --output "$output_file"echo "混淆后的文件已保存到:$output_file"#目录结构必须是/主目录/js/*.js

config.json

{  "compact": true,  "mangle": true,  "controlFlowFlattening": false,  "numbersToExpressions": false,  "splitStrings": false,  "stringArray": false,  "stringArrayThreshold": 0.75,  "simplify": true,  "deadCodeInjection": false,  "debugProtection": false,  "debugProtectionInterval": 0,  "selfDefending": false,  "reservedNames": [],  "transformObjectKeys": true, "reservedStrings": [],  "rotateStringArray": true,  "renameGlobals": false,  "seed": 0  
}

http://www.ppmy.cn/server/128003.html

相关文章

深入理解作用域【JavaScript】

一、作用域的内部原理 JavaScript 的作用域机制是理解变量如何被访问和存储的重要概念。下面详细介绍作用域的内部原理&#xff0c;包括编译、执行、查询、嵌套和异常处理这五个步骤。 1. 编译 在 JavaScript 的执行过程中&#xff0c;首要的步骤是编译。尽管JavaScript是解…

知识链=知识图谱+大模型+推理-幻觉

最近由华东师大和香港大学联合提出了一种面向大语言模型推理的幻觉缓解方法Chain-of-Knowledge被ACL2024接收为长文主会。 PDF: https://arxiv.org/pdf/2306.06427 最近这两年&#xff0c;诸如GPT-4、LLaMA3等一系列超百亿规模的大语言模型相继提出&#xff0c;这些大模型以其…

服务架构的演进之路:从单体应用到Serverless

随着时间的推移和技术的进步&#xff0c;软件架构经历了从单体应用、面向服务架构&#xff08;SOA&#xff09;、微服务架构到Serverless架构的演变。每一步的演进都是为了更好地应对日益增长的业务需求和用户基数。接下来&#xff0c;我们将一起回顾这段旅程&#xff0c;看看每…

【分布式微服务云原生】如何在ActiveMQ中优雅处理提前支付的延时订单

摘要 本文将深入探讨在ActiveMQ中如何处理用户提前支付的延时订单问题。我们将介绍如何通过更新订单状态、检查延迟任务、取消延迟消息、使用死信队列、消息选择性消费、设置合理的超时时间以及及时反馈和日志记录等策略&#xff0c;来确保系统的一致性和及时响应用户操作。文…

鸿蒙harmonyos next纯flutter开发环境搭建

公司app是用纯flutter开发的&#xff0c;目前支持android和iOS&#xff0c;后续估计也会支持鸿蒙harmonyos。目前谷歌flutter并没有支持咱们国产手机操作系统鸿蒙harmonyos&#xff0c;于是乎国内有个叫OpenHarmony-SIG的组织&#xff0c;去做了鸿蒙harmonyos适配flutter开发的…

怎么ping网络ip地址通不通

怎么Ping网络IP地址通不通&#xff1f;要检查网络中的IP地址是否连通&#xff0c;可以使用‌Ping命令。Ping命令通过发送ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制消息协议&#xff09;Echo请求报文并等待回应&#xff0c;来判断目标主机是否可…

VMware下的ubuntu显示文字太小的自适应显示调整

我的情况 我使用的是4K的32寸显示器&#xff0c;分辨率为 3840 x 2160&#xff0c;ubuntu版本为18.04&#xff0c;默认的情况下系统分辨率为 3466 x 1842。 ​ 此时&#xff0c;显示的文字很小&#xff0c;虽然可以看清&#xff0c;但也比较吃力&#xff0c;在VMware窗口…

佳能基于SPAD的监控摄像机MS-500入选《时代》2023最佳发明

一、产品概述 佳能MS-500是一款采用SPAD(Single Photon Avalanche Diode,单光子雪崩二极管)传感器的监控摄像机。SPAD传感器以其极高的灵敏度和在低光环境下的卓越表现而闻名,使得MS-500能够在夜晚或极暗光条件下拍摄到清晰、彩色的画面。此外,MS-500还配置了高性能的镜头…