app爬蟲環境搭建 fiddler+mitmproxy+uiautomatorviewer+weditor+uiautomator2 親測有效!

fiddler和mitmproxy抓包工具的應用場景:fiddler可以在linux和windows都能使用,只是我的windows版本更豐富好用。
mitmproxy在linux可使用全部:mitmdump和mitmweb以及mitmproxy,在windows只能使用其中的mitmdump和mitmweb。都要安裝python3.6及以上的解釋器,可參考 https://mp.csdn.net/mdeditor/94055022#

連接真手機/手機模擬器成功的操作:
下載並安裝夜神模擬器以及fiddler。
夜神模擬器設置:
1、先安裝最新版本的夜神模擬器(我的是6.3.0.6),否則版本稍微低都不能安裝證書,血的教訓(說不定有些人低版本的也可以)。
2、進入夜神模擬器系統設置——屬性設置–勾選網絡橋接模式(它默認是DHCP)–點擊旁邊的驅動安裝字眼,安裝橋接驅動(有的話)(我忽略了這步導致抓不到https)——在彈出的提示框點擊重啓。真手機不需要做這第2步就能自動橋接。
3、重啓後點擊安卓裏面的系統設置——WLAN——連上和電腦相同的WiFi——快速點1次或多次wifi欄後在彈出框中選擇修改網絡——勾選高級——選項:手動——代理服務器主機名填寫抓包工具所在系統的IP地址(fiddler在windows/linux中就填windows/linux的IP),代理服務器端口填和fiddler/mitmproxy一致的端口號。
4、在瀏覽器搜索框輸入fiddler所在系統的IP:fiddler的端口號 。冒號是英文的!在彈出的頁面中點擊download fiddler certificate 的字樣下載fiddler證書併爲此自定義名字,有了該證書後訪問網頁就不會再彈出警告信息了。
此時把fiddler也設置後已經可以抓取網頁和APP的http包。但要抓HTTPS還需執行第5、6步。真手機(不知爲何360手機沒xposed+justTrustMe也能抓https)不需要。

5、 到網上下載de.robv.android.xposed.installer_v33_36570c.apk 並拖入夜神模擬器安裝,點進去選中框架,點擊安裝更新,需要權限什麼的一律點是。
6、下載attachment; filename=JustTrustMe.apk 也安裝進模擬器,後點擊xposed,選中模塊,勾選JustTrustMe,重啓夜神模擬器。

fiddler抓app設置:
1、設置fiddler的app抓包:
Tools——Options——HTTPS——勾選 decrypt HTTPS traffic——下來框選 from remote client only(這是抓app數據的選擇,如果是抓網頁的就選from browsers only)

2、Tools——Options——connections——Fiddler listens on port 框裏填寫你想要的端口號,我填的是8889. 勾選 Allow remote computers to connect。
點擊保存就設置完畢了。

tips:通常fiddler設置改變後要重啓fiddler才能讓夜神模擬器的瀏覽器訪問網頁。

3、linux 的mitmproxy設置:只要安裝好mitmproxy(查看是否安裝成功可在終端輸入:mitmproxy --version),終端輸入命令 mitmproxy (默認端口號8080)或者 mitmproxy -p 自定義端口號 即可。

在夜神模擬器裏訪問網頁,如果mitmproxy出數據包就代表成功了,但是爲防止每次抓包都彈框,所以在夜神瀏覽器裏輸入:http://mitm.it/ 在彈出的頁面中點擊Android圖標下載mitmproxy證書,點擊系統左上角的下載,找到該證書併爲此自定義名字。隨後可輕鬆訪問網頁並抓包。

查看證書途徑:安卓的系統設置——安全——信任憑據——用戶

如果全部步驟都走完還不能抓取數據可以考慮電腦關機重啓或者夜神模擬器——系統設置——常用設置——恢復默認設置,隨後就能用mitmproxy抓取數據了(有可能是因爲端口號被佔用了,所以無法抓取數據),我就是這樣,要逐個嘗試,親測有效!

tips:每次關電腦前先關掉你打開的所有應用,這樣能確保不容易丟數據和減少系統垃圾。


