如何用Python開發(fā)移動(dòng)App后臺(tái)需要掌握哪些技術(shù)
一、Python語(yǔ)言基礎(chǔ)及其他Web開發(fā)知識(shí)
對(duì)于初學(xué)者而言,首先需要掌握Python語(yǔ)言的基本語(yǔ)法。除此之外,還需要了解Web開發(fā)的相關(guān)知識(shí),如數(shù)據(jù)庫(kù)操作、緩存處理等。為了深入理解大型網(wǎng)站的技術(shù)架構(gòu),可以閱讀《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》一書,其中包含了接地氣的網(wǎng)站架構(gòu)經(jīng)驗(yàn)、網(wǎng)站生存技術(shù)心要以及應(yīng)對(duì)大數(shù)據(jù)挑戰(zhàn)的干貨分享。

二、選擇合適的Python框架
在Python的Web框架中,Django、Flask、Pyramid等都是不錯(cuò)的選擇。選擇哪個(gè)框架取決于團(tuán)隊(duì)開發(fā)者的熟悉程度、對(duì)框架設(shè)計(jì)哲學(xué)的認(rèn)同度以及框架的第三方擴(kuò)展環(huán)境是否滿足需求。Tornado框架在維護(hù)大量Comet長(zhǎng)輪詢連接時(shí)具有優(yōu)勢(shì),但并不意味著使用了Tornado就能實(shí)現(xiàn)異步非阻塞。在選擇框架時(shí),需要充分考慮業(yè)務(wù)場(chǎng)景和團(tuán)隊(duì)的技術(shù)儲(chǔ)備。
三、服務(wù)器部署與調(diào)試
對(duì)于小型規(guī)模的服務(wù),可以使用fabric甚至幾個(gè)shell部署腳本進(jìn)行部署。當(dāng)服務(wù)器規(guī)模達(dá)到一定程度時(shí),可以選擇配置管理工具,如Saltstack或Ansible。部署過(guò)程包括安裝相關(guān)依賴、拷貝或checkout最新代碼、重啟服務(wù)等。本地調(diào)試可以使用web框架自帶的web服務(wù)器啟動(dòng),同時(shí)結(jié)合測(cè)試數(shù)據(jù)進(jìn)行測(cè)試。在測(cè)試方面,建議使用pytest,避免使用已經(jīng)停止維護(hù)好幾年的nose。
四、移動(dòng)后臺(tái)服務(wù)的開發(fā)框架與結(jié)構(gòu)化返回

在開發(fā)移動(dòng)后臺(tái)服務(wù)時(shí),可以選擇MVC或其他架構(gòu)模式。針對(duì)返回json數(shù)據(jù)最外層有一些相同的東西的情況,這是基于業(yè)務(wù)要求的封裝,需要自己實(shí)現(xiàn)。可以通過(guò)參考一些優(yōu)秀的開源項(xiàng)目來(lái)了解如何實(shí)現(xiàn)結(jié)構(gòu)化返回。
五、Python后臺(tái)服務(wù)的性能與用戶體驗(yàn)
一、關(guān)于大型網(wǎng)站與非大型網(wǎng)站的考慮
對(duì)于大多數(shù)公司而言,除非成長(zhǎng)為大型網(wǎng)站(如淘寶等),否則無(wú)需過(guò)度關(guān)注語(yǔ)言實(shí)現(xiàn)的層面?,F(xiàn)在的服務(wù)器成本相對(duì)較低,且能夠通過(guò)請(qǐng)求分發(fā)技術(shù),利用多臺(tái)服務(wù)器共同處理需求。對(duì)于非大型網(wǎng)站而言,更應(yīng)當(dāng)關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn),而非底層技術(shù)細(xì)節(jié)。
二、網(wǎng)頁(yè)前端與移動(dòng)端后臺(tái)的兼顧

