在進行APP爬蟲開發的時候,我們一般是通過手機連線PC端代理上網,進行抓包分析,那麼以這種方式抓包的時候就需要在手機端進行對應的操作,但是我們不可能一直通過手動去操作手機進行抓包,所以要使用adb這種Android開發命令的方式進行操作。但是現在很多手機許可權控制比較嚴密,直接連線真機有很多操作是不支援的,所以就必須用到模擬器。很慶幸安卓模擬器有很多種,下面我們就介紹一下APP爬蟲開發環境的簡單搭建和基礎使用。
安裝模擬器安卓模擬器有很多種,夜神模擬器、騰訊手遊助手、mumu模擬器等都是比較常用的模擬器,其中夜神模擬器是比較好的,但是它不支援Mac系統,mumu模擬器是由網易開發的,支援Windows和Mac平臺,而且更新比較頻繁,所以我使用的是mumu模擬器,官方文件和論壇也比較豐富。安裝好以後就可以直接開啟使用,如果碰到問題,可以在官方的常見問題中進行檢視。
Mac安裝adb安裝完模擬器之後,我們就要安裝adb了,在Mac上首推brew cask進行安裝
安裝brew請看這篇文章HomeBrew 官方安裝太慢而失敗?安裝adbbrew cask install android-platform-tools安裝完adb後開啟控制檯,輸入adb version然後可以先使用真機進行測試,開啟手機的“開發者選項”,並啟用“USB除錯”模式,在控制檯輸入adb devices
這樣就表示我們的adb已經安裝好了,下面就是連線我們的模擬器了。
連線模擬器在模擬器中開啟“USB除錯模式”,然後在控制檯中關閉adb server,再重啟即可
adb kill-serveradb server
這個時候再檢視連線裝置
438ec4b1為真機,emulator-5554為模擬器,要連線機器使用以下命令adb -s 438ec4b1 shell
連線真機
連線模擬器
在紅框中你會發現區別,在連線真機的ls前面是$符號,在連線模擬器的ls前面是#,#符號就表示擁有root許可權,非#符號就表示沒有root許可權,我試過幾個真機,都是無root許可權的,可能需要我們自行root後才能正常使用。所以這就是我們一定要使用模擬器的原因了。
因為我們不在真機上進行除錯,所以就把連線斷掉,只保留模擬器一個連線裝置。在這種情況下,我們的adb命令也可以簡短一些,比如使用adb連線裝置,原來是adb -s xxx shell,現在就可以直接寫adb shell,其他的adb命令也是類似。
安裝抓包軟體電腦端常用的抓包軟體Fiddler、Charles、mitmproxy,Fiddler是專屬於Windows系統的抓包軟體,並且功能強大,Charles是跨平臺的軟體,但是功能不如Fiddler,在Mac和Linux使用Charles,mitmproxy也是跨平臺的抓包工具,雖然也有視覺化介面,但是不夠友好,使用成本比較高,因此我們常用mitmproxy配合Python實現抓取工作。mitmproxy需要專門寫了一個帖子,這裡就不在詳述了。
開啟SDK Manager,安裝對應的SDK版本
設定環境變數在vim ~/.bash_profile檔案最後增加以下內容,如果沒有就新建一個export ANDROID_HOME=/Users/xxxx/Library/Android/sdkexport PATH=${PATH}:${ANDROID_HOME}/toolsexport PATH=${PATH}:${ANDROID_HOME}/platform-toolsexport PATH=${PATH}:${ANDROID_HOME}/build-tools/29.0.2
ANDROID_HOME路徑就是上面圖中SDK下載路徑
PS: 上面環境變數中的build-tools/xx.xx.xx要在build-tools目錄下去看具體情況,我們主要是需要使用aapt工具,所以aapt在哪個目錄下就填寫哪個目錄。
配置完以後執行source ~/.bash_profile命令,重新載入環境變數,然後輸入aapt -v檢視命令是否正常執行
3.安裝JDK從官網下載JDK 8,官網下載需要註冊賬號,比較麻煩。可以在找第三方網站上的下載,我是在一個百度雲分享連結下載的,可惜現在忘了地址了,不好意思。
安裝Python操作庫pip install Appium-Python-Client然後就可以正常使用了。
AirtestAirtest是網易開發的自動化測試工具,雖然不如appium專業,但是勝在安裝簡單,使用簡單。直接在官網下載即可,而且文件也比較齊全。最重要的是安裝完後,所有測試環境就OK了。然後再安裝pip install poco就可以使用了。最最最重要的是,在其他機器上想要使用以及編寫好的指令碼,只需要安裝pip install poco就可以了,不需要再安裝Airtest工具。