Python应用的简单许可保护
虽然有很多类似的问题,但请耐心听我说,因为我觉得我的情况有点不同……
我有一个售价5美元的Python应用程序,我通过py2exe、py2app和Linux源代码来分发。这个应用程序有一年的使用许可,这意味着用户在一年后需要升级到新版本。我想给这个应用加一些简单的许可保护,以确保一年期限的限制。因为这个应用只卖5美元,所以我不在乎它是否容易被破解。只要有一些措施,就能鼓励很多用户在一年后花5美元升级,而不是无视许可。
需要注意的是:
- 我希望源代码容易阅读,所以不想混淆代码
- 我不想使用编译后的代码或软件即服务(SaaS)
- 如果有一个非常简单的许可密钥系统,我会考虑,但不想要复杂的东西
我最初的想法是简单地记录安装日期(比如使用wxConfig),然后在一年后禁用软件,并给出一个礼貌的提示,告诉用户请升级。
有没有更好的解决方案呢?
1 个回答
为什么用一个比较日期的if语句不能简单地解决这个问题呢?
最好的办法可能是把一些需要保持最新的数据放进你的软件里,这样才能对用户有用,比如TurboTax里的税表。当然,这种商业策略的可行性还得看你的应用和市场。
你说过代码是可以阅读的。那么你还能做些什么呢?你可以有很多这样的if语句……但是用grep、perl或者其他python脚本也能快速找到这些语句,并很快修复它们。如果你的5美元产品有市场,一个不满的客户可能会把禁用日期的脚本分享给他的朋友,或者在网上传播。
这就像一个行李锁,只对诚实的人有效……但也许这就足够了。
你可以在源代码中关键的if语句旁边放一个DMCA通知。if语句是一种防止在许可日期后使用的措施。问问好的律师吧,结果可能会有所不同。
维基百科在“反规避”部分提到DMCA的内容:
规避访问控制 DMCA的第103条(17 U.S.C Sec. 1201(a)(1))规定:任何人不得规避有效控制受本法保护作品访问的技术措施。该法在第1201(a)(3)中定义了其含义:
(A) “规避技术措施”是指在没有版权拥有者授权的情况下,解码加密作品,或者以其他方式避免、绕过、移除、停用或削弱技术措施;
(B) “有效控制作品访问的技术措施”是指在其正常操作过程中,需要应用信息、过程或处理,并获得版权拥有者的授权,才能访问该作品。因此,如果存在某种“有效控制作品访问的技术措施”,那么规避该措施是违法的。然而,第1201条对这一规则创建了几个例外,国会图书馆有权创建额外的例外。
如果你把日期放在一个用你的公钥签名的GPG字符串里……那么在我看来,你可以声称这个过期信息字符串是有版权拥有者的授权的。你也可以检查是否被篡改过,使用公钥来验证,但这并不明显,因为规避是违法的……
注意:自由软件先驱理查德·斯托曼有一个理论,认为竞争往往会消除软件中的反功能,比如付费墙、烦人的提醒等。