为开源 IM 做了个需要授权的闭源 JS SDK,请问进行代码混淆是否有意义? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
imndx
V2EX    程序员

为开源 IM 做了个需要授权的闭源 JS SDK,请问进行代码混淆是否有意义?

  •  
  •   imndx 2019-07-16 08:23:49 +08:00 via Android 3889 次点击
    这是一个创建于 2284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们开发的 IM 解决方案,服务端、Android、iOS 都开源了。

    想通过需要授权的 JS SDK 来赚点小钱,现在的问题是如何保证 SDK 不被破解,或者如何能增大破解的难度?

    请大家指点一下。

    另外,前段代码,混淆、加密是否有意义?

    最后,如果你对开源 IM 感兴趣,欢迎围观:

    https://github.com/wildfirechat

    imndx
        1
    imndx  
    OP
       2019-07-16 08:24:38 +08:00 via Android
    写错了,是前端代码,不是前段代码,sorry
    berumotto
        2
    berumotto  
       2019-07-16 08:31:32 +08:00 via iPhone
    前端没有加密可说吧
    nnnToTnnn
        3
    nnnToTnnn  
       2019-07-16 08:32:25 +08:00
    @imndx 有啊,增加我对这个项目逆向的兴趣
    imndx
        4
    imndx  
    OP
       2019-07-16 08:36:34 +08:00 via Android
    @nnnToTnnn 好吧,但有个小小的请求呀,逆向仅仅是个人研究学习哈
    imndx
        5
    imndx  
    OP
       2019-07-16 08:37:22 +08:00 via Android
    @berumotto 我不是专业前端,但听过这种说法。有什么更好的思路不?
    k9982874
        6
    k9982874  
       2019-07-16 08:38:45 +08:00 via iPhone
    服务器都开源了 加密 sdk 毫无意义
    free9fw
        7
    free9fw  
       2019-07-16 08:40:26 +08:00   2
    赚钱何必开源,开源了又来收钱
    berumotto
        8
    berumotto  
       2019-07-16 08:43:01 +08:00 via iPhone
    @imndx 收费提供技术支持或者分离出一个商业版
    nnnToTnnn
        9
    nnnToTnnn  
       2019-07-16 08:44:14 +08:00
    @imndx 开源又何必授权 sdk,具体的开源运营模式可参考 Red Hat,为客户提供服务,而不是做授权 sdk,这样做只会各种反编译等等的版本出来,不是限制客户,而是为客户做解决方案,然后你就会钓到大鱼
    Rorysky
        10
    Rorysky  
       2019-07-16 08:44:58 +08:00 via iPhone
    没啥意义吧,效果和不允许商业使用差不多
    imndx
        11
    imndx  
    OP
       2019-07-16 08:45:47 +08:00 via Android
    @free9fw 赚钱和开源,不一定是二选一的。红帽子,开源和赚钱都做的很好。
    abcbuzhiming
        12
    abcbuzhiming  
       2019-07-16 08:45:53 +08:00
    兄弟,收钱不是这么收的,你应该搞一个专门的,高级功能加强版本或定制版,整体闭源,付费服务。
    geelaw
        13
    geelaw  
       2019-07-16 08:46:27 +08:00 via iPhone
    所以 JS SDK 是用来做什么的呢?实现 Web 客户端?

    我觉得从 Android 和 iOS 客户端的代码很容易 infer 出来 Web 客户端怎么写,所以客户端逻辑不是一个可以(或者说,需要)被保护的对象。因此,所谓“逆向这个 JS SDK ”完全是多此一举可以直接看其他客户端代码并翻译成 JS。

    “破解”的含义也不明确,如果你只是单纯想增加 JS SDK 未被授权的使用难度,有很多 ad-hoc 的技巧,但并不 sound。

    很多问题的技术解决方案的成本远远高于法律解决方案,而且有些问题是不存在技术解决方案的。
    imndx
        14
    imndx  
    OP
       2019-07-16 08:48:31 +08:00 via Android
    @k9982874 是的,服务端开源了,一定是能自己把 JS SDK 写出来的。可能会有没时间,想马上拥有的客户买授权的
    imndx
        15
    imndx  
    OP
       2019-07-16 08:51:47 +08:00 via Android
    @abcbuzhiming 我们真有个专业版,功能区分度不大,社区版性能又太好了,还没人对专业版感兴趣。谢谢
    laravel
        16
    laravel  
       2019-07-16 08:52:41 +08:00
    还不如做个商业版 wildfirechat plus 增加其功能,现在很多开源软件都是这套路
    laravel
        17
    laravel  
       2019-07-16 08:53:45 +08:00
    相近的比如 emqtt 就是一个开源版,一个收费版,我以前问他们老大,人家说一个单子几十万呢,还有别的国家的用户。
    k9982874
        18
    k9982874  
       2019-07-16 08:56:38 +08:00
    @imndx #14 可以学一下 twilio,按用量收费,提供一定免费用量。服务器也继续开源,sdk 开不开源就无所谓了。
    imndx
        19
    imndx  
    OP
       2019-07-16 08:59:50 +08:00 via Android
    @k9982874 谢谢,我去研究下他们是怎么玩。我们这开源的比较完整,完全不知道他们的使用量
    imndx
        20
    imndx  
    OP
       2019-07-16 09:07:58 +08:00 via Android
    @laravel 谢谢,是的,专业的商业本和社区版得有区分度
    LeeSeoung
        21
    LeeSeoung  
       2019-07-16 09:37:52 +08:00   1
    可以提供技术支持 服务,或者一些定制化的需求来收费。或者是新增一些不开源的服务收费。
    shynome
        22
    shynome  
       2019-07-16 09:41:13 +08:00 via Android
    @imndx 开源如果不完整的话不如不开源,eolinker 商业化之后就留了个残废的开源版在 GitHub 上,中文支持被去掉,代码能运行起来但是工作不正常,然后去排查问题的时候发现是官方 issues 已经有了但是完全不管,这样的开源你用吗

    还有开源版不应该添加使用量统计这种依赖特定服务器不透明的东西
    Buges
        23
    Buges  
       2019-07-16 09:44:27 +08:00 via Android
    授权 sdk
    有二改开发需求找你们定制
    guyeu
        24
    guyeu  
       2019-07-16 10:03:48 +08:00
    红帽如果开源+赚钱两不误的话就不会被收购了。。
    jiangecho
        25
    jiangecho  
       2019-07-16 10:21:49 +08:00
    @shynome 我们的开源是完整的,另外,没有添加使用量统计之类不透明的东西的。
    imndx
        26
    imndx  
    OP
       2019-07-16 11:26:01 +08:00
    @jiangecho 乱入?这是啥鬼?
    gam2046
        27
    gam2046  
       2019-07-16 11:51:06 +08:00
    sdk 收费意义真的不大,服务端开源,人家自己写一份就行了,SDK 再复杂能有一个服务端复杂?

    可以参考以下这几种方式

    1、RHEL 免费用,技术支持收费
    2、定制需求收费
    3、私有化部署收费
    Felldeadbird
        28
    Felldeadbird  
       2019-07-16 12:17:14 +08:00 via iPhone
    我觉得,对于破解是无法阻止的。
    我的另外做法是,找泄露源,不同客户购买后,都有独特的识别码。通过这个可以知道泄露源头。当然,如果把识别码移除,这就当他实力获取。
    otakustay
        29
    otakustay  
       2019-07-16 12:46:35 +08:00
    基本没有意义,我还是一个 T3 的时候,只用了半个月就把 google 的广告 SDK 给吃透了,甚至可以在整出了流程的基础上再做局部优化写自己的 SDK ……
    shynome
        30
    shynome  
       2019-07-16 12:48:02 +08:00 via Android
    @jiangecho 只是提醒勿忘初衷
    lifeintools
        31
    lifeintools  
       2019-07-16 16:24:00 +08:00
    提供 docker 一键部署 最好
    jiangzhuo
        32
    jiangzhuo  
       2019-07-16 20:00:47 +08:00
    授权便宜了不赚钱
    授权贵了不如自己笔者 iOS Android 抄一个

    大概率赚不到小钱
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     901 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:16 PVG 04:16 LAX 13:16 JFK 16:16
    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