SunLicenseВойти
Для продавцов Python-скриптов и утилит

Продаёте утилиту на Python? Дайте ключ каждому покупателю.

Один вызов SDK. Ключи из вашего магазина, лимиты устройств, возврат отключает.

Создать бесплатный аккаунт

Тариф Free · Без банковской карты · Готово за минуты

Пишете код с ИИ-агентом? Вставьте один промпт
  • Python
  • Gumroad
  • Lemon Squeezy
  • Ko-fi
  • Payhip
  • Stripe
  • Windows
  • macOS
  • Linux
Что вы получаете

Создано под то, как вы продаёте.

pip install sunlicense

Только стандартная библиотека, Python 3.8+.

result.valid

Лимиты устройств

1, 2 или 5 устройств на лицензию.

TOO_MANY_MACHINES

Ключи из вашего магазина

Gumroad, Lemon Squeezy, Payhip, Ko-fi или Stripe.

Подписки и пробные версии

Закончившиеся подписки приостанавливают ключ.

Офлайн-файлы лицензий

Подписанные, проверяются вашим открытым ключом.

Ed25519

Ключ внутри zip

Загрузки из портала несут ключ каждого покупателя.

Standard
Как работает

Готово до следующего релиза.

  1. 1Создать бесплатный аккаунт
  2. 2Подключите свой магазин
  3. 3pip install, проверка при запуске
yourtool/license.py
import platform
import sys

from sunlicense import SunLicense  # pip install sunlicense

client = SunLicense(base_url="https://api.sunlicense.com",
                    token="slk_...")  # API key: validation only, safe to ship

def require_license(key: str) -> None:
    result = client.validate(key, host=platform.node())
    if not result.valid:  # result.data["code"] says why, e.g. TOO_MANY_MACHINES
        sys.exit("License not valid. Manage your key at yourtool.example/account")
Вопросы и ответы

Вопросы и ответы.

Как добавить лицензионный ключ в Python-скрипт?

Выполните pip install sunlicense, создайте API-ключ в панели управления и вызывайте client.validate(key, host=machine_id) при запуске утилиты. Он возвращает valid, HTTP-статус и JSON-ответ с кодом вроде EXPIRED или TOO_MANY_MACHINES. SDK использует только стандартную библиотеку, так что дополнительных зависимостей нет.

Разве покупатели не могут просто удалить проверку из файла .py?

Решительный человек сможет: исходный код на Python можно отредактировать, а упаковка через PyInstaller лишь усложняет задачу. Проверка ключа останавливает случайную раздачу и возвращённые копии. Всё, что ваша утилита делает на вашем собственном сервере, например API, к которому она обращается, может проверять ключ там, где его не убрать.

Можно ли продавать мою утилиту по подписке?

Да. Используйте политику подписки и подключите магазин: когда заканчивается участие в Gumroad, подписка Lemon Squeezy или подписка Stripe, магазин сообщает об этом в SunLicense, и ключ приостанавливается. SunLicense отвечает только за лицензирование; что делает ваша утилита, решаете вы.

Это бесплатно?

Да. Тариф Free включает три продукта, 100 лицензий и 10 000 проверок лицензий в месяц, без банковской карты. Платные тарифы — от 5 $ в месяц, а проверки лицензий ваших покупателей продолжают работать, даже если вы превысите лимит.

Защитите следующий релиз.

  • Тариф Free
  • Без банковской карты
  • Отмена в любой момент