Kamixitong/docs/INTEGRATION.md
2025-11-11 21:39:12 +08:00

5.9 KiB
Raw Permalink Blame History

软件授权系统集成指南

本文档介绍如何将KaMiXiTong授权验证器集成到您的Python软件中。

快速开始

1. 获取验证器模块

auth_validator.py 文件复制到您的项目中,或者通过以下方式导入:

# 方式1: 复制文件到项目
from auth_validator import AuthValidator

# 方式2: 如果系统已安装
from kamaxitong import AuthValidator

2. 基本集成

在您的主程序入口处添加以下代码:

from auth_validator import AuthValidator

def main():
    # 创建验证器实例
    validator = AuthValidator(
        software_id="YOUR_SOFTWARE_ID",  # 在后台创建产品时获得
        api_url="http://your-domain.com/api/v1",  # 后台API地址
        gui_mode=True  # 使用图形界面输入卡密(可选)
    )

    # 执行验证
    if not validator.validate():
        print("授权验证失败,程序退出")
        return

    # 验证成功,继续执行您的程序逻辑
    print("授权验证通过,启动程序...")
    your_main_program()

if __name__ == "__main__":
    main()

3. 配置参数说明

参数 类型 默认值 说明
software_id str 必填 软件ID在后台创建产品时自动生成
api_url str http://localhost:5000/api/v1 后台API地址
secret_key str default-secret-key 验证密钥,需与后台配置一致
cache_days int 7 离线缓存有效期(天)
timeout int 3 网络请求超时时间(秒)
gui_mode bool False 是否使用图形界面输入卡密

高级用法

1. 自定义错误处理

from auth_validator import AuthValidator

class MyValidator(AuthValidator):
    def _show_message(self, title, message, is_error=False):
        # 自定义消息显示方式
        if is_error:
            print(f"❌ {title}: {message}")
        else:
            print(f"✅ {title}: {message}")

validator = MyValidator(software_id="YOUR_SOFTWARE_ID")
validator.validate()

2. 获取软件信息

validator = AuthValidator(software_id="YOUR_SOFTWARE_ID")

# 获取软件更新信息
software_info = validator.get_software_info()
if software_info:
    print(f"最新版本: {software_info.get('latest_version')}")
    print(f"下载地址: {software_info.get('download_url')}")

3. 清除本地缓存

validator = AuthValidator(software_id="YOUR_SOFTWARE_ID")
validator.clear_cache()  # 清除授权缓存

部署建议

1. 打包发布

使用 PyInstaller 打包时,建议包含验证器文件:

pip install pyinstaller
pyinstaller --onefile --add-data "auth_validator.py;." your_program.py

2. 代码混淆

为了增加安全性,建议对验证器进行混淆:

# 安装 PyArmor
pip install pyarmor

# 混淆验证器
pyarmor obfuscate auth_validator.py --output dist_obf

# 使用混淆后的文件
from dist_obf.auth_validator import AuthValidator

3. 环境变量配置

建议使用环境变量管理配置:

import os
from auth_validator import AuthValidator

validator = AuthValidator(
    software_id=os.environ.get('SOFTWARE_ID'),
    api_url=os.environ.get('AUTH_API_URL'),
    secret_key=os.environ.get('AUTH_SECRET_KEY')
)

常见问题

Q: 验证器无法连接到服务器怎么办?

A: 验证器支持离线缓存模式。如果用户曾经成功验证过在缓存有效期内默认7天可以离线使用。

Q: 如何处理用户更换硬件?

A: 用户更换硬件后机器码会改变,需要重新激活。管理员可以在后台解绑原设备,允许用户在新设备上重新激活。

Q: 如何防止验证器被绕过?

A: 建议采取以下安全措施:

  1. 使用代码混淆工具
  2. 将验证逻辑分散到程序的多个关键位置
  3. 定期更新验证器版本
  4. 在后台监控异常验证行为

Q: 支持哪些操作系统?

A: 验证器支持 Windows、Linux 和 macOS通过以下方式生成机器码

  • Windows: 使用 WMI 获取硬件信息
  • Linux: 读取 /sys/class/dmi/id/ 下的系统信息
  • macOS: 使用 system_profiler 命令

示例项目

GUI应用程序示例

import tkinter as tk
from tkinter import messagebox
from auth_validator import AuthValidator

class MyApp:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("我的软件")

        # 验证授权
        if not self.check_license():
            self.root.destroy()
            return

        self.setup_ui()

    def check_license(self):
        validator = AuthValidator(
            software_id="MY_APP_ID",
            gui_mode=False  # 自定义GUI
        )

        if not validator.validate():
            messagebox.showerror("授权失败", "软件授权验证失败,程序无法启动")
            return False
        return True

    def setup_ui(self):
        label = tk.Label(self.root, text="欢迎使用我的软件", font=("Arial", 16))
        label.pack(pady=50)

    def run(self):
        self.root.mainloop()

if __name__ == "__main__":
    app = MyApp()
    app.run()

命令行工具示例

import click
from auth_validator import AuthValidator

@click.command()
@click.option('--software-id', required=True, help='软件ID')
@click.option('--api-url', default='http://localhost:5000/api/v1', help='API地址')
def main(software_id, api_url):
    """我的命令行工具"""

    validator = AuthValidator(
        software_id=software_id,
        api_url=api_url
    )

    if not validator.validate():
        click.echo("❌ 授权验证失败")
        return

    click.echo("✅ 授权验证通过")
    # 您的程序逻辑

if __name__ == "__main__":
    main()

技术支持

如需技术支持或报告问题,请联系: