夜神模擬器模擬APP+Appium+mitmdump數據抓取

2021-02-11 晨起臨風

上一篇通過夜神模擬器+Fiddler可以獲取到app調用接口地址,但是有些app風控策略簡直讓人崩潰。難以揣測的籤名和基於大數據的用戶行為分析,將接口訪問控制的死死的。對於大批量的數據訪問為了提高訪問速度需要直接調用接口來獲取數據。但是對於訪問不需要太頻繁的數據,是不是可以直接通過模擬APP的方式獲取,答案是肯定的

現在隆重介紹一下mitmproxy:

mitmproxy是一個支持HTTP和HTTPS的抓包程序,有類似Fiddler、Charles的功能。除了命令行形式的控制臺,mitmproxy還有兩個關聯組件:mitmdump和mitmweb。

mitmdump:它是mitmproxy的命令行接口,利用它我們可以對接Python腳本,用Python實現監聽後的處理。

mitmweb:它是一個Web程序,通過它我們可以清楚觀察mitmproxy捕獲的請求。

使用mitmdump可以對接python腳本,然後就可以對攔截到的請求和返回數據做處理了。

這兒需要安裝Appium用來控制夜神模擬器對app進行操作。

1 安裝appium

從官網下載(http://appium.io/)直接安裝即可。

啟動界面如下:

通過appium控制夜神模擬器內的app時與直接操作手機app類似,但是可能連接時會報錯。

An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of '/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v4.15.0.apk'. Original error: Could not find 'apksigner.jar' in ["/ApplicationsxAppPlayer.app/Contents/MacOS/platform-tools/apksigner.jar","/ApplicationsxAppPlayer.app/Contents/MacOS/emulator/apksigner.jar","/ApplicationsxAppPlayer.app/Contents/MacOS/cmdline-tools/latest/bin/apksigner.jar","/ApplicationsxAppPlayer.app/Contents/MacOS/tools/apksigner.jar","/ApplicationsxAppPlayer.app/Contents/MacOS/tools/bin/apksigner.jar","/ApplicationsxAppPlayer.app/Contents/MacOS/apksigner.jar"]. Do you have Android Build Tools installed at 『/ApplicationsxAppPlayer.app/Contents/MacOS'?

解決辦法:

在adb裡面找到錯誤描述的對應包,複製到夜神模擬器下的對應路徑下即可。

2 啟動mitmdump代理服務

對返回的數據進行處理

def response(flow:http.HTTPFlow):    if '' in flow.request.url:                pass    text = flow.response.get_text()    if text:                        pass

對攔截到的請求進行自定義請求處理

def request(flow:http.HTTPFlow):    if flow.request.host != '':                 pass

mitmdump -q -s mitmproxy_test.py - p 8866

-q 屏蔽mitmdump默認的控制臺日誌,只顯示自己腳本中的日誌

-s 入口腳本文件

-p 代理服務埠號

3 啟動夜神模擬器

配置夜神模擬器代理為當前代理。

這樣當訪問app數據時就可以通過mitmdump攔截到數據,並且用python腳本對數據進行處理。

4 啟動python腳本

from appium import webdriverfrom time import sleep
FINGER_START_X = 300FINGER_START_Y = 1000
FINGER_SWIPE_X = 300FINGER_SWIPE_Y = 300
def collect(): jd_app_config = { "platformName": "Android", "deviceName": "test", "platformVersion": "7.1.2", "appPackage": "com.jingdong.app.mall", "appActivity": "main.MainActivity", "unicodeKeyboard": "True", "resetKeyboard": "True", "noReset": "True" }
driver =webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities = jd_app_config,keep_alive=True)     sleep(5) try: bybt_close_btn = driver.find_element_by_xpath('//android.widget.ImageView[@content-desc="關閉頁面"]') if bybt_close_btn: bybt_close_btn.click() sleep(3) except Exception as e:        print(repr(e)) virtual_search_btn = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.ViewFlipper")
if virtual_search_btn: virtual_search_btn.click() sleep(3)
input_text_area = driver.find_element_by_id("com.jd.lib.search.feature:id/z8") if input_text_area: input_text_area.send_keys("紙巾") sleep(2) search_btn = driver.find_element_by_id("com.jingdong.app.mall:id/a9b") if search_btn: search_btn.click() sleep(15)
for i in range(348): driver.swipe(FINGER_START_X, FINGER_START_Y, FINGER_SWIPE_X, FINGER_SWIPE_Y)        sleep(5)if __name__ == '__main__': collect()

