Python 我如何包装和销售Django应用程序?

Python 我如何包装和销售Django应用程序?,python,django,piracy-prevention,Python,Django,Piracy Prevention,目前,我正在为我的客户开发一款Django应用程序,但我现在开始考虑将其出售给客户,让他们自己托管 我的问题是:如何包装和销售Django应用程序,同时保护其代码免受盗版或盗窃?分发一堆.py文件听起来不是一个好主意,因为我把它卖给的人也可以复制并传递它们 我认为出于这个问题的目的,可以安全地假设每个购买此产品的人都会运行相同的(LAMP)设置。我会这样做: 加密所有代码 编写一个安装程序,使用机器的主机名和许可证文件与服务器联系,获取解密密钥,然后解密代码并将其编译为python字节码 (在安

目前,我正在为我的客户开发一款Django应用程序,但我现在开始考虑将其出售给客户,让他们自己托管

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


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

我会这样做:

  • 加密所有代码
  • 编写一个安装程序,使用机器的主机名和许可证文件与服务器联系,获取解密密钥,然后解密代码并将其编译为python字节码
  • (在安装程序中)添加一个模块,该模块在导入时检查机器的主机名和许可证文件,如果不匹配则终止

  • 这样,用户只需在主机名更改和首次安装时与服务器联系,但您可以获得一个小的安全层。您可以将主机名更改为更复杂的名称,但实际上没有必要——任何想要盗版的人都可以这样做,但这样一种简单的机制可以让诚实的人保持诚实。

    您可以将整个内容打包为亚马逊机器实例(AMI),然后让他们在您的应用程序上运行。这个解决方案的好处是Amazon会这样做,因为您正在分发整个机器映像,所以可以确定您的所有客户机都使用相同的LAMP堆栈。AMI是一个加密的机器映像,按照您的需要进行配置

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


    当然,此解决方案要求您的客户在Amazon上托管他们的应用程序,并支付相应的费用。

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

    我建议将Django应用程序“作为一项服务”出售——要么为他们托管,要么向他们出售代码和支持。写一份合同,禁止他们再分配

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

    它仍然可以重新分发,但编辑这些文件将非常困难,因此您可以添加一些基本的许可内容,而不必被一些
    s所阻止


    正如我所说的,我认为你不会通过加密或模糊处理等方式成功地反盗版。。取决于您的客户,一份简单的合同,也许一些真正基本的检查会比一些复杂的解密系统走得更远(并使您的应用程序使用体验更好,而不是更糟)

    您永远无法从真正想要它的人那里保留源代码。最好现在就抓住这个事实,然后再为你自己头痛。

    < P>你可能要考虑的一件事就是Fogbgz所做的事情。只需包含一个针对目标平台编译的小二进制文件(可能是一个C程序),其中包含验证许可证的代码

    通过这种方式,你可以让诚实的人保持诚实,而不会让你感到头痛。

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

    这些变通办法微不足道,不会阻止一个有决心的人

    如果你真的很想出售一款Python软件,你需要表现得很严肃。请律师起草许可/合同条款,让人们在购买时同意,然后让他们拥有真正的软件。这意味着,如果他们违反许可/合同条款,你必须将他们告上法庭,但你会受到惩罚无论发生什么情况,都必须这样做(例如,如果有人破坏了你的“加密”并开始分发你的软件),并且已经在纸上写下了法律用语的实际正确形式,并有他们的签名,从长远来看,这将对你的业务有利得多


    如果你真的那么偏执于人们的“偷窃”“不过,您的软件只需使用托管模型,而不允许他们访问服务器。很多成功的企业都是以这种模式为基础的。

    作为一个朋友,我可以坦率地说一句吗?除非你的应用真的很棒,否则你可能不会有很多买家。为什么要把时间浪费在律师、模糊处理、许可证和诸如此类的事情上?通过开放源代码并维护代码,您将获得更好的声誉

    Django来自许可(和混淆)领域的开源端。麻省理工学院的许可证比GPL更为普遍;尽管如此,它们与微软的EULA相去甚远。很多Djangophiles会对封闭源代码望而却步,因为微软就是这么做的

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


    诚然,开源代码的货币化并非易事。但是你可以为那些感谢你所有伟大工作的人提供服务,甚至在Swareie.com上发布活动。

    是的,这听起来是最好的途径。它应该“屏蔽”98.58%的客户为什么要加密它?如果他们无论如何都要联系您的机器,只需直接通过安装程序下载.pyc代码,那么他们的系统上就没有.py文件(保存任何使用可配置的文件或其他文件)。然后,您会遇到不同版本的pyc文件问题。通过在本地计算机上进行编译,它将消除此类问题