Django 代码保护

2023-02-22 14:34:07 浏览数 (1)

常用的代码保护不外乎下面几种方法:

代码语言:javascript复制
发行 .pyc 文件
代码混淆
使用 py2exe
使用 Cython

django发布的需要以服务运行,通过其他的几种方法来实现保护,都不太现实。所以发布可以通过cython的方式实现。

  1. 安装cython
代码语言:javascript复制
pip3 install cython

2.在项目目录创建setup.py 编辑内容如下,其中“app/file1.py”是你所要打包的py文件名,这儿需要把app下所有的py文件都添加进来(当然也可以添加部分)

代码语言:javascript复制
from distutils.core import setup

from Cython.Build import cythonize

fileSet = set()

fileSet.add("UserBase/models.py")
fileSet.add("UserBase/views.py")

setup(

    ext_modules=cythonize(fileSet)

)

3.运行setup.py

代码语言:javascript复制
python3 setup.py build_ext --inplace 

编译后会生成对应的so文件。

4.删除原始py文件,并且重启服务

代码语言:javascript复制
python manage.py runserver

参考链接:

https://blog.csdn.net/m0_59882674/article/details/118405486

ps:

在开发环境尽量不要编译为so文件,否则新添加的代码可能会无法识别。如果提示如下的类似错误:

代码语言:javascript复制
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/zhongming/PycharmProjects/djangoProject/GreenPower/UserBase/urls.py", line 18, in <module>
    path(r'app-menu-data/<int:pk>/', views.appmenu_detail),
AttributeError: module 'UserBase.views' has no attribute 'appmenu_detail's

删除掉编译好的so文件即可。

☆文章版权声明☆

* 网站名称:obaby@mars

* 网址:https://h4ck.org.cn/

* 本文标题: 《Django 代码保护》

* 本文链接:https://h4ck.org.cn/2022/08/django-代码保护/

* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


分享文章:

相关文章:

  1. Django 限制访问频率
  2. ImportError: DLL load failed while importing win32console【pywin32】
  3. ubuntu uwsgi No module named ‘django’
  4. Django REST framework foreignkey 序列化
  5. Django APScheduler uwsgi 定时任务重复运行
  6. django 主动抛出 403 异常
  7. 再谈《Django 限制访问频率》
  8. ngix uwsgi django 以及阿里云rds数据库数据导入
  9. Django input value值被截断
  10. Django admin Foreignkey ManyToMany list_display展示

0 人点赞