在數(shù)據(jù)交換格式上,JSON因其普遍支持和便捷性成為優(yōu)選。除非在安全性要求極高的場(chǎng)景中,推薦使用自定義的二進(jìn)制協(xié)議,否則API可直接返回JSON數(shù)據(jù)給各平臺(tái)使用。關(guān)鍵在于確保返回的JSON數(shù)據(jù)能夠被各平臺(tái)有效重復(fù)利用。前后端分離并不只有React一種解決方案,應(yīng)根據(jù)實(shí)際需求和團(tuán)隊(duì)技術(shù)棧選擇合適的開發(fā)方式。
三、移動(dòng)端后臺(tái)開發(fā)的案例與開源項(xiàng)目
實(shí)際上,移動(dòng)后臺(tái)開發(fā)的核心是提供移動(dòng)端所需的數(shù)據(jù)服務(wù)。并不一定要尋找特定的開源項(xiàng)目來(lái)對(duì)照。選擇使用如Django Rest Framework或Flask-restful等框架,應(yīng)根據(jù)業(yè)務(wù)需求和團(tuán)隊(duì)技術(shù)背景而定。對(duì)于是否使用開源項(xiàng)目,關(guān)鍵在于其是否符合項(xiàng)目需求,而非是否標(biāo)明“移動(dòng)后臺(tái)框架”。
四、關(guān)于Python寫安卓APP的探討
雖然Python并非寫安卓APP的最佳選擇,但對(duì)于不想學(xué)習(xí)Java或已有Python基礎(chǔ)的開發(fā)者來(lái)說(shuō),Python確實(shí)提供了一個(gè)偷懶的選擇。在探索Python寫安卓APP的可能性時(shí),Kivy框架成為了一個(gè)很好的工具。Kivy支持跨平臺(tái)開發(fā),只編寫一次代碼即可生成安卓及IOS的APP,大大簡(jiǎn)化了開發(fā)流程。

五、運(yùn)維APP的設(shè)計(jì)與構(gòu)想
對(duì)于計(jì)劃開發(fā)的運(yùn)維APP,首先需要明確功能需求與設(shè)計(jì)。例如,可以設(shè)計(jì)一款包含常用運(yùn)維命令的APP,如top、free -m、df –h、uptime、iftop、iotop等。歡迎提出寶貴的建議,共同完善功能設(shè)計(jì)。該APP將會(huì)使用Kivy框架開發(fā),支持安卓及IOS平臺(tái),并計(jì)劃開源,以便大家共同使用和完善。
一、開篇介紹
本文將帶領(lǐng)大家一同探索Python版的2048游戲代碼。我們需要做好開發(fā)環(huán)境的準(zhǔn)備,其中最重要的就是安裝Kivy框架。
二、環(huán)境配置與Kivy安裝

首先說(shuō)明一下我的環(huán)境配置,我使用的是Python 2.7.10版本。接下來(lái),我們針對(duì)Windows平臺(tái)進(jìn)行Kivy的安裝。
需要更新pip、setuptools,可以使用命令行工具執(zhí)行以下命令:
python -m pip install --upgrade pip wheel setuptools
接著,安裝所需的依賴項(xiàng),包括:
最后一步,就是安裝Kivy框架本身了:python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew kivy.deps.gstreamer --extra-index-url
python -m pip install kivy
至此,Kivy的安裝就完成了。值得注意的是,如果是64位系統(tǒng)且沒(méi)有開啟虛擬化支持的話,在導(dǎo)入Kivy時(shí)會(huì)報(bào)錯(cuò)。此時(shí)需要進(jìn)入BIOS設(shè)置,開啟虛擬化支持。這里我們配置好了Kivy的運(yùn)行環(huán)境,這樣我們就可以直接在Windows機(jī)器上進(jìn)行調(diào)試了。關(guān)于如何將代碼編譯成APK文件,我們會(huì)在后續(xù)的內(nèi)容中進(jìn)行講解。三、導(dǎo)入Kivy并運(yùn)行測(cè)試
在Python環(huán)境中成功導(dǎo)入Kivy后,我們可以開始編寫一個(gè)簡(jiǎn)單的測(cè)試程序。按照慣例,我們先來(lái)運(yùn)行一個(gè)“Hello, World!”的程序。新建一個(gè).py文件,然后輸入以下代碼:
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
def build(self):
return Button(text='Hello, Kivy')
TestApp().run()運(yùn)行這個(gè)程序后,會(huì)彈出一個(gè)窗口,上面有一個(gè)“Hello, Kivy”的按鈕。點(diǎn)擊這個(gè)按鈕,按鈕的顏色會(huì)發(fā)生改變。通過(guò)按下窗口的F1鍵,可以顯示窗口的一些屬性信息。接下來(lái)我們來(lái)看一下代碼的具體實(shí)現(xiàn)。
五、總結(jié)與展望
本文介紹了如何在Windows平臺(tái)上安裝Kivy框架并運(yùn)行一個(gè)簡(jiǎn)單的測(cè)試程序。通過(guò)這個(gè)過(guò)程,我們對(duì)Kivy框架有了初步的了解。接下來(lái)我們將學(xué)習(xí)如何使用Kivy開發(fā)更復(fù)雜的應(yīng)用程序包括如何將代碼編譯成APK文件等高級(jí)功能請(qǐng)大家持續(xù)關(guān)注我們的后續(xù)文章。導(dǎo)入App并創(chuàng)建TestApp類
一、基礎(chǔ)導(dǎo)入與類定義
我們從kivy.app導(dǎo)入App類,這是所有Kivy應(yīng)用的基類。接著,我們從kivy.uix.button導(dǎo)入Button,為我們的應(yīng)用添加一個(gè)交互按鈕。
```python
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
pass
```
二、構(gòu)建應(yīng)用界面
在TestApp類中,我們需要定義一個(gè)build方法,該方法用于構(gòu)建應(yīng)用的主界面。在這里,我們返回一個(gè)包含“Hello, kivy”文本的Button。

