openresty+Lua 实时混淆站点 JS 性能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sirz

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

  •  
  •   sirz 2024 年 2 月 29 日 2212 次点击
    这是一个创建于 785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有个需求实时处理 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  
       2024 年 2 月 29 日
    不要实时生成,改预生成,发布程序或者修改 JS 之后先生成好放那里。
    rrfeng
        2
    rrfeng  
       2024 年 2 月 29 日 via Android
    这玩意本来就耗时长啊,只能缓存下来。首次也没啥办法…
    sirz
        3
    sirz  
    OP
       2024 年 2 月 29 日
    打错了,30s
    sirz
        4
    sirz  
    OP
       2024 年 2 月 29 日
    @google2020 waf 产品,需求就是这
    sirz
        5
    sirz  
    OP
       2024 年 2 月 29 日
    有没有别的思路搞定这个需求,性能损耗可以接受,目前这种方案的损耗太大了
    google2020
        6
    google2020  
       2024 年 2 月 29 日
    @sirz 混淆很吃 CPU ,你看下有没达到混淆器官方性能,达到了就是硬件不够,要加硬件。这个响应慢跟 openresty 没关系,本质上 lua 只是反代混淆器 HTTP API ,增加不了几十毫秒。
    tomczhen
        7
    tomczhen  
       2024 年 2 月 29 日
    真有办法让 js 混淆到毫秒级,前端娱乐圈早就宣传了吧( doge
    SmiteChow
        8
    SmiteChow  
       2024 年 2 月 29 日
    选一个不做语法分析的混肴算法
    rb6221
        9
    rb6221  
       2024 年 2 月 29 日
    主要先看下方案本身性能如何吧,看看各个阶段耗时分别是多少,其中混淆器执行的部分耗时多少?混淆器的理论性能又是多少?
    ShuA1
        10
    ShuA1  
       2024 年 2 月 29 日
    1. 使用工具先预热全部 js
    2. 将混淆后的 js 静态文件放到 tmp 目录,不要放在内存
    asuraa
        11
    asuraa  
       2024 年 2 月 29 日
    @sirz 对比下 md5 一样的话 输出缓存 不一样再生成替换不就行了
    gongquanlin
        12
    gongquanlin  
       2024 年 2 月 29 日
    性能慢是因为解析了 js 的 ast 了吧,看看能不能对源码做加密然后固定 Js 再去解密?不要每次都解析 ast 呢;搞个 jsvmp ,源码加载之后只按固定规则将字符串加密成二进制数据,jsvmp 或者 wasm 进行解密运行;这样搞就是如果让人搞到了解密的方法容易被搞出来源码
    JefferyWang
        13
    JefferyWang  
       2024 年 2 月 29 日
    混淆完缓存下来啊
    sirz
        14
    sirz  
    OP
       2024 年 2 月 29 日
    缓存了的,第一次请求在 access 阶段就要混淆了,这个阶段目前规避不了卡顿的情况,之后可以直接走缓存
    Shazoo
        15
    Shazoo  
       2024 年 3 月 1 日
    预生成 N 个版本,lua 控制引用不香?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3747 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 75ms UTC 04:26 PVG 12:26 LAX 21:26 JFK 00:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86