目前我正在托管我为自己的客户开发的Django应用程序,但我现在开始考虑将它卖给人们让他们自己托管。

我的问题是:如何打包和销售Django应用程序,同时保护其代码免遭盗版或盗窃?分发一堆.py文件并不是一个好主意,因为我销售它的人也可以复制它们并传递它们。

我认为出于这个问题的目的,可以安全地假设购买此产品的每个人都运行相同的(LAMP)设置。

有帮助吗?

解决方案

不要尝试混淆或加密代码 - 它永远不会起作用。

我建议将Django应用程序“作为服务”出售。 - 要么为他们托管,要么向他们出售代码和支持。写下一份禁止他们重新分发的合同。

也就是说,如果您决定以某种方式对代码进行模糊处理 - 您可以将python应用程序完全分发为.pyc(Python编译的字节代码)。这就是Py2App的工作方式。

它仍然可以重新分发,但是编辑文件非常困难 - 所以你可以添加一些基本的许可资料,而不是被一些#挫败# 秒。

正如我所说,我不认为你会通过加密或混淆等方式成功地反盗版。根据你的客户,简单的合同,以及一些真正基本的检查将比一些更长远复杂的解密系统(并使您的应用程序使用更好的体验,而不是希望不会更糟

其他提示

我的方式就是:

  1. 加密所有代码
  2. 编写一个安装程序,使用机器的主机名和许可证文件与服务器联系并获取解密密钥,然后解密代码并将其编译为python bytecode
  3. 添加(在安装程序中)一个模块,该模块在导入时检查机器的主机名和许可文件,如果不匹配则死亡
  4. 这样,用户只需在主机名更改时和首次安装时联系服务器,但您获得了一小部分安全性。您可以将主机名更改为更复杂的内容,但实际上并不需要 - 任何想要盗版的人都会这样做,但是像这样的简单机制会让诚实的人保持诚实。

您可以将整个内容打包为亚马逊机器实例(AMI),然后让它们在亚马逊EC2 。这个解决方案的好处是,亚马逊将照顾为您收费,并且由于您正在分发整个机器映像,因此您可以确定所有客户端都使用相同的LAMP堆栈。 AMI是一个加密的机器映像,可根据需要进行配置。

您可以让亚马逊向客户收取一次性费用,使用费或月费。

当然,此解决方案要求您的客户在亚马逊上托管其应用,并支付相应的费用。

"加密" Python源代码(或字节码,或任何使用它的语言的真正字节码 - 不仅仅是Python)就像有些人在网页上试图禁用鼠标右键的那些小JavaScript事件,声明“现在你不能偷我的照片!“

变通办法是微不足道的,不会阻止一个坚定的人。

如果你非常认真地销售一块Python软件,那么你需要认真对待。支付律师起草许可证/合同条款,让人们在购买时同意这些条款,然后让他们拥有实际的软件。这意味着如果违反许可证/合同条款,您将不得不将人员绳之以法,但无论如何,您都必须这样做(例如,如果某人违反您的“加密”并开始分发您的软件),拥有实际适当形式的合法形式的法律词语已经在纸上签名,并且具有签名,对您的业务来说将长期好得多。

如果你真的偏执于人们“窃取”但是,您的软件只是坚持使用托管模型,并且不允许他们访问服务器。许多成功的企业都是以这种模式为基础的。

您永远无法保留真正想要它的人的源代码。现在最好先掌握这个事实,以后再避免头痛。

我可以坦率地说,作为朋友吗?除非你的应用真的太棒了,否则你的买家可能不会很多。为什么要浪费时间在律师,混淆,许可和诸如此类的东西上?您可以通过开源代码并维护它来获得更好的声誉。

Django来自许可(和混淆)的开源端。当然,麻省理工学院的许可证比GPL更常见;他们与Microsoft的EULA之间的距离都很远。许多Djangophiles会对封闭的源代码不屑一顾,因为这就是微软所做的。

此外,人们会更信任您的代码,因为他们将能够阅读并验证它不包含恶意代码。请记住,“混淆”意思是“隐藏”;谁会真正知道你隐藏了什么?

当然,没有简单的方法可以通过开源代码获利。但是,您可以在Pledgie.com上提供您的服务,甚至发布一个活动,感谢那些感谢您所有出色工作的人。

您可能想要考虑的一件事是FogBugz的作用。只需包含为目标平台编译的小二进制文件(可能是C程序),并包含验证许可证的代码。

通过这种方式,您可以保持诚实的人诚实,让您的头痛最轻微。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top