本文目錄一覽:
- 1、一個python程序如何在沒有python環境的pc機上運行,難道必須也要搭建python環境?
- 2、python的編輯器IDLE打不開了,有沒有什麼解決辦法或者替代辦法?
- 3、Python程序代碼混淆、編譯、打包、運行(桌面程序防破解向)
- 4、python爬蟲有什麼辦法防止反爬蟲
- 5、python中,如果自己寫的模塊與系統模塊重名,該怎麼調用系統的模塊?
一個python程序如何在沒有python環境的pc機上運行,難道必須也要搭建python環境?
py2exe能夠把Python script轉換成,可以在windows上獨立執行的,(不需安裝Python)的exe程序(加上其它必需的運行時函數庫)。解決方法如下:
1、首先打開百度,登陸python官網。
2、下載downloads,windows版本。
3、然後在新打開的頁面中,選擇適合自己的電腦的版本。
4、等待下載完畢後,打開安裝包,開始安裝,next。
5、然後選擇安裝路徑,最好不裝在C盤。
6、最後等待安裝完畢,python已經在自己的電腦上安裝好了。
python的編輯器IDLE打不開了,有沒有什麼解決辦法或者替代辦法?
python的編輯器IDLE打不開了,是設置錯誤造成的,解決方法如下:
1、首先,在win10搜索框搜索到IDLE,然後點擊運行IDLE便可以了。
2、打開時候是處於測試模式的,這種模式比較友好,可以隨意測試。
3、如果想要編輯一個比較正規的python文件就需要新建了,“Ctrl+N”便是idle的文件新建了。
4、之後,便會多出一個窗口,這個窗口可以編輯python代碼了。默認是untitled,所以要Ctrl+S保存好它才可以。保存時默認就是Python File類型。
5、保存好之後就是寫上正規的Python代碼了,這裡直接用print測試。
6、然後在之前的Shell窗口便會看到文件的運行結果,還有文件的路徑提示,就完成了。
Python程序代碼混淆、編譯、打包、運行(桌面程序防破解向)
像Python這種解釋性的語言,要想私有化部署的同時又保護好源碼,就像是對於魚和熊掌的追求。
雖然做不到盡善盡美,但是對代碼進行混淆,增加一點破解的難度,或許能規避一些泄露的風險。
本次演示環境:linux
確保要發布的包根目錄(“demo”)中有__main__.py文件,這個是程序執行入口。
編譯
批量改名.pyc文件
移動.pyc文件
清理.py文件
清理__pycache__文件夾
打包成zip
運行時只要將zip文件作為參數即可
最終整合腳本
調用方式
對於在變量和函數名上的混淆有點小兒科,而對於跨文件的類名的混淆又太容易實現。
所以對於混淆程度的取捨,要視工程的規模而定。
2.1 混淆工具pyminifier
在原來的工具 pyminifier上修復了幾個bug。
安裝:
python3 安裝
或者clone下來,自行安裝
使用例子
2.2 源碼變更
不同的配置對於源碼的要求不同,以下是筆者踩過的坑。
其他混淆想法
結合混淆、編譯和打包,嘗試出以下發布腳本。
主要的思路 :創建一個工作目錄tmp,然後在此目錄下混淆、編譯python代碼,完成後把內容打包成pyc文件,再將pyc文件和其他配置文件移動到dist,發布dist即可。
混淆的目的是最大程度保護源碼,在發布到客戶端後不被輕易破解。
python爬蟲有什麼辦法防止反爬蟲
動態頁面的限制,爬蟲工作者可能會遇到這樣的尷尬,當你抓取下目標頁面之後,你發現,關鍵信息處一片空白,只有密密麻麻一片的框架代碼,這是因為該網站的信息是通過用戶Post的XHR動態返回內容信息,解決這種問題就是要通過開發者工具(FireBug等)對網站流進行分析,對內容信息進行抓取,獲取所需要的內容。
用戶行為檢測,有一些是網站通過檢測和分析一些用戶的行為,比如說是針對cookies,通過檢查cookies來判斷用戶是不是可以利用和保存的有效客戶,通常是需要登陸的網站,經常會採用這樣的技術。層次再深的還有,信息驗證,部分網站的登陸是需要驗證嗎的驗證的,就像登陸的時候,系統會自動分配出驗證碼,authenticity_token,authenticity_token會和用戶提交的登錄名和密碼一起發送回服務器。
IP的訪問頻率被限制,一些平台為了防止多次訪問網站,會在某個同一個IP在單元時間內超過一定的次數的時候,將禁止這個IP繼續訪問。對於這個限制IP訪問效率,可以使用代理IP的方法來解決問題比如使用IPIDEA。
以上簡單的說了三種常見的反爬蟲已經反爬蟲的應對方法,一般來講越高級的爬蟲被封鎖的機率救會越低,但是性能會比較低一些。
python中,如果自己寫的模塊與系統模塊重名,該怎麼調用系統的模塊?
sys.path是一個list,存放了當前所有import搜索的路徑。
絕大多數情況下,首個元素是””,即空串,也就是說,當你import re的時候,首先搜索的是”re”,這時候就會直接在當前目錄搜索到re。如下圖:
解決方法也有不止一個:
1,在當前目錄創建一個子文件夾,例如mine,在mine里放一個__init__.py,不用有代碼,空文件即可。使用的時候:import mine.re
2,在sys.path上做手腳,把第一個空串挪到最後面去:
import sys
sys.path = sys.path[1:]
sys.path.append(“”)
這樣當前目錄會跑到最後面去,從而達到最後搜索的目的。
不過這很可能有副作用,即你創建的模塊,不能和前面搜索路徑里的任何文件重名,否則會無法import你的模塊。
這也是為什麼默認把當前路徑放在最前搜索的原因,因為是用戶自己寫的,顯然優先級最高。
儘管就你的問題作出分析和提出一些可能的解決辦法,但是嚴重不建議在實際工程起和系統模塊重名的文件名,這是自找麻煩。
當然,研究探討它的實現原理,始終是值得肯定的。
最後強調一下,當你在當前文件夾創建了一個sys.py時,方法2不好用!
原創文章,作者:QAOS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/133226.html