• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sirz
V2EX  ›  程序员

openresty+Lua 实时混淆站点 JS 性能

  •  
  •   sirz · Feb 29, 2024 · 2460 views
  •   You need to sign in to view this topic
    This topic created in 869 days ago, the information mentioned may be changed or developed.

    目前有个需求实时处理 openresty 反代站点的 JS ,将 JS 通过 obfuscator 混淆后再响应。

    实现:Lua 在 access 阶段请求源站 JS 调用 OB 提供的 API (内网)混淆后放到共享内存,在 bodyFilter 处理阶段取内存中的 JS 。

    问题:性能太差了,源站 JS 请求多的情况下,请求时长最高能到 30m ,有没有什么别的方案可以在 openresty 中实现该功能,或者有什么什么优化思路。

    15 replies    2024-03-01 10:52:42 +08:00
    google2020
        1
    google2020  
       Feb 29, 2024
    不要实时生成,改预生成,发布程序或者修改 JS 之后先生成好放那里。
    rrfeng
        2
    rrfeng  
       Feb 29, 2024 via Android
    这玩意本来就耗时长啊,只能缓存下来。首次也没啥办法…
    sirz
        3
    sirz  
    OP
       Feb 29, 2024
    打错了,30s
    sirz
        4
    sirz  
    OP
       Feb 29, 2024
    @google2020 waf 产品,需求就是这
    sirz
        5
    sirz  
    OP
       Feb 29, 2024
    有没有别的思路搞定这个需求,性能损耗可以接受,目前这种方案的损耗太大了
    google2020
        6
    google2020  
       Feb 29, 2024
    @sirz 混淆很吃 CPU ,你看下有没达到混淆器官方性能,达到了就是硬件不够,要加硬件。这个响应慢跟 openresty 没关系,本质上 lua 只是反代混淆器 HTTP API ,增加不了几十毫秒。
    tomczhen
        7
    tomczhen  
       Feb 29, 2024
    真有办法让 js 混淆到毫秒级,前端娱乐圈早就宣传了吧( doge
    SmiteChow
        8
    SmiteChow  
       Feb 29, 2024
    选一个不做语法分析的混肴算法
    rb6221
        9
    rb6221  
       Feb 29, 2024
    主要先看下方案本身性能如何吧,看看各个阶段耗时分别是多少,其中混淆器执行的部分耗时多少?混淆器的理论性能又是多少?
    ShuA1
        10
    ShuA1  
       Feb 29, 2024
    1. 使用工具先预热全部 js
    2. 将混淆后的 js 静态文件放到 tmp 目录,不要放在内存
    asuraa
        11
    asuraa  
       Feb 29, 2024
    @sirz 对比下 md5 一样的话 输出缓存 不一样再生成替换不就行了
    gongquanlin
        12
    gongquanlin  
       Feb 29, 2024
    性能慢是因为解析了 js 的 ast 了吧,看看能不能对源码做加密然后固定 Js 再去解密?不要每次都解析 ast 呢;搞个 jsvmp ,源码加载之后只按固定规则将字符串加密成二进制数据,jsvmp 或者 wasm 进行解密运行;这样搞就是如果让人搞到了解密的方法容易被搞出来源码
    JefferyWang
        13
    JefferyWang  
       Feb 29, 2024
    混淆完缓存下来啊
    sirz
        14
    sirz  
    OP
       Feb 29, 2024
    缓存了的,第一次请求在 access 阶段就要混淆了,这个阶段目前规避不了卡顿的情况,之后可以直接走缓存
    Shazoo
        15
    Shazoo  
       Mar 1, 2024
    预生成 N 个版本,lua 控制引用不香?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5194 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 09:24 · PVG 17:24 · LAX 02:24 · JFK 05:24
    ♥ Do have faith in what you're doing.