V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sirz
V2EX  ›  程序员

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

  •  
  •   sirz · 267 天前 · 1617 次点击
    这是一个创建于 267 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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