Как мне упаковать и продать приложение Django?

В настоящее время я размещаю приложение Django, которое я разработал сам для своих клиентов, но теперь я начинаю рассматривать возможность продажи его людям, чтобы они разместили себя.

У меня такой вопрос: как я могу упаковать и продать приложение Django, защищая его код от пиратства или кражи? Распространение кучи файлов .py не кажется хорошей идеей, поскольку люди, которым я их продаю, тоже могут просто сделать их копии и передать их.

Я думаю, что для решения этой проблемы было бы безопасно предположить, что все, кто покупает это, будут использовать одну и ту же установку (LAMP).

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
40
0
15 349
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Я бы сделал следующее:

  1. Зашифруйте весь код
  2. Напишите установщик, который связывается с сервером с именем хоста машины и файлом лицензии и получает ключ дешифрования, затем расшифровывает код и компилирует его в байт-код python.
  3. Добавьте (в установщик) модуль, который проверяет имя хоста машины и файл лицензии при импорте и умирает, если он не совпадает

Таким образом, пользователю нужно связаться с сервером только при изменении имени хоста и при первой установке, но вы получите небольшой уровень безопасности. Вы можете изменить имя хоста на что-то более сложное, но в этом нет необходимости - любой, кто захочет пиратство, сделает это, но такой простой механизм сохранит честность честных людей.

Ага, это действительно лучший маршрут. Это должно "сбить с толку" 98,58% моих клиентов

Josh Hunt 03.10.2008 02:42

Зачем его шифровать? Если они все равно собираются связаться с вашей машиной, просто загрузите код .pyc прямо через установщик, тогда в их системе никогда не будет файлов .py (сохраните те, которые используются настраиваемыми или что-то еще).

Will Hartung 03.10.2008 03:01

Затем вы сталкиваетесь с проблемами с файлами pyc в разных версиях. Выполнив компиляцию на локальном компьютере, он устранит такие проблемы.

Serafina Brocious 03.10.2008 03:19

И потому что есть люди вроде меня, которым нравится иметь «распространяемый», а не загрузчик.

UnkwnTech 03.10.2008 15:12

Вы можете упаковать все это как Amazon Machine Instance (AMI), а затем заставить их запускать ваше приложение на Amazon EC2. Преимущество этого решения в том, что Amazon использует позаботьтесь о выставлении счетов за вас, и, поскольку вы распространяете весь образ машины, вы можете быть уверены, что все ваши клиенты используют один и тот же стек LAMP. AMI - это зашифрованный образ машины, который настраивается так, как вы этого хотите.

Вы можете попросить Amazon выставить счет клиенту на единовременную плату, плату за использование или ежемесячную плату.

Конечно, это решение требует, чтобы ваши клиенты размещали свое приложение на Amazon и платили соответствующие сборы.

Amazon EC2 может быть слишком дорогим для небольшого приложения Django, поскольку вы получаете либо целую выделенную виртуальную машину, либо ничего. Думаю, это стоит не менее 80 долларов в месяц.

lubos hasko 28.12.2008 07:29

@luboshasko 5 $ в месяц

Kotlinboy 23.01.2018 06:33
Ответ принят как подходящий

Не пытайтесь запутать или зашифровать код - это никогда не сработает.

Я бы посоветовал продавать приложение Django «как услугу» - либо разместить его для них, либо продать им код и поддержка. Составьте договор, запрещающий им распространять его.

Тем не менее, если вы решили каким-то образом запутать код - вы можете полностью распространять приложения Python как .pyc (скомпилированный Python байт-код). Так работает Py2App.

Он по-прежнему будет повторно распространяться, но будет очень сложно редактировать файлы - так что вы можете добавить некоторые базовые вещи лицензирования, и не помешать этому несколько # ..

Как я уже сказал, я не думаю, что вы добьетесь успеха в борьбе с пиратством с помощью шифрования или обфускации и т. д. В зависимости от ваших клиентов простой контракт и, возможно, некоторые действительно базовые проверки пойдут намного дальше, чем какая-то сложная система дешифрования. (И по опыту использования вашего приложения лучше вместо надеюсь не хуже)

Возможно, в случае контракта вы могли бы поместить «ловушки» (уникальные, скрытые и трудные для поиска идентификаторы) в свой код (как они делают на картах), чтобы вы могли окончательно определить, какой клиент утек ваш код.

cdleary 15.01.2009 11:04

Вы никогда не сможете скрыть исходный код от людей, которые действительно этого хотят. Лучше всего осознать этот факт сейчас, а потом избавить себя от головной боли.

Возможно, вам стоит задуматься над тем, что делает FogBugz. Просто включите небольшой двоичный файл (возможно, программу C), который скомпилирован для целевых платформ и содержит код для проверки лицензии.

Таким образом вы сможете сохранить честность честных людей с минимальной головной болью с вашей стороны.

«Шифрование» исходного кода Python (или байт-кода, или на самом деле байт-кода для любого языка, который его использует, а не только Python) похоже на те маленькие JavaScript-штуки, которые некоторые люди помещают на веб-страницы, чтобы попытаться отключить правую кнопку мыши, объявляя: « теперь ты не можешь украсть мои изображения! "

Обходные пути тривиальны и не остановят решительного человека.

Если вы действительно серьезно относитесь к продаже части программного обеспечения Python, вам нужно действовать серьезно. Заплатите юристу за составление условий лицензии / контракта, попросите людей согласиться с ними во время покупки, а затем просто предоставьте им фактическое программное обеспечение. Это означает, что вам придется привлекать людей к суду, если они нарушают условия лицензии / контракта, но вам придется делать это несмотря ни на что (например, если кто-то взламывает ваше «шифрование» и начинает распространять ваше программное обеспечение) и Фактическая правильная форма юридических слов, уже записанных на бумаге, с их подписью, будет намного лучше для вашего бизнеса в долгосрочной перспективе.

Если вы действительно параноик который насчет того, что люди «крадут» ваше программное обеспечение, просто придерживайтесь модели хостинга и не предоставляйте им доступ к серверу. На этой модели основано множество успешных предприятий.

Могу я говорить откровенно, как друг? Если ваше приложение не действительно потрясающее, у вас может не быть много покупателей. Зачем тратить время на юристов, обфускацию, лицензирование и тому подобное? Вы получите лучшую репутацию, открыв исходный код своего кода ... и поддерживая его.

Django - это продукт с открытым исходным кодом, который относится к лицензированию (и запутыванию). Конечно, лицензия MIT более распространена, чем GPL; тем не менее, они оба очень далеки от чего-либо вроде лицензионного соглашения Microsoft EULA. Многие Djangophiles откажутся от закрытого исходного кода просто потому, что это то, что делает Microsoft.

Кроме того, люди будут больше доверять вашему коду, поскольку они смогут прочитать его и убедиться, что он не содержит вредоносного кода. Помните, «запутывание» означает «сокрытие»; и кто действительно будет знать, что вы спрятали?

Конечно, нет простого способа монетизировать код с открытым исходным кодом. Но вы можете предложить свои услуги или даже опубликовать кампанию на Pledgie.com для тех, кто благодарен вам за всю вашу огромную работу.

Другие вопросы по теме