uiautomatorviewer.bat的應用場景:可做app方面的UI(功能)測試:把app界面截圖下來,點擊各個應用從而可像網頁檢查那樣查看元素內容,但在這裏要做一個升級,纔能有xpath等高級功能,從而提供做爬蟲用。
uiautomatorviewer升級步驟(是在https://blog.csdn.net/dandan_yang/article/details/80485551基礎上做詳細解析。uiautomatorviewer不穩定,想要穩定的看更下面安裝uiautomator2 ):
1、下載github上開源jar包 :https://github.com/lazytestteam/lazyuiautomatorviewer
(下載的包通常要改名字後綴爲zip才能解壓,解壓後的包我稱它爲master,AndroidSdk是我給之前安裝的SDK包起的名字)
2、把master的lazyuiautomatorviewer-master下的uiautomatorviewer.jar複製替換AndroidSdk\tools\lib下的同名包。
3、把master\lazyuiautomatorviewer-master\lib下的所有.jar包複製替換到AndroidSdk\tools\lib下。
4、把master\lazyuiautomatorviewer-master的com和images文件夾複製到AndroidSdk\tools下。(最後這一步,尤其是複製images的必要性我是存疑的,你們可嘗試一下,留言給我哈。)

重新打開uiautomatorviewer.bat即可看到變化。
可看到右下角該框多了xpath等工具欄
可看到右下角該框多了xpath等工具欄

uiautomator 定位元素失敗原因及解決辦法: 原因1:端口占用。通常是因爲和appium衝突了,把appium關閉並打開UI automator 即可使用。 原因2:不是端口占用而是純粹抓不了某些APP的元素。(即使關閉佔用端口62001的進程(adb以及夜神模擬器)也沒用)
uiautomator 老是報錯、很難搞怎麼辦?其實這個工具本來就不穩定。很容易和其他工具發生衝突,從而用不了。建議使用weditor,只需要解釋器在Python3.5以上就可以 在終端輸入:pip install webditor 來安裝。
python升級問題:https://mp.csdn.net/mdeditor/100176077

APP定位元素的工具及環境搭建問題及解決辦法:

網上很多文章很垃圾,我從中選了2篇比較靠譜的參考文章如下:
https://blog.csdn.net/qq_41664526/article/details/81102832
https://www.cnblogs.com/fnng/p/8486863.html

不看也沒事,跟着我簡單操作即可。
要定位元素就要安裝weditor以及uiautomator2(uiautomator2和SDK的uiautomatorviewer是2回事啊)
終端輸入 pip install webditor
安裝完後再 1,輸入 python -m weditor 即可打開

但是這時還未必能連上,需要安裝uiautomator2

終端輸入:pip3 install -U uiautomator2
(可能需要打開一個夜神模擬器,用adb連接到模擬器:2,終端輸入adb connect 127.0.0.1:62001 我的是夜神模擬器才輸入127.0.0.1:62001,隨後輸入adb devices 檢查是否連上)

安裝完後輸入 python3 -m uiautomator2 init
就可在安卓模擬器/手機上看到 ATX的app,若報錯:‘python3’ 不是內部或外部命令,也不是可運行的程序(我環境變量裏沒設置python3來指定python3.5解釋器,所以輸入python即可)。就輸入 python -m uiautomator2 init 注意:若打開多臺模擬器可能要在python -m uiautomator2 init 後加上該模擬器的ip,往裏面安裝ATX app。

模仿下面的操作,如果出現最後面的字典類型就說明成功安裝uiautomator2了。
3,

C:\Users\hp>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import uiautomator2 as u2
>>> d = u2.connect()
>>> print(d.info)
{'currentPackageName': 'com.vphone.launcher', 'displayHeight': 1600, 'displayRotation': 0, 'displaySizeDpX': 450, 'displaySizeDpY': 800, 'displayWidth': 900, 'productName': 'R11', 'screenOn': True, 'sdkInt': 22, 'naturalOrientation': True}

在輸入 python -m weditor 打開的weditor網頁裏下拉框選擇Android,旁邊的可以空着,因爲有adb連接着,它就知道要連接哪個設備。直接點擊connect按鈕,過一會就可看見安卓模擬器裏的界面,停住播放的頁面,點擊Dump Hierarchy就可獲取APP新的界面。相信對iOS設備操作也類似吧。其餘的操作和uiautomatorviewer類似。覺得管用就點贊哈,有問題可提。

注意:以後使用都需要執行上面標記的1-3步,然後在weditor點Connect,第三步是爲了以 d = u2.connect()啓動uiautomator2 ,可能APP上也能點啓動選項來啓動。點擊這裏的截圖頁面是可以控制安卓APP的,多點幾次能刷新頁面,需要半-1分鐘等待時間。

在這裏插入圖片描述

做腳本驅動appium檢查: 1、check for adb devices?2、open appnium-desktop? 3、webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  IP:prot right?
截圖APP檢查:1、開啓了uiautomator2?2、關閉了appnium-desktop?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章