【Python】脚本保护与分发:5 种方法轻松保护你的 Python 脚本

LuckiBit

以下是关于如何隐藏 clean.py 脚本内部代码的 5 种方法的改进与完善版,包括详细的步骤、工具下载、安装和使用说明。

目录

  • 方法 1:将 Python 脚本转换为可执行文件(EXE)
  • 步骤:
  • 方法 2:将代码转换为字节码
  • 步骤:
  • 方法 3:将代码混淆(Obfuscation)
  • 工具推荐:
  • 方法 4:使用 Cython 将代码编译为二进制文件
  • 步骤:
  • 方法 5:将脚本部署为云服务
  • 步骤:
  • 文件大小对比
  • 总结
  • 结束语
  • 相关文章:
  • 方法 1:将 Python 脚本转换为可执行文件(EXE)

    通过将 clean.py 转换为 .exe 文件,可以隐藏源代码。

    步骤:

    1. 安装 PyInstaller:

    2. 打开终端(如 cmdPowerShell),运行以下命令安装 PyInstaller:
      pip install pyinstaller
      
    3. 生成可执行文件:

    4. clean.py 文件所在目录下,运行以下命令:
      pyinstaller --onefile --noconsole clean.py
      
    5. --onefile:将所有文件打包成单个可执行文件。
    6. --noconsole:不显示控制台窗口(适用于 GUI 程序)。
    7. 找到生成的文件:

    8. 打包完成后,在 dist 文件夹中会生成 clean.exe。将其分发给其他用户,而无需提供原始代码。
    9. 优点:

    10. 无需安装 Python 环境,用户只需运行生成的 clean.exe 即可。
    11. 注意:

    12. 打包后的文件可能会比较大,取决于 Python 的运行时环境。

    方法 2:将代码转换为字节码

    将 Python 脚本编译为 .pyc 文件,分发 .pyc 而非 .py 文件。

    步骤:

    1. 编译为字节码:

    2. 在终端运行以下命令:
      python -m compileall clean.py
      
    3. 运行后,会生成一个 __pycache__ 文件夹,里面包含类似 clean.cpython-XX.pyc 的文件(XX 是 Python 版本号)。
    4. 运行 .pyc 文件:

    5. 用户可以运行 .pyc 文件,而无法直接查看源码。
      python __pycache__/clean.cpython-XX.pyc
      
    6. 优点:

    7. 快速、简单。
    8. 源代码被隐藏,虽然 .pyc 可以反编译,但仍然增加了代码保护的难度。
    9. 注意:

    10. 需要用户安装与 .pyc 文件兼容的 Python 版本。

    方法 3:将代码混淆(Obfuscation)

    通过代码混淆工具将代码加密,使代码难以阅读。

    工具推荐:

    1. pyarmor(强烈推荐):

    2. 安装:
      pip install pyarmor
      
    3. 加密代码:
      pyarmor pack -x " --onefile" -e " --noconsole" clean.py
      
    4. 生成一个加密的独立可执行文件,类似方法 1 的效果。
    5. 或者,仅对 clean.py 加密:
      pyarmor obfuscate clean.py
      
    6. 生成一个混淆后的 .py 文件。
    7. 优点:

    8. 高度混淆,几乎不可能还原源码。
    9. 可直接运行混淆后的 .py.exe 文件。
    10. 注意:

    11. 免费版可能存在功能限制。
    12. 用户仍需安装 Python 环境运行混淆后的 .py 文件。

    方法 4:使用 Cython 将代码编译为二进制文件

    通过 Cython 编译,将 Python 脚本转换为二进制文件(.so.pyd)。

    步骤:

    1. 安装 Cython:

    2. 运行以下命令:
      pip install cython
      
    3. 创建编译文件:

    4. 创建一个名为 setup.py 的文件,内容如下:
      from setuptools import setup
      from Cython.Build import cythonize
      
      setup(
          ext_modules=cythonize("clean.py", compiler_directives={"language_level": "3"}),
      )
      
    5. 编译为扩展模块:

    6. 运行以下命令:
      python setup.py build_ext --inplace
      
    7. 完成后,生成一个 .so(Linux/macOS)或 .pyd(Windows)文件。
    8. 运行二进制文件:

    9. 替换掉 clean.py,仅分发 .so.pyd 文件,运行时效果与原代码相同:
      python -c "import clean"
      
    10. 优点:

    11. 完全隐藏源码,仅提供编译后的二进制文件。
    12. 性能略有提升。
    13. 注意:

    14. 用户需要相同环境运行编译后的二进制文件。

    方法 5:将脚本部署为云服务

    clean.py 部署在服务器上,用户通过网络接口调用脚本的功能,而无需直接运行代码。

    步骤:

    1. 使用 Flask 创建 API:

    2. 安装 Flask:
      pip install flask
      
    3. 创建 app.py
      from flask import Flask, request, jsonify
      import os
      
      app = Flask(__name__)
      
      @app.route('/clean', methods=['POST'])
      def clean():
          target_dir = request.json.get('target_dir', os.getcwd())
          # 运行清理逻辑
          return jsonify({"message": f"Cleaning completed for {target_dir}"})
      
      if __name__ == "__main__":
          app.run(host='0.0.0.0', port=5000)
      
    4. 运行 Flask 服务:

    5. 启动服务:
      python app.py
      
    6. 客户端调用 API:

    7. 用户可以通过以下命令调用脚本功能:
      curl -X POST http://<server-ip>:5000/clean -H "Content-Type: application/json" -d '{"target_dir":"/path/to/dir"}'
      
    8. 优点:

    9. 源代码完全不暴露。
    10. 用户仅通过网络接口访问脚本功能。
    11. 注意:

    12. 需要配置服务器环境。

    文件大小对比

    方法 文件类型 文件大小范围 说明
    方法 1:EXE .exe 5-50 MB 包含运行环境,适合无 Python 环境用户。
    方法 2:字节码 .pyc 原文件的 1.2 倍 简单、文件体积小,但依赖 Python 环境。
    方法 3:混淆 .py / .exe 1.5-50 MB 混淆后 .py 较小,打包 .exe 较大。
    方法 4:Cython 编译 .pyd / .so 50 KB-几 MB 编译为二进制,较难反编译。
    方法 5:云服务 无需分发文件 无直接影响 客户端无文件下载,依赖网络交互。

    总结

    方法 难度 优点 注意事项
    方法 1:EXE 简单 用户无需 Python 环境,直接运行 打包后的文件较大
    方法 2:字节码 简单 快速、简单 需要安装兼容的 Python 环境
    方法 3:混淆 中等 代码高度保护 部分工具免费版有功能限制
    方法 4:Cython 中等 完全隐藏源码,性能提升 运行环境需与编译环境一致
    方法 5:云服务 较复杂 源代码完全不暴露,便于集中管理和更新 需要服务器支持

    推荐根据实际需求选择合适的方法。

    结束语

    1. 本节内容已经全部介绍完毕,希望通过这篇文章,大家对 Python 脚本保护与分发有了更深入的理解和认识。
    2. 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。再次感谢大家的关注和支持!点我关注❤️

    相关文章:

  • 指针的神秘探险:从入门到精通的奇幻之旅 !
  • 作者:LuckiBit\x7F\x7F

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python】脚本保护与分发:5 种方法轻松保护你的 Python 脚本

    发表回复