成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:如何對Python代碼進(jìn)行混淆

開發(fā) 前端
Cython、Nuitka在打包大型項目時,需要寫大量的配置文件甚至是額外的程序,有一定的使用成本。如果你對安全的要求并沒有那么高,那么其實你只需要對Python代碼進(jìn)行混淆,就能防止自己的代碼被人輕易看到了。

目前市面上沒有任何方法能夠完全避免你的程序被人反編譯。即便是3A游戲大作,發(fā)布出來沒多久也會被人破解。現(xiàn)在只能做到增大反編譯的難度,讓程序相對無法那么快被破解。

我們知道,Python代碼默認(rèn)是公開的。當(dāng)你要把一個Python項目給別人運(yùn)行的時候,一般來說別人就能看到你的全部源代碼。我們可以使用Cython、Nuitka對代碼進(jìn)行打包,編譯成.so文件、.dll文件或者是可執(zhí)行文件,從而在一定程度上避免別人看到你的源代碼。我在字節(jié)的時候,內(nèi)部的一個系統(tǒng)就是使用Cython打包的,然后部署到客戶的服務(wù)器上。

Cython、Nuitka在打包大型項目時,需要寫大量的配置文件甚至是額外的程序,有一定的使用成本。如果你對安全的要求并沒有那么高,那么其實你只需要對Python代碼進(jìn)行混淆,就能防止自己的代碼被人輕易看到了。

我們可以使用Pyminifier來對Python代碼進(jìn)行混淆。它的使用方法非常簡單,pip安裝以后,執(zhí)行幾行命令就可以完成。我們來看幾個例子。

假設(shè)我有一段Python爬蟲代碼。原始代碼是這樣的:

import glob
import uvicorn
import random
from pathlib import Path
from fastapi import FastAPI
from fastapi.responses import FileResponse

IMAGE_TYPE = ['*.J*', '*.P*', '*.j*', '*.p*', '*.GIF', '*.gif']
app = FastAPI()


def iter_images(folder='*'):
    images = []
    target_folder = Path('images') / Path(folder)
    if folder != '*':
        if not Path(target_folder).exists():
            return []
    for image_type in IMAGE_TYPE:
        images.extend(glob.glob(str(target_folder / Path(image_type))))
    return images


@app.get('/')
def index():
    images = iter_images()
    if not images:
        return {'success': False, 'msg': 'No Images.'}
    path = random.choice(images)
    return FileResponse(path)


@app.get('/every/{name}')
def get_one_goddess(name):
    images = iter_images(name)
    if not images:
        return {'success': False, 'msg': 'No Images.'}
    path = random.choice(images)
    return FileResponse(path)



if __name__ == '__main__':
    uvicorn.run(app='main:app')

這段代碼能夠?qū)崿F(xiàn)一個簡單的圖片服務(wù)器,當(dāng)我們訪問http://127.0.0.1:8000時,就會隨機(jī)顯示一張圖片,如下圖所示:

圖片圖片

我們現(xiàn)在來安裝pyminifier。由于這個程序的代碼很久沒有更新了,因此如果你的Python版本比較高,那么需要首先降一下setuptools的版本,然后再安裝pyminifier:

pip install "setuptools<58.0.0"
pip install pyminifier

安裝完成以后,我們來對代碼進(jìn)行混淆,執(zhí)行如下命令:

pyminifier --nonlatin --replacement-length=50 main.py > output.py

生成的output.py就是混淆以后的代碼,效果如下圖所示:

圖片圖片

這樣的代碼,顯然已經(jīng)完全沒法看了。除非對方就是沖著對你的代碼進(jìn)行破解來的,否則一般人看了這個混淆以后的代碼,直接就走了。

混淆完成以后,這個代碼依然是直接運(yùn)行python output.py。功能不受任何影響。

這樣的混淆,屬于『君子鎖』,只放君子不防小人。真的要反混淆其實并不困難。只是增加了幾步操作而已。在對保密要求不那么高的情況下可以使用,畢竟非常簡單,不需要對已有代碼做任何修改。

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2021-10-15 21:08:31

PandasExcel對象

2024-07-30 08:16:18

Python代碼工具

2023-10-29 09:16:49

代碼安全命令

2025-05-28 03:15:00

Scrapy數(shù)據(jù)sleep

2021-04-12 21:19:01

PythonMakefile項目

2020-05-19 13:55:38

Python加密密碼

2024-02-20 22:13:48

Python項目Java

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-03-12 20:38:14

網(wǎng)頁Python測試

2021-09-13 20:38:47

Python鏈?zhǔn)?/a>調(diào)用

2024-11-13 09:18:09

2021-03-12 21:19:15

Python鏈?zhǔn)?/a>調(diào)用

2021-04-05 14:47:55

Python多線程事件監(jiān)控

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-05-08 19:33:51

移除字符零寬

2021-07-27 21:32:57

Python 延遲調(diào)用

2021-11-12 05:00:43

裝飾器代碼功能

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2020-12-11 06:30:00

工具分組DataFrame
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品视频一二三区 | 91精品一区二区 | 午夜精品一区二区三区在线视频 | 久久久久久91| 正在播放国产精品 | xxxxx黄色片 欧美一区免费 | 国产一区久久 | 新超碰97| 国产精品久久久久久久久久久新郎 | 欧美亚洲视频在线观看 | 色偷偷888欧美精品久久久 | 草草视频在线观看 | 国产一级电影在线观看 | 久久久久久国产精品免费免费 | 一级毛片高清 | 日韩三级一区 | 在线观看视频91 | 成人精品一区二区三区中文字幕 | 九九热免费观看 | 日韩视频―中文字幕 | 羞羞视频网 | 中文字幕国产高清 | 国产精品美女久久久久久久久久久 | av性色全交蜜桃成熟时 | 日韩精品一区二区三区在线观看 | 日本视频在线 | 一级黄色片在线免费观看 | 综合激情久久 | 日韩www | 国产综合一区二区 | 国产区久久| www国产亚洲精品久久网站 | 精品久久久久久久久久久久 | 999热精品视频 | 天天操天天干天天透 | 91精品国产乱码麻豆白嫩 | 日日夜夜草 | 美国黄色毛片 | 国产农村一级国产农村 | 热re99久久精品国产99热 | 日本一区二区三区视频在线 |