```python
def build(self):
return Button(text='Hello, kivy')
```
三、運(yùn)行應(yīng)用

通過(guò)調(diào)用TestApp類的run方法,我們可以運(yùn)行我們的應(yīng)用。你會(huì)看到一個(gè)包含“Hello, kivy”按鈕的界面。
```python
TestApp().run()
```
四、安卓平臺(tái)運(yùn)行

雖然上述代碼可以在Windows上運(yùn)行,但我們的目標(biāo)是在安卓手機(jī)上運(yùn)行。為此,我們需要一個(gè)編譯環(huán)境。官方推薦的環(huán)境包括Linux計(jì)算機(jī)或虛擬機(jī)、Java、Python 2.7(不是2.6)、Jinja2、Apache ant以及Android SDK。雖然官方提供了一個(gè)虛擬機(jī)鏡像,但可能仍需要下載一些內(nèi)容。
五、提供的便利工具
為了方便開發(fā)者,我們提供了Kivy Buildozer VM,這是一款帶有Android SDK和其他預(yù)安裝要求的虛擬機(jī)。你只需要將你的代碼放入提供的dev_and文件夾(或其他你選擇的目錄)即可。使用這個(gè)虛擬機(jī),你可以輕松生成并部署你的Kivy應(yīng)用到安卓設(shè)備。
以上就是關(guān)于如何使用Kivy創(chuàng)建一個(gè)簡(jiǎn)單應(yīng)用,并在安卓平臺(tái)上運(yùn)行的基本步驟。希望對(duì)你有所幫助,如有更多問(wèn)題,歡迎進(jìn)一步交流。使用Buildozer配置生成APK文件的詳細(xì)步驟
一、進(jìn)入指定目錄并初始化Buildozer配置

進(jìn)入您的項(xiàng)目目錄,具體路徑為Desktop/dev_and/12。在該目錄下執(zhí)行buildozer的初始化命令,生成一個(gè)名為buildozer.spec的配置文件。該文件將用于配置即將生成的apk的相關(guān)信息。
二、執(zhí)行命令并修改buildozer.spec文件
運(yùn)行命令buildozer init12后,你將看到一個(gè)名為buildozer.spec的文件。接下來(lái),使用vi編輯器打開這個(gè)文件,對(duì)其進(jìn)行必要的修改。至少修改以下三項(xiàng)內(nèi)容:
1. 應(yīng)用程序?qū)?biāo)題修改為“helloworld”。
2. 包名:為應(yīng)用程序設(shè)置一個(gè)獨(dú)特的包名,例如“helloapp”。

