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

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

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

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

我們知道,Python代碼默認(rèn)是公開的。當(dāng)你要把一個Python項目給別人運行的時候,一般來說別人就能看到你的全部源代碼。我們可以使用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)行破解來的,否則一般人看了這個混淆以后的代碼,直接就走了。

混淆完成以后,這個代碼依然是直接運行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項目

2024-02-20 22:13:48

Python項目Java

2020-05-19 13:55:38

Python加密密碼

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測試

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-09-13 20:38:47

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

2024-11-13 09:18:09

2021-04-05 14:47:55

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

2021-03-12 21:19:15

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

2021-11-12 05:00:43

裝飾器代碼功能

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2020-12-11 06:30:00

工具分組DataFrame
點贊
收藏

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

主站蜘蛛池模板: 伊人影院在线观看 | eeuss国产一区二区三区四区 | 久久99精品国产麻豆婷婷 | 美女网站视频免费黄 | 国产成人福利在线观看 | 亚洲精品电影网在线观看 | 欧美日韩精品久久久免费观看 | 欧美视频在线播放 | 色先锋影音 | 日韩免费视频 | 国产精品视频久久久 | av三级在线观看 | 国产精品久久国产精品 | 成人亚洲精品 | 91精品国产乱码久久久 | 欧洲妇女成人淫片aaa视频 | 亚洲一区二区久久 | 欧美久久一区二区 | 欧美一区二区三区久久精品 | 91视在线国内在线播放酒店 | 日韩1区2区 | 日日射影院 | 天天影视亚洲综合网 | 欧美精品一区二区三区一线天视频 | av在线天堂 | 免费在线黄色av | 欧美亚洲国产一区二区三区 | 亚洲 欧美 在线 一区 | 在线观看免费av网 | 欧美一区二区三区在线 | 在线高清免费观看视频 | 亚洲69p | 成人a视频片观看免费 | 亚洲福利在线观看 | 国产成人在线播放 | 久久久夜夜夜 | 91天堂| 精品国产一区久久 | 国产成人免费网站 | 国产高清一区二区三区 | 亚洲成人在线视频播放 |