這樣腳本在執行時,就可以看到mitmdump控制臺的輸出了。

相關焦點

  • Appium+夜神模擬器實現簡單汽車APP抓取
    今天做了一下比較簡單的app抓取,既然學習這塊,就做一下這塊的筆記。大體上實現原理明白就好,做了一下簡單的抓取測試就可以了。
  • 夜神模擬器模擬安卓APP+Fiddler數據抓取
    現在對app數據的抓取越來越急迫了,需要對app訪問數據接口進行抓取。採用夜神模擬器+Fiddler的方式可以方便的對app訪問接口進行抓取。
  • Appium+python自動化22-Android夜神模擬器
    夜神模擬器可以說是android模擬器裡面的一個神器。 一、環境安裝1.官網下載地址:[https://www.yeshen.com/](https://www.yeshen.com/)2.夜神安卓模擬器(夜神模擬器),是全新一代的安卓模擬器,與傳統安卓模擬器相比,**基於android4.4.2**,兼容X86/AMD,在性能、穩定性、兼容性等方面有著巨大優勢3.安裝時候選擇指定的文件夾路徑
  • 全網最全最細的appium自動化測試環境搭建教程以及appium工作原理
    3、安裝夜神模擬器並在模擬器上安裝被測app(1) 夜神模擬器的下載>下載地址:https://www.yeshen.com/版本選擇:最新版(2) 夜神模擬器的安裝下一步下一步傻瓜式安裝。(3) 被測app的安裝把apk包直接拖拽到夜神模擬中安裝(4) 設置模擬器/真機的環境1.啟用設備的開發者選項,啟動調試功能。夜神模擬器:設置->多次點擊版本號直到出現提示【開發者選項】->返回上一步能看到【開發者選項】->USB調試。
  • 利用appium框架爬取手機APP
    今天我們就從技術的角度探索一下自動化獲取手機app聊天記錄的方法;爬蟲界有句話——可見即可爬。那麼我們怎麼爬取手機app呢?之前爬取拉勾網的時候我們用了selenium自動爬取拉勾網,從行為上模擬人的瀏覽行為,從而獲取信息;appium這個詞是app和selenium的合成詞,就是一個自動化測試開源工具,支持 iOS 平臺和 Android 平臺上的原生應用,web應用和混合應用,因此可以藉助它來實現我們的任務。     工欲善其事,必先利其器。
  • Python appium搭建app自動化測試環境
    要實現數據通信,就需要將二者連一起。因此對於真機用戶,需要用USB線連接手機和電腦,並且在開發者選項當中,開啟USB調試模式。5、安裝appium python客戶端6、真機或者模擬器安裝nodejs和appium desktop程序nodejs官網下載地址:https://nodejs.org/en/download/appium的運行依賴於nodejs,所以要先安裝
  • App爬蟲神器mitmproxy和mitmdump的使用
    手機和PC在同一個區域網內,設置代理為mitmproxy的代理地址,這樣手機在訪問網際網路的時候流量數據包就會流經mitmproxy,mitmproxy再去轉發這些數據包到真實的伺服器,伺服器返回數據包時再由mitmproxy轉發回手機,這樣mitmproxy就相當於起了中間人的作用,抓取到所有Request和Response,另外這個過程還可以對接mitmdump,抓取到的Request
  • 實戰:爬取抖音app視頻
    數據,本文以爬取抖音視頻app為例。模擬人的動作(滑動、點擊等)3、將1和2相結合達到自動化爬蟲的效果# mitmproxy/mitmdump抓包確保已經安裝好了mitmproxy,並且手機和PC處於同一個區域網下,同時也配置好了mitmproxy的CA證書,網上有很多相關的配置教程,這裡我就略過了。
  • RobotFramework +appium實現Android自動化
    1、已安裝python37版本(SDK、JDK均已安裝完成,且環境變量都配置好了)4、安裝appium(下載地址:http://6tt.co/pujb)5、安裝python測試庫-appium-python-client6、安裝python測試庫-robotframework-appiumlibrary下載成功:Appium-windows-1.17.1-1.exe(官網自行下載),
  • Eclipse+Appium+夜神虛擬機環境調試
    如上面圖所示,appium自動化環境包括三個部分:客戶端,服務端,行動裝置,那麼這3部分是如何工作的呢?  1)客戶端編寫好腳本後,運行代碼,這裡的客戶端支持各種語言(python,java等),通過webdriver協議調用appium伺服器  2)服務端首先建立一個會話,通過4724埠和行動裝置通信  3)移動端bootstrap.jar接受到請求後發送給Uiaotomator  4)Uiaotomator執行腳本命令,進行自動化測試
  • Appuim+夜神模擬器爬取得到APP課程數據!誰說不能爬APP?
    但是如果一些動態參數設置不對,訪問接口則不能得到任何數據,換句話說,只要無法破解參數,這條路就是死路一條。 2.2 思路二 通過自動化測試工具模擬手工操作APP進行數據的爬取。通過向自動化測試工具(例如Appium)發送操作指令,驅動設備完成點擊、輸入、滑動等各種操作,分析頁面數據完成數據爬取。
  • Py爬蟲之Appium自動化
    也可以用來爬取App數據,本文將以Android為例。手機端配置這裡以夜神模擬器為例電腦端配置將夜神模擬器安裝路徑下的bin目錄添加到系統變量Path中刪除該目錄下的 nox_adb.exe將 androidsdk目錄下的platform-tools\adb.exe 複製到夜神模擬器的bin目錄中並重命名為nox_adb.exe
  • 舉個華為計算器的慄子「Appium環境配置與調試​」
    Appium 和設備間要進行各種交互,不僅限於打開、安裝、卸載 app、通知設置、系統設置等。appium desktop 藉助 SDK 中的一個開發工具:安卓 sdk,需要安裝 jdk 的版本不低於 1.8。
  • Appium自動化測試環境搭建
    的自動化測試腳本,肯定離不開appium的一些api庫,所以說這裡的appium 客戶端就是python代碼使用的庫,用來連接appium server 及操作app安裝appium client 就非常簡單了,只要你已經配置好了python環境,就可以直接使用pip安裝了,cmd 執行pipi install Appium-Python-Client即可完成安裝,輸入下圖命令不報錯,
  • App 爬蟲神器?Mitmproxy 快速帶你入坑!
    為什麼要手機模擬器,如果有條件正好有不使用的安卓手機,任何操作都有一定風險,抓取數據之前為了創造一個乾淨的環境,要進行刷機,適合一個合適的安卓版本,需要格式,所以使用安卓模擬機更方便,性價比也更高。模擬器名稱支持的作業系統支持的虛擬機運行速度安裝APK方式支持的機型調試難易程度google官方的AVDWindows/linuxQEMU慢ADB多複雜genumotionWindows/Mac/LinuxVirtualBox一般ADB/拖拽少一般夜神模擬器Windows/MacVirtualBox快ADB/拖拽少簡單夜神模擬器https://www.yeshen.com/
  • 一套完整的Appium自動化測試環境搭建過程
    的自動化測試腳本,肯定離不開appium的一些api庫,所以說這裡的appium 客戶端就是python代碼使用的庫,用來連接appium server 及操作app  安裝appium client 就非常簡單了,只要你已經配置好了python環境,就可以直接使用pip安裝了,cmd 執行pipi install Appium-Python-Client即可完成安裝,輸入下圖命令不報錯
  • 記一次搭建Appium自動化測試環境的完整過程
    的自動化測試腳本,肯定離不開appium的一些api庫,所以說這裡的appium 客戶端就是python代碼使用的庫,用來連接appium server 及操作app  安裝appium client 就非常簡單了,只要你已經配置好了python環境,就可以直接使用pip安裝了,cmd 執行pipi install Appium-Python-Client即可完成安裝,輸入下圖命令不報錯,代表已經安裝成功
  • 移動端自動化測試-Windows-Android-Appium環境搭建
    對於使用安卓模擬器的同學(本文以夜遊神為例),可能會出現連結失敗的情況,一般是sdk的adb版本與夜神的adb版本不一致導致 C:\Users\cz9025>adb devicesList of devices attachedadb server version (31) doesn't match this client (39); killing
  • 【app】自動化環境搭建(Appium)for java
    Appium-server是最先出來的,它的下載地址: https://bitbucket.org/appium/appium.app/downloads/,但是有很久沒有更新了,所以強烈建議大家選擇Appium-desktop進行安裝,並且安裝也非常的容易。
  • APP自動化測試——Appium環境搭建及基礎腳本編寫(極其詳細)
    其中Appium環境搭建中,需要安裝JDK、Android SDK、模擬器(或者用真機),從而後續就是使用代碼連接Appium來操作模擬器。二、Appium環境搭建2.1 JDK安裝關於JDK的安裝及環境變量配置就不在這裡多做解釋了。