47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
// 加密压缩打包后的小组件代码
|
||
// 方便隐藏敏感信息,减少组件体积和保护小组件不被随意修改
|
||
|
||
// 用法:
|
||
// node encode.js Dist/你的小组件.js
|
||
const process = require('process')
|
||
const os = require('os')
|
||
const fs = require('fs')
|
||
const path = require('path')
|
||
|
||
var JB = require('javascript-obfuscator');
|
||
|
||
if (process.argv.length !== 3) {
|
||
console.log('[!] 用法:node encode.js Dist/「小件件」xxx.js')
|
||
process.exit(0)
|
||
}
|
||
|
||
const file_name = process.argv[2]
|
||
const out_name = file_name.replace(".js", ".enc.js")
|
||
|
||
// 读取源文件
|
||
const widget_file = fs.readFileSync(path.join(__dirname, file_name))
|
||
|
||
let widget_code = widget_file.toString("utf-8")
|
||
widget_code = widget_code.split("await Running(Widget)")[0];
|
||
|
||
|
||
var result = JB.obfuscate(widget_code.toString("utf-8"), {
|
||
"rotateStringArray": true,
|
||
"selfDefending": true,
|
||
"stringArray": true,
|
||
splitStringsChunkLength: 100,
|
||
"stringArrayEncoding": ["rc4", "base64"]
|
||
}).getObfuscatedCode()
|
||
|
||
let result_header = widget_code.split("// icon-color:")[0]
|
||
result_header += "// icon-color:"
|
||
result_header += widget_code.split("// icon-color:")[1].split("\n")[0]
|
||
result_header += "\n// " + file_name
|
||
result_header += "\n// https://github.com/im3x/Scriptables"
|
||
|
||
let result_code = `${result_header}\n${result};await Running(Widget);`
|
||
|
||
fs.writeFileSync(path.join(__dirname, out_name), result_code);
|
||
|
||
console.log("[*] 文件已压缩混淆至:", out_name)
|