3. 包域名:為應(yīng)用程序設(shè)置一個(gè)包域名,例如“youer.com123456789”。這個(gè)域名將在Android或iOS打包時(shí)用到。
在修改過(guò)程中,需要注意注釋與取消注釋的設(shè)置。例如,關(guān)于應(yīng)用程序版本的部分,可以選擇不注釋掉version的相關(guān)設(shè)置,并為其指定一個(gè)具體的版本號(hào),如“version= 1.2.0123456”。
三、生成APK文件
完成buildozer.spec文件的修改后,運(yùn)行buildozer命令來(lái)生成所需的apk文件。使用命令“buildozer-v android debug”在當(dāng)前文件夾創(chuàng)建一個(gè)bin目錄,該目錄下將包含我們需要的apk文件,名為“helloapp-1.2.0-debug.apk”。
四、解決可能的編譯問(wèn)題并安裝APK

在編譯過(guò)程中可能會(huì)出現(xiàn)空間不足的問(wèn)題。針對(duì)這種情況,可以根據(jù)您使用的虛擬機(jī)(如VMware或VirtualBox)進(jìn)行相應(yīng)的擴(kuò)容操作。完成擴(kuò)容后,再次嘗試編譯并生成apk文件。成功生成后,您可以進(jìn)行安裝并體驗(yàn)?zāi)膽?yīng)用程序。
五、探索Python開發(fā)的2048游戲源代碼
章節(jié)一:開篇引言
標(biāo)簽設(shè)定
當(dāng)我們談?wù)撃硞€(gè)特定技術(shù)或工具時(shí),設(shè)定標(biāo)簽是一種很好的方式,以便快速了解和定位。比如,我們可以設(shè)定一個(gè)標(biāo)簽如下:

Label:
+ id: time
+ text:'操作指南'
+ font_size: 60
這里的“time”標(biāo)識(shí)代表這是一個(gè)關(guān)于時(shí)間操作或流程控制的指南,字體大小為60。通過(guò)這個(gè)標(biāo)簽,我們可以快速了解本文的主題和內(nèi)容。

章節(jié)二:原生安卓開發(fā)app的框架簡(jiǎn)介
什么是Frida?
Frida是一個(gè)hook原生安卓開發(fā)app的框架。簡(jiǎn)單來(lái)說(shuō),它允許我們?cè)趹?yīng)用程序運(yùn)行時(shí)修改其行為或獲取某些信息。除了安卓,F(xiàn)rida還支持iOS和Windows等其他平臺(tái)。盡管它在市場(chǎng)上的應(yīng)用可能不是最廣泛的,但在某些特定的研究和開發(fā)場(chǎng)景中,它是一個(gè)非常強(qiáng)大的工具。
章節(jié)三:關(guān)于Hook的理解與應(yīng)用
Hook的概念及應(yīng)用

章節(jié)四:Frida的安裝與Python環(huán)境配置
創(chuàng)建虛擬環(huán)境與Frida安裝指南
為了簡(jiǎn)化安裝過(guò)程并方便管理依賴,我們可以使用Python環(huán)境管理器創(chuàng)建一個(gè)虛擬環(huán)境。這樣,我們可以為Frida及其相關(guān)工具創(chuàng)建一個(gè)獨(dú)立的環(huán)境,避免與其他Python項(xiàng)目產(chǎn)生沖突。安裝Frida時(shí),請(qǐng)確保您的網(wǎng)絡(luò)連接穩(wěn)定,因?yàn)槟承┎糠挚赡苄枰螺d額外的文件。根據(jù)我的經(jīng)驗(yàn),某些依賴包需要根據(jù)具體環(huán)境進(jìn)行安裝。安裝完成后,通過(guò)執(zhí)行特定命令驗(yàn)證Frida是否成功安裝。
章節(jié)五:Frida-server的下載與注意事項(xiàng)
Frida-server的重要性及下載指南

