vue3+vite代码混淆插件

公司由于业务需要,要求实现代码混淆,经过两天的间断性尝试终于找到的一款混淆插件

先说一说一开始尝试的几款:

1、vite-plugin-obfuscator :打包之后实现了混淆,但是上了sit  之后,出现样式丢失问题,看自己的配置项, 将stringArray设置为:stringArray: false。到了测试环境看过之后,混淆程度是很高,很多label名没有变成混淆后的字符串。但如果stringArray设置为true,打包之后就会出现样式丢失问题。

2、rollup-plugin-javascript-obfuscator :打包之后没有任何混淆变化,查资料更改配置之后,有混淆,看似加了很多垃圾代码。运行起来,本地就有报错,一开始是报

我将项目下用到这个变量的地方删除了,查了之后之后这里用到了:

//创建路由器
const router = createRouter({
  //路由模式hash
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: constantRoute,
  //滚动行为
  scrollBehavior (to, from, savedPosition) {
    if (savedPosition) {
      //此处意思 即若回退页面,返回savedPosition,且页面不置顶
      return savedPosition
    } else {
      //此处意思 若页面跳转新页面,则页面置顶
      return { x: 0, y: 0 ,behavior:'smooth'}
    }
  }
})

这里也可以不写,所以我直接去掉了,后面又报错路由问题,后面解决之后又出现了请求接口时报错,这个无法解决,猜测是 stringArray: true, 配置项开启导致的。

stringArray: true, // 将stringArray数组移位固定和随机(在代码混淆时生成)的位置。这使得将删除的字符串的顺序与其原始位置相匹配变得更加困难。如果原始源代码不小,建议使用此选项,因为辅助函数可以引起注意。

最后我在github上看到一个插件 vite-plugin-bundle-obfuscator,但是这次配置项stringArray,我也是设为false。js混淆成功,且打包之后一切正常。混淆程度跟vite-plugin-obfuscator 一样。

但也已满足了我的业务需求。代码及配置如下:

import vitePluginBundleObfuscator from "vite-plugin-bundle-obfuscator";

 return defineConfig({

 build: {
      minify: "esbuild", // 默认
      rollupOptions: {
        output: {
          entryFileNames: `js/[name].[hash].js`,
          chunkFileNames: `js/[name].[hash].js`,
          assetFileNames: "static/[ext]/[hash].[ext]",
        },
      }, // 打包后文件的存放路径
    },
    esbuild: {
      drop: ["console", "debugger"], //打包去除
    },
    resolve: {
      // alias: {
      //   "@": fileURLToPath(new URL("./src", import.meta.url)),
      // },
      alias: {
        "@": path.resolve("./src"), // 相对路径别名配置,使用 @ 代替 src
        // "@": path.resolve(__dirname, "src"),
      },
    },
   plugins: [
      vue(),
      VueSetup(),
      AutoImport({
        resolvers: [VantResolver()],
      }),
      Components({
        resolvers: [VantResolver()],
      }),
      
      vitePluginBundleObfuscator({
        excludes: [],
        enable: true,
        log: true,
        autoExcludeNodeModules: false,
        threadPool: false,
        options: {
          compact: true,
          controlFlowFlattening: true,
          controlFlowFlatteningThreshold: 1,
          deadCodeInjection: false,
          debugProtection: false,
          debugProtectionInterval: 0,
          disableConsoleOutput: false,
          identifierNamesGenerator: "hexadecimal",
          log: false,
          numbersToExpressions: false,
          renameGlobals: false,
          selfDefending: true,
          simplify: true,
          splitStrings: false,
          stringArray: false,
          stringArrayCallsTransform: false,
          stringArrayCallsTransformThreshold: 0.5,
          stringArrayEncoding: [],
          stringArrayIndexShift: true,
          stringArrayRotate: true,
          stringArrayShuffle: true,
          stringArrayWrappersCount: 1,
          stringArrayWrappersChainedCalls: true,
          stringArrayWrappersParametersMaxCount: 2,
          stringArrayWrappersType: "variable",
          stringArrayThreshold: 0.75,
          unicodeEscapeSequence: false,
        },
      }),
    ],
 })
};

  

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值