python - script - ¿Cómo empacaría y vendería una aplicación de Django?
python protect code (7)
La forma en que lo haría es esto:
- Encriptar todo el código
- Escriba un instalador que entre en contacto con el servidor con el nombre de host y el archivo de licencia de la máquina y obtenga la clave de descifrado, luego descifra el código y lo compila en bytecode de python
- Agregue (en el instalador) un módulo que verifique el nombre de host y el archivo de licencia de la máquina al importar y muera si no coincide
De esta forma, el usuario solo tiene que ponerse en contacto con el servidor cuando cambia el nombre de host y en la primera instalación, pero obtiene una pequeña capa de seguridad. Podrías cambiar el nombre de host por algo más complejo, pero realmente no hay necesidad, cualquiera que quiera piratear esto lo hará, pero un mecanismo simple como ese mantendrá a la gente honesta honesta.
Actualmente estoy alojando una aplicación de Django que desarrollé para mis clientes, pero ahora estoy empezando a buscar venderla a las personas para que se alojen ellos mismos.
Mi pregunta es esta: ¿cómo puedo empaquetar y vender una aplicación Django, mientras protejo su código de piratería o robo? Distribuir un montón de archivos .py no parece una buena idea, ya que las personas a las que les vengo también pueden hacer copias de ellos y pasarlas.
Creo que, a los fines de este problema, sería seguro suponer que todos los que compren esto ejecutarán la misma configuración (LÁMPARA).
No intentes ofuscar ni encriptar el código; nunca funcionará.
Sugeriría vender la aplicación Django "como un servicio", ya sea para alojarla o venderles el código y el soporte . Redacte un contrato que prohíba redistribuirlo.
Dicho esto, si estaba decidido a ofuscar el código de alguna manera, puede distribuir las aplicaciones de Python completamente como .pyc (código de byte compilado de Python). Así es como funciona Py2App.
Seguirá siendo redistribuible, pero será muy difícil editar los archivos, por lo que podría agregar algunas licencias básicas, y no tener que frustrarse por unos pocos.
Como dije, no creo que tenga éxito en la lucha contra la piratería a través del cifrado u ofuscación, etc. Dependiendo de sus clientes, un contrato simple, y tal vez algunos controles realmente básicos irán mucho más lejos que algún sistema de descifrado complicado (Y haga que la experiencia de usar su aplicación sea mejor , en lugar de, afortunadamente, no peor )
Podría empaquetar todo como una instancia de máquina de Amazon (AMI) y luego hacer que ejecute su aplicación en Amazon EC2 . Lo bueno de esta solución es que Amazon se encargará de cobrar por usted y, como está distribuyendo toda la imagen de la máquina, puede estar seguro de que todos sus clientes están usando la misma pila LAMP. La AMI es una imagen de máquina encriptada que se configura como usted lo desee.
Puede hacer que Amazon le facture al cliente con una tarifa única, una tarifa basada en el uso o una tarifa mensual.
Por supuesto, esta solución requiere que sus clientes alojen su aplicación en Amazon y paguen las tarifas correspondientes.
Nunca podrá conservar el código fuente de las personas que realmente lo desean. Lo mejor es comprender este hecho ahora y ahorrarse el dolor de cabeza más tarde.
Una cosa que quizás quieras considerar es qué hace FogBugz. Simplemente incluya un pequeño archivo binario (quizás un programa C) que se compila para las plataformas de destino y contiene el código para validar la licencia.
De esta manera, puede mantener honestas a las personas honestas con un mínimo dolor de cabeza de su parte.
"Encriptar" el código fuente de Python (o bytecode, o realmente bytecode para cualquier lenguaje que lo use, no solo Python) es como esas pequeñas cosas de JavaScript que algunas personas ponen en páginas web para intentar desactivar el botón derecho del mouse, declarando " ¡ahora no puedes robar mis imágenes! "
Las soluciones son triviales, y no detendrán a una persona determinada.
Si realmente quieres vender una pieza de software de Python, debes actuar en serio. Pague a un abogado para que redacte los términos de la licencia / contrato, haga que la gente los acepte en el momento de la compra y luego simplemente deje que ellos tengan el software real. Esto significa que tendrá que llevar a la gente a la corte si violan los términos de la licencia / contrato, pero tendría que hacer eso sin importar qué (por ejemplo, si alguien rompe su "encriptación" y comienza a distribuir su software), y tener La forma correcta de las palabras legales ya establecidas en papel, con su firma, será mucho mejor para su negocio a largo plazo.
Sin embargo, si eres realmente tan paranoico con las personas que "roban" tu software, simplemente sigue con un modelo alojado y no les des acceso al servidor. Muchas empresas exitosas se basan en ese modelo.
¿Puedo hablar francamente, como un amigo? A menos que su aplicación sea realmente increíble, es posible que no obtenga muchos compradores. ¿Por qué perder el tiempo en abogados, ofuscación, licencias y otras cosas? Puede obtener una mejor reputación al abrir su código ... y mantenerlo.
Django proviene del extremo abierto del espectro de licencias (y ofuscación). De acuerdo, la licencia de MIT es más común que la GPL; aún están muy alejados de algo como el EULA de Microsoft. Muchos de los Djangophiles rechazarán el código fuente cerrado, simplemente porque eso es lo que hace Microsoft.
Además, las personas confiarán más en su código, ya que podrán leerlo y verificar que no contenga ningún código malicioso. Recuerde, "ofuscar" significa "esconderse"; y ¿quién sabrá exactamente lo que has ocultado?
Por supuesto, no hay una forma fácil de monetizar el código de fuente abierta. Pero podría ofrecer sus servicios o incluso publicar una campaña en Pledgie.com, para aquellos que estén agradecidos por todo su excelente trabajo.