Frida-server是Frida的核心組件之一,它負(fù)責(zé)與移動(dòng)設(shè)備上的應(yīng)用程序進(jìn)行通信。在下載和使用Frida-server時(shí),需要注意與您的設(shè)備兼容性,例如設(shè)備的架構(gòu)(如arm64)。確保從官方或可信賴的來(lái)源下載,以確保安全性和穩(wěn)定性。根據(jù)我的環(huán)境配置,我選擇了特定版本的Frida和相應(yīng)的Frida-server。安裝和使用Frida需要一定的技術(shù)基礎(chǔ)和對(duì)相關(guān)知識(shí)的了解。盡管本文提供了一個(gè)基本的指南,但具體情況可能因環(huán)境和需求而異。在進(jìn)行任何技術(shù)操作時(shí),請(qǐng)確保遵守法律和道德準(zhǔn)則。本教程僅供學(xué)習(xí)和探討之用,任何違法行為均與本文無(wú)關(guān)。建立PC與手機(jī)Frida環(huán)境連接全流程解析
一、啟動(dòng)與配置Frida環(huán)境
首先確保我們的Frida環(huán)境已經(jīng)啟動(dòng)并運(yùn)行。在PC端創(chuàng)建并激活一個(gè)虛擬環(huán)境,安裝Frida。與此在手機(jī)端,首次需要將frida-server文件復(fù)制到/data/local/tmp目錄下,并進(jìn)行相應(yīng)的權(quán)限設(shè)置。運(yùn)行frida-server后,我們的手機(jī)和PC之間的Frida連接就建立起來(lái)了。需要注意的是,cmd窗口在此過(guò)程中不能關(guān)閉,以保持連接的穩(wěn)定性。
二、確認(rèn)Frida環(huán)境版本及端口設(shè)置
如果Frida版本低于或等于12,可能需要進(jìn)行端口轉(zhuǎn)發(fā)設(shè)置。具體的操作命令和步驟需要根據(jù)實(shí)際的應(yīng)用場(chǎng)景進(jìn)行選擇和調(diào)整。在這里,我們只需理解其含義并按照正確的步驟進(jìn)行配置即可。

三、WebStorm與Node的安裝
由于Frida主要使用JavaScript語(yǔ)言進(jìn)行編程和操作,因此推薦使用WebStorm作為開發(fā)環(huán)境。其自動(dòng)代碼提示功能將大大提高開發(fā)效率和準(zhǔn)確性。還需要安裝Node.js環(huán)境。安裝過(guò)程相對(duì)簡(jiǎn)單,只需按照官方提供的下載鏈接,按照提示進(jìn)行下一步操作即可。
四、項(xiàng)目設(shè)置與代碼自動(dòng)提示安裝
創(chuàng)建一個(gè)新的項(xiàng)目,選擇合適的目錄。在項(xiàng)目?jī)?nèi),通過(guò)終端安裝frida代碼自動(dòng)提示插件。具體命令為:npm i@types/frida-gum。這樣,在編寫Frida代碼時(shí),就可以享受到自動(dòng)提示帶來(lái)的便利了。
五、接口分析與驗(yàn)證

通過(guò)Charles+postern進(jìn)行抓包分析,找到登錄用的接口。你可能會(huì)發(fā)現(xiàn)數(shù)據(jù)中包含一個(gè){"Encrypt":"x"}的結(jié)構(gòu)。在沒(méi)有對(duì)apk進(jìn)行加固的情況下,可以通過(guò)反編譯搜索user/login來(lái)進(jìn)一步分析。找到了login函數(shù)后,如何驗(yàn)證user/login接口是否真的走的是這個(gè)login函數(shù)呢?只需點(diǎn)擊手機(jī)上面的登錄按鈕,然后觀察PC上控制臺(tái)的輸出即可。如果輸出了預(yù)期的結(jié)果,那就說(shuō)明確實(shí)執(zhí)行了這個(gè)login函數(shù)。
題外話:在進(jìn)行接口分析和逆向工程的過(guò)程中,可能會(huì)遇到各種未知和復(fù)雜的情況。這需要我們有耐心和毅力去逐步分析和解決問(wèn)題。保持學(xué)習(xí)和探索的態(tài)度,不斷提升自己的技能和能力,才能更好地應(yīng)對(duì)各種挑戰(zhàn)。
建立PC與手機(jī)之間的Frida環(huán)境連接是一個(gè)涉及多個(gè)步驟和環(huán)節(jié)的過(guò)程。從啟動(dòng)和配置Frida環(huán)境,到安裝WebStorm和Node.js,再到項(xiàng)目設(shè)置和代碼自動(dòng)提示的安裝,以及最后的接口分析與驗(yàn)證,都需要我們按照正確的步驟進(jìn)行操作和配置。只有這樣,我們才能順利地完成Frida環(huán)境的搭建和使用。玩轉(zhuǎn)Hook技術(shù):邁向自動(dòng)登錄的旅程
一、引言
在這個(gè)技術(shù)日新月異的時(shí)代,Hook技術(shù)已成為前端開發(fā)的熱門話題。掌握Hook技術(shù),不僅能提升我們的開發(fā)效率,還能讓我們?cè)诮鉀Q復(fù)雜問(wèn)題時(shí)更加得心應(yīng)手。本文將帶領(lǐng)大家深入了解Hook技術(shù),并探討如何將其應(yīng)用于自動(dòng)登錄APP的實(shí)踐中。讓我們一起踏上這段充滿挑戰(zhàn)的旅程吧!

