Skip to content

HAP Python 加固 ​

方式适用场景
单文件一键加固对 Python 单文件进行全程序保护
Nuitka SDK在 Windows Python 应用中接入 HAP 网络授权,并用 Nuitka 构建原生应用

单文件一键加固 ​

支持 Python 单文件一键加固。

  • 支持 CPython 3.9~3.14
  • 支持移除 docstring、压缩字符串
  • 支持全程序保护

请联系客服了解详情。

Nuitka SDK ​

Python Nuitka SDK 提供与 C/C++ SDK 同名的 Python 接口,涵盖初始化、许可证登录、心跳、会话完整性检查和云函数。HAP 可识别调用 SDK 的业务函数,并推荐保护。

调用约定 ​

使用 import hap_sdk as hap 导入 SDK。每个 HAP API 调用单独占一行,并使用位置参数。

安全提示

登录成功后,可在实际业务函数内直接调用 hap.HAP_LoginIntegrity(),并根据返回值决定是否继续执行受保护的操作。将检查分散到业务功能中,可让授权验证与业务逻辑结合,增强安全性。

数据类型 ​

ClientVersion 是由四个整数组成的元组,依次表示主版本号、次版本号、修订号和构建号,例如 (1, 0, 0, 0)。

枚举成员含义
UserInfoTypeLicense、Owner、Note许可证、管理员、备注
UserInfoTypeExpireTime、Credits剩余有效时间(秒)、剩余点数
ClientVersionInfoTypeNote_UTF8、Note_GBK、Note_UTF16_LE按指定编码获取客户端版本备注

HAP_Initialize ​

python
def HAP_Initialize(host: str, port: int, version: ClientVersion) -> bool: ...
  • 功能:初始化 SDK,配置授权服务器和当前客户端版本。
  • 参数:host 为服务器 IP 地址或主机名,port 为端口,version 为四段版本号。
  • 返回值:成功返回 True,失败返回 False。失败后可调用 HAP_GetLastError()。

HAP_Cleanup ​

python
def HAP_Cleanup() -> None: ...
  • 功能:释放 SDK 资源。
  • 参数:无。
  • 返回值:None。
  • 注解:程序退出前先停止后台心跳,再清理 SDK。

HAP_Login ​

python
def HAP_Login(key: str) -> bool: ...
  • 功能:使用许可证登录。
  • 参数:key 为许可证字符串。
  • 返回值:成功返回 True,失败返回 False。
  • 注解:先完成 SDK 初始化。登录失败后调用 HAP_GetLastError() 获取错误码。

HAP_GetUserInfo ​

python
def HAP_GetUserInfo(type: UserInfoType) -> str | int | None: ...
  • 功能:获取当前登录会话的用户信息。
  • 参数:type 为 UserInfoType 枚举值。
  • 返回值:许可证、管理员和备注返回 str。剩余有效时间和点数返回 int。失败返回 None。

HAP_GetClientVersionInfo ​

python
def HAP_GetClientVersionInfo(type: ClientVersionInfoType) -> bytes | None: ...
  • 功能:从服务端获取初始化时指定版本的备注。
  • 参数:type 为 ClientVersionInfoType 枚举值,用于选择编码。
  • 返回值:成功返回 bytes,可按所选编码解码。失败返回 None。
  • 注解:初始化后即可调用。失败时可通过 HAP_GetLastError() 读取 SDK 错误码。

HAP_GetLastError ​

python
def HAP_GetLastError() -> int: ...
  • 功能:读取 SDK 记录的最近一个 HAP 错误码。
  • 参数:无。
  • 返回值:整数错误码,含义见错误码表。
  • 注解:在原调用失败后立即读取,以免后续 SDK 调用覆盖错误状态。

HAP_GetLastNetworkError ​

python
def HAP_GetLastNetworkError() -> int: ...
  • 功能 读取最近一次网络失败对应的 Windows WinSock 错误码,补充 HAP_GetLastError() 提供的 HAP 错误信息。
  • 参数 无。
  • 返回值 返回整数型 WinSock 错误码。0 表示系统错误码不可用。
  • 注解 调用失败后立即保存两个错误码,后续 SDK 调用可能清除或覆盖错误状态。

HAP_Heartbeat ​

python
def HAP_Heartbeat() -> bool: ...
  • 功能:登录成功后,向服务端发送心跳以维持授权会话。
  • 参数:无。
  • 返回值:成功返回 True,失败返回 False。
  • 注解:失败后可调用 HAP_GetLastError() 获取错误码。

HAP_LoginIntegrity ​

python
def HAP_LoginIntegrity() -> bool: ...
  • 功能:检查当前登录会话的完整性和合法性。
  • 参数:无。
  • 返回值:检查通过返回 True,失败返回 False。

安全提示

登录成功后,可在对性能要求不高的实际业务函数中直接调用 HAP_LoginIntegrity()。检查通过后再执行受保护的操作。将检查分散到不同业务功能中,可让授权验证与业务逻辑结合,增强安全性。

HAP_CloudFunction ​

python
def HAP_CloudFunction(command: str) -> bytes: ...
  • 功能:向服务端插件模块发送命令并获取结果。
  • 参数:command 为传给插件的命令字符串。
  • 返回值:返回结果字节串。服务端未配置插件、插件未返回内容或调用失败时,可能得到 b""。
  • 注解:收到空字节串时,可立即读取 HAP_GetLastError() 辅助排查。

HAP_TerminateProcess ​

python
def HAP_TerminateProcess(exit_code: int) -> None: ...
  • 功能:立即终止当前进程。
  • 参数:exit_code 为进程退出码。
  • 返回值:调用后进程终止。

警告

此函数会结束整个进程。请在会话检查失败等需要终止程序的场景中调用。