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






Я бы сделал следующее:
Таким образом, пользователю нужно связаться с сервером только при изменении имени хоста и при первой установке, но вы получите небольшой уровень безопасности. Вы можете изменить имя хоста на что-то более сложное, но в этом нет необходимости - любой, кто захочет пиратство, сделает это, но такой простой механизм сохранит честность честных людей.
Зачем его шифровать? Если они все равно собираются связаться с вашей машиной, просто загрузите код .pyc прямо через установщик, тогда в их системе никогда не будет файлов .py (сохраните те, которые используются настраиваемыми или что-то еще).
Затем вы сталкиваетесь с проблемами с файлами pyc в разных версиях. Выполнив компиляцию на локальном компьютере, он устранит такие проблемы.
И потому что есть люди вроде меня, которым нравится иметь «распространяемый», а не загрузчик.
Вы можете упаковать все это как Amazon Machine Instance (AMI), а затем заставить их запускать ваше приложение на Amazon EC2. Преимущество этого решения в том, что Amazon использует позаботьтесь о выставлении счетов за вас, и, поскольку вы распространяете весь образ машины, вы можете быть уверены, что все ваши клиенты используют один и тот же стек LAMP. AMI - это зашифрованный образ машины, который настраивается так, как вы этого хотите.
Вы можете попросить Amazon выставить счет клиенту на единовременную плату, плату за использование или ежемесячную плату.
Конечно, это решение требует, чтобы ваши клиенты размещали свое приложение на Amazon и платили соответствующие сборы.
Amazon EC2 может быть слишком дорогим для небольшого приложения Django, поскольку вы получаете либо целую выделенную виртуальную машину, либо ничего. Думаю, это стоит не менее 80 долларов в месяц.
@luboshasko 5 $ в месяц
Не пытайтесь запутать или зашифровать код - это никогда не сработает.
Я бы посоветовал продавать приложение Django «как услугу» - либо разместить его для них, либо продать им код и поддержка. Составьте договор, запрещающий им распространять его.
Тем не менее, если вы решили каким-то образом запутать код - вы можете полностью распространять приложения Python как .pyc (скомпилированный Python байт-код). Так работает Py2App.
Он по-прежнему будет повторно распространяться, но будет очень сложно редактировать файлы - так что вы можете добавить некоторые базовые вещи лицензирования, и не помешать этому несколько # ..
Как я уже сказал, я не думаю, что вы добьетесь успеха в борьбе с пиратством с помощью шифрования или обфускации и т. д. В зависимости от ваших клиентов простой контракт и, возможно, некоторые действительно базовые проверки пойдут намного дальше, чем какая-то сложная система дешифрования. (И по опыту использования вашего приложения лучше вместо надеюсь не хуже)
Возможно, в случае контракта вы могли бы поместить «ловушки» (уникальные, скрытые и трудные для поиска идентификаторы) в свой код (как они делают на картах), чтобы вы могли окончательно определить, какой клиент утек ваш код.
Вы никогда не сможете скрыть исходный код от людей, которые действительно этого хотят. Лучше всего осознать этот факт сейчас, а потом избавить себя от головной боли.
Возможно, вам стоит задуматься над тем, что делает FogBugz. Просто включите небольшой двоичный файл (возможно, программу C), который скомпилирован для целевых платформ и содержит код для проверки лицензии.
Таким образом вы сможете сохранить честность честных людей с минимальной головной болью с вашей стороны.
«Шифрование» исходного кода Python (или байт-кода, или на самом деле байт-кода для любого языка, который его использует, а не только Python) похоже на те маленькие JavaScript-штуки, которые некоторые люди помещают на веб-страницы, чтобы попытаться отключить правую кнопку мыши, объявляя: « теперь ты не можешь украсть мои изображения! "
Обходные пути тривиальны и не остановят решительного человека.
Если вы действительно серьезно относитесь к продаже части программного обеспечения Python, вам нужно действовать серьезно. Заплатите юристу за составление условий лицензии / контракта, попросите людей согласиться с ними во время покупки, а затем просто предоставьте им фактическое программное обеспечение. Это означает, что вам придется привлекать людей к суду, если они нарушают условия лицензии / контракта, но вам придется делать это несмотря ни на что (например, если кто-то взламывает ваше «шифрование» и начинает распространять ваше программное обеспечение) и Фактическая правильная форма юридических слов, уже записанных на бумаге, с их подписью, будет намного лучше для вашего бизнеса в долгосрочной перспективе.
Если вы действительно параноик который насчет того, что люди «крадут» ваше программное обеспечение, просто придерживайтесь модели хостинга и не предоставляйте им доступ к серверу. На этой модели основано множество успешных предприятий.
Могу я говорить откровенно, как друг? Если ваше приложение не действительно потрясающее, у вас может не быть много покупателей. Зачем тратить время на юристов, обфускацию, лицензирование и тому подобное? Вы получите лучшую репутацию, открыв исходный код своего кода ... и поддерживая его.
Django - это продукт с открытым исходным кодом, который относится к лицензированию (и запутыванию). Конечно, лицензия MIT более распространена, чем GPL; тем не менее, они оба очень далеки от чего-либо вроде лицензионного соглашения Microsoft EULA. Многие Djangophiles откажутся от закрытого исходного кода просто потому, что это то, что делает Microsoft.
Кроме того, люди будут больше доверять вашему коду, поскольку они смогут прочитать его и убедиться, что он не содержит вредоносного кода. Помните, «запутывание» означает «сокрытие»; и кто действительно будет знать, что вы спрятали?
Конечно, нет простого способа монетизировать код с открытым исходным кодом. Но вы можете предложить свои услуги или даже опубликовать кампанию на Pledgie.com для тех, кто благодарен вам за всю вашу огромную работу.
Ага, это действительно лучший маршрут. Это должно "сбить с толку" 98,58% моих клиентов