二、Hook技術(shù)概述
Hook技術(shù),作為React的一種新特性,為我們提供了一種更加靈活的方式來(lái)使用狀態(tài)和其他React特性。通過(guò)Hook,我們可以在不編寫class的情況下,享受到React的所有功能。簡(jiǎn)而言之,Hook技術(shù)讓我們能夠在函數(shù)組件中直接使用state和其他React特性,從而更加高效地編寫代碼。
三、玩轉(zhuǎn)Hook技術(shù)的步驟
想要玩轉(zhuǎn)Hook技術(shù),大概分為以下幾個(gè)步驟:
1. 深入理解函數(shù)組件與Hook的關(guān)系:在React中,函數(shù)組件是Hook技術(shù)的基石。掌握函數(shù)組件的基本概念和使用方法,是玩轉(zhuǎn)Hook技術(shù)的基礎(chǔ)。

2. 學(xué)習(xí)常用Hook及其用法:React提供了許多內(nèi)置Hook,如useState、useEffect等。掌握這些常用Hook的用法,能讓我們?cè)陂_發(fā)過(guò)程中更加得心應(yīng)手。
3. 實(shí)踐應(yīng)用:通過(guò)實(shí)際項(xiàng)目來(lái)應(yīng)用Hook技術(shù),不斷積累實(shí)踐經(jīng)驗(yàn),逐步掌握其精髓。
四、應(yīng)用Hook技術(shù)實(shí)現(xiàn)自動(dòng)登錄
下節(jié)課,我們將分析如何應(yīng)用Hook技術(shù)來(lái)實(shí)現(xiàn)APP的自動(dòng)登錄功能。通過(guò)掌握自動(dòng)登錄的實(shí)現(xiàn)原理,我們可以將Hook技術(shù)應(yīng)用于實(shí)際項(xiàng)目中,提升項(xiàng)目的開發(fā)效率和用戶體驗(yàn)。在這個(gè)過(guò)程中,我們將學(xué)習(xí)到如何運(yùn)用Hook技術(shù)來(lái)處理用戶狀態(tài)、存儲(chǔ)用戶信息等關(guān)鍵問(wèn)題。
五、結(jié)語(yǔ)

人生沒(méi)有白走的路,每一步都讓我們成長(zhǎng)。在掌握Hook技術(shù)的道路上,我們也在不斷學(xué)習(xí)和進(jìn)步。通過(guò)本文的引導(dǎo),希望大家對(duì)Hook技術(shù)有了更深入的了解,并能在實(shí)際項(xiàng)目中應(yīng)用起來(lái)。相信只要我們不斷加油,努力前行,一定能在前端開發(fā)的道路上越走越遠(yuǎn)。
以上就是關(guān)于玩轉(zhuǎn)Hook技術(shù)的基本介紹,希望大家能在接下來(lái)的學(xué)習(xí)中不斷實(shí)踐、不斷進(jìn)步。讓我們一起邁向自動(dòng)登錄的旅程,探索更多前端開發(fā)的奧秘!