日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动端 爬虫工具 与 方法 介绍

發布時間:2024/7/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动端 爬虫工具 与 方法 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

From:https://www.cnblogs.com/zyfd/p/9681080.html

?

本文主要介紹了移動端爬蟲的工具與方法,作為一個入門的大綱。沒有詳細介紹的也給出了本人學習過程中借鑒的資料的鏈接,適合對移動端爬蟲感興趣的同學入門。

?

?

?

一、抓包模擬

?

?

基本原理(中間人攻擊)

?

中間人攻擊:在中間人攻擊中,攻擊主機通常截斷客戶端和服務器的加密通信。攻擊機以自己的證書替代服務器發給客戶端的證書。通常,客戶端不會驗證該證書,直接接受該證書,從而建立起和攻擊機的安全連接。這樣,客戶端發送的數據,都會被攻擊機獲取和解密。

?

工具介紹

?

?Fiddlercharlesanyproxy
手機安裝證書需要需要需要
支持抓取http/websocket/https(單向認證)http/websocket/https(單向認證)http/websocket/https(單向認證)
支持平臺win/mac/linux(受限)win/mac/linuxwin/mac/linux
腳本開發Jscript.net未知js

?

具體的報文走向如下

?

?

手機上的配置方法(以Fiddler為例,其它類似)

?

  • 準備工作:手機與PC在同一個局域網內(可以連同一個WIFI,或者電腦插入移動WIFI)
  • 配置步驟見下:
  • 參考鏈接:?https://blog.csdn.net/gld824125233/article/details/52588275

    ?

    特別說明,抓不到報文可能的情況

    ?

    1、單向雙向 https

    ?

    https的抓包原理是基于中間人攻擊的方式,但是這種方式只適用于單向認證的方式,也就是只是客戶端去檢驗服務端的證書。而雙向認證的Https,服務端還會校驗客戶端的證書。https握手過程如下:

    如何檢測是雙向認證還是單向認證,可以通過wireshark抓包看雙方的協商過程,證書的交換是否是雙向的。

    解決辦法:暫時沒有好的辦法解決這個抓包的問題

    ?

    2、ssl pinning

    ?

    ssl pinning:證書鎖定 Certificate Pinning 是SSL/TLS加密的額外保證手段。它會將服務器的證書公鑰預先保存在客戶端。在建立安全連接的過程中,客戶端會將預置的公鑰和接受的證書做比較。如果一致,就建立連接,否則就拒絕連接。Certificate Pinning在手機軟件中應用較多。因為這些應用連接的服務器相對固定,可以預先將服務器的X509證書或者公鑰保存在App中。例如,蘋果應用商店Apple App Store就預置了這個功能。當使用中間人工具或者Fiddler之類的工具攔截數據,就會造成應用商店無法聯網的情況。

    解決辦法:手機安裝 xposed 和 Justtrustme 插件(https://github.com/Fuzion24/JustTrustMe)

    ?

    ?

    抓取實現

    ?

    抓到報文后,就可以模擬請求了。請求發送的幾種方式:

    • 抓包工具里面提供了發送功能,Fiddler 中的 Composer 標簽里提供了此功能。

    • Chrome 的 Postman 擴展程序 也可以用來發送報文。

    • Python 中的 requests 包也可以方便地實現

    缺陷

  • 如何構造更多的請求?(常見的分頁請求、更換查詢參數等)

  • 如果抓不到包怎么辦?(如果通信走 socket 怎么辦?)

  • http 參數中包含加密、簽名字段,如何找到參數的生成方法?

  • ?

    ?

    ?

    二、模擬點擊

    ?

    ?

    ?

    基本原理(基于UIautomator)

    ?

    通過程序模擬人的行為對APP的界面進行點擊、滑動等操作,同時可以獲取APP的Activity頁面上的大部分控件上的文本信息(有一些可能獲取不到,Uiautomator本身就獲取不到)

    Appium官網介紹:
    https://appium.io/docs/cn/about-appium/intro/,
    https://github.com/appium/appium

    Macaca: ?https://macacajs.com/

    ?

    ?

    工具介紹

    ?

    ?AppiumMacaca
    支持平臺需要需要
    腳本語言PC/ios/android/hybrid(h5、native混合)PC/ios/android/hybrid
    備注支持Android所有版本Android支持API>17
    底層框架UIAutoation(IOS)/UIAUtomator+Selendroid(Android)XCUITest(IOS)/UIAUTOMATOR(Android)
    穩定性一般更好
    開源JS基金項目,社區活躍阿里開源,未來未知

    ?

    市面上常見的UI自動化測試工具以及優缺點

    以上主流工具的優點跟缺點

    ?

    ?

    Airtest

    AirtestIDE官方文檔AirtestIDE官方文檔:https://airtest.netease.com/docs/cn/index.html

    關于Airtest的使用探索:https://www.jianshu.com/p/32d08455e86f

    ?

    Airtest 網易出品的一款基于圖像識別和poco控件識別的一款UI自動化測試工具。Airtest的框架是網易團隊自己開發的一個圖像識別框架,這個框架的祖宗就是一種新穎的圖形腳本語言Sikuli。Sikuli這個框架的原理是這樣的,計算機用戶不需要一行行的去寫代碼,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分。
    ??另外,Airtest也基于poco這個U控件搜索框架,這個框架也是網易自家的跨平臺U測試框架,原理類似于appium,通過控件的名稱,id之類的來定位目標控件,然后調用函數方法,例如click(),swip()之類的方法來對目標控件進行點擊或者是操作。

    ?

    相較于以上工具來說,Airtest有以下優點和缺點:

    ?

    ?

    抓取實現

    ?

    ?

    1. 程序基本架構

    ?

    ?

    ?

    2. 框架API說明

    ?

    以Appium為例,Appium 支持的API 介紹如下:

    • 定位支持

      • 通過accessibility id查找元素

      • 通過元素id

      • 通過元素文本內容

      • 通過元素可見鏈接文本定位

      • 通過元素標簽名稱定位元素

      • 通過元素class name屬性定位元素

      • 支持單個、批量獲取

    • 操作支持

      • 從某個元素滑動到另一個元素

      • 把某元素拖到目標元素

      • 模擬手指點擊(最多五個手指),可設置按住時間長度(毫秒)

      • 從A點滑動到B點,滑動時間可配

      • 快速滑動

      • 模擬雙指捏(縮小操作)

      • 在元素上執行放大操作

      • 單擊

      • 還能搖一搖(IOS支持)

      • 執行JS腳本

      • 獲取H5頁面的page source

      • 輸入框輸入(回車的支持,建議選用sogou輸入法,keycode: 66 ,==這樣不需要去定位鍵盤上回車的輸入==)

    • 控制APP

      • 安裝、刪除、運行、關閉APP

      • 指定運行某APP的某activity

    • 獲取控件信息

      • 文本

      • 元素tag名稱

      • 內容描述(content-desc)

    ?

    ?

    樣例代碼(python)

    ?

    如果使用過selenium做爬蟲或測試,對這個接口應該很熟悉。

    from appium import webdriverdesired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '6.0' desired_caps['deviceName'] = '192.168.174.101:5555' desired_caps['appPackage'] = 'com.android.calculator2' desired_caps['appActivity'] = '.Calculator'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)driver.find_element_by_id("digit_1").click() driver.find_element_by_id("op_add").click() driver.find_element_by_id("digit_2").click() driver.find_element_by_id("eq").click()driver.quit()

    ?

    缺陷

  • 獲取效率低

    • 定位元素需要時間

    • 為了保證穩定,需要在額外地增加等待時間

  • 獲取的數據有限

    • 只能獲取到界面上可視控件的信息

    • H5頁面信息,(需要切換driver到H5)

  • Appium的不穩定,出現異常時有可能進程卡死,需要重新啟動

  • ?

    ?

    ?

    三、APK逆向

    ?

    ?

    基本原理

    ?

    方法 一 的 模擬抓包 和 方法 二 的 模擬點擊 對于沒有android逆向經驗的朋友是不錯的選擇,開發起來也比較簡單,能滿足一些對于應用數據的需求。但是如果想要更高效地獲取更多的數據,就需要研究APP的代碼。通過向APK中注入自己的代碼,修改APP 本身原來的邏輯,比如修改函數執行內容、增加新的邏輯等等來來實現自己的目標。

    一般的操作步驟如下:

  • 逆向 APK

  • 分析 smali 代碼

  • 通過 hook 框架向 APK 中注入代碼,修改邏輯

  • 需要的基礎

    • smali語法

    • APK反編譯

    • 靜態、動態調試

    • 常用HOOK框架

    • 反調試、反HOOK應對策略

    下面知識可以快速入門 smali 語法,最基本的數據類型,函數定義關鍵字,寄存器作用說明

    ?

    關鍵字

    field?private?isFlag:z  --- 定義變量 .method  --- 方法 .parameter  --- 方法參數 .prologue  --- 方法開始 .line?12  --- 此方法位于第12行 invoke-super  --- 調用父函數 const/high16?v0,?0x7f03 --- 把 0x7f03賦值給v0 invoke-direct  --- 調用函數 return-void  --- 函數返回void .end?method  --- 函數結束 new-instance  --- 創建實例 iput-object  --- 對象賦值 iget-object  --- 調用對象 invoke-static  --- 調用靜態函數

    數據類型

    B --- byte C --- char D --- double?(64?bits) F --- float I --- int J --- long?(64?bits) S --- short V --- void 只能用于返回值類型 Z --- Boolean Lxxx/yyy/zzz; --- 類 [XXX --- 數組

    寄存器類型

    寄存器采用 v命名法 和 p命名法v:表示本地寄存器p:表示參數寄存器, 共16個寄存器, v0~v15,??關系如下v0 第一個本地寄存器v1 第二個本地寄存器v2?p0(this)v3?p1第一個參數v4?p2第二個參數v5?p3第三個參數當然,如果是靜態方法的話就只有5個寄存器了,不需要存 this 了。 .registers 使用這個指令指定方法中寄存器的總數 .locals 使用這個指令表明方法中非參寄存器的總數,放在方法的第一行

    網址參考
    https://bbs.pediy.com/thread-151769.htm

    ?

    ?

    工具介紹

    ?

    26 款優秀的 Android 逆向工程工具( 注意看下面評論 ):https://www.freebuf.com/sectool/111532.html

    ?

    1. 反編譯工具?

    ?

    APKToolbox 工具

    ?

    AndroidKiller(smali 代碼IDE)

    ?

    ?

    常見問題及解決辦法

    • 有一些包無法使用Apktool進行反編譯,常用解決辦法:

    需要先下載 smali.jar, baksmali.jar, signapk.jar, 先把APK包解壓縮,然后直接使用?smali.jar??baksmali.jar?來進行解壓縮 1:將dex?輸出為?smali文件#?把dex?文件反編譯java?-jar?baksmali-2.0.3.jar?classes.dex??? 2:將修改的smali?文件?重新打包成dex?文件#?把?out?文件夾下的smali文件重新打包成classes.dex文件java?-jar?smali-2.0.3.jar?out?# 給APK包簽名java?-jar?signapk.jar?testkey.x509.pem?testkey.pk8?update.apk?update_signed.apk

    ?

    ?

    2. 脫殼工具?

    ?

    一些對安全性要求高的 APP 會采用加固工具為自己的 APK 加殼,表象就是你能反編譯代碼,反編譯出來的 smali 代碼很簡單,只能看到殼的主程序代碼,并沒有真實的業務邏輯代碼。 可以借助 apktoolbox 來進行檢測是什么殼,而去尋找對應的脫殼工具。(由于加固這個比較專業,這里只推薦幾款比較出名的脫殼工具,細的就講不了了)?

    • https://github.com/DrizzleRisk/drizzleDumper?? ? 某數字公司殼

    • https://github.com/DrizzleRisk? ? ? ? ? ? ? ? ? ? ? ? 其它幾個脫殼工具

    • https://github.com/zyq8709/DexHunter?? ? ? ? ? ? 很久沒更新了

    • https://github.com/F8LEFT/FUPK3?? ? ? ? ? ? ? ? ?需要修改 android 源碼

    ?

    ?

    3. 常用 Hook 框架

    ?

    ?xposedCydia SubstrateFrida
    支持的系統androidandroid/IOSwin/mac/linux/IOS/Android
    版本要求android<=8.0android(<=4.4)/ios(<=9.1)android<=8.1
    開發語言JavaJavaPython+Js
    是否Root需要需要需要
    運行安裝后重啟安裝模塊后需要軟重啟基于腳本交互
    Java/NativeJava層Java/NativeJava/Native

    Xposed:
    ? ? ? ? API介紹:https://api.xposed.info/reference/packages.html
    ? ? ? ? 開發者論壇:(https://forum.xda-developers.com/xposed)

    Cydia Substrate:
    ? ? ? ? 官網:http://www.cydiasubstrate.com/
    ? ? ? ? 文檔:http://www.cydiasubstrate.com/id/264d6581-a762-4343-9605-729ef12ff0af/

    Frida:
    ? ? ? ? 官網:https://www.frida.re/

    ?

    4. 動態調試smali代碼

    需要安裝 smaliidea,具體教程
    http://blog.csdn.net/linchaolong/article/details/51146492

    ?

    5. 動態調試so

    使用 IDA 工具包,具體教程:
    http://blog.csdn.net/jiangwei0910410003/article/details/51500328

    ?

    ==特殊說明==

    隨著開發者對于數據安全性的重視,一般的 APK 都會有各種保護策略,包括 代碼混淆、加殼,反調試,hook檢查 等等策略。我們非專業安全研究人員,只能見招拆招,只要能實現我們的目的就可以了,面對一些常規的策略有以下幾種應對措施。

    ?

    ?

    反調試

    • 調用 ptrace(PTRACE_TRACEME,0,0,0) (原理一個進程只能被一個進程 Ptrace)

    • 檢測 TracerPid 的值

    • 檢測代碼的執行間隔時間

    • 檢測手機的硬件信息是否在調試器中

    • 檢測 android_server 的端口號

    • 檢測 android_server 名稱

    • 檢測在調試狀態下的軟件斷點

    • 通過使用 Inotify 對文件進行監控

    • 檢測進程列表中是否存在常見的 Hook/調試 的進程名稱

    ?

    反 hook

    • 檢測已經安裝的應用里是否包含 xposed/Cydia Substrate

      • hook PackageManager 的 getInstalledApplications,把 Xposed 或者 Substrate 的包名去掉

    • 關鍵函數檢查調用棧里的可疑方法

      • hook Exception 的 getStackTrace,把自己的方法去掉

    • 檢測并不應該 Native的native 方法

      • hook getModifiers,把 flag 改成看起來不是 native

    • 通過 /proc/[pid]/maps 檢測可疑的 共享對象 或者 JAR

      • hook 打開的文件的操作,返回 /dev/null 或者修改的 map 文件

    抓取實現

    • 基于框架,開發 hook 代碼

    缺陷

    • hook 的方式對 APK 的代碼有侵入,需要對 APK 中的各種反調試、反hook 檢測手段做規避

    • 如果遇到加殼的,分析時間會很長。如果無法脫殼,那么將無法實現抓取

    ?

    ?

    ?

    四、開發工具

    ?

    • Requests 庫

    • 開源框架包括

      • Pyspider

      • Scrapy

      • Tornado 協程 實現并發訪問

    ?

    ?

    ?

    五、參考

    ?

    • Smali 語法:https://www.jianshu.com/p/ba9b374346dd

    • IDA 使用介紹:http://blog.csdn.net/jiangwei0910410003/article/details/51500328

    • 反反調試:http://blog.csdn.net/feibabeibei_beibei/article/details/60956307

    • 反反 hook:?http://gnaixx.cc/2016/09/03/android-anti-hooking/

    • Fiddler 小白入門:?http://blog.csdn.net/gld824125233/article/details/52588275

    • 淺析 HTTPS 中間人攻擊與證書校驗:http://blog.csdn.net/zhangmiaoping23/article/details/79228637

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的移动端 爬虫工具 与 方法 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲人成久久 | xxxx性视频 | 亚洲国产一区二区三区a毛片 | 国产又黄又猛视频 | 素人一区二区 | 男男免费视频 | 亚洲精品女人久久久 | 日韩欧美不卡视频 | 国产理论片在线观看 | 国产精品大片 | 在线波多野结衣 | 啪啪一区二区 | 手机av电影在线 | 97免费看| 青青操操| 成人xx视频 | 中文字幕11页中文字幕11页 | 国产日韩综合 | 久久国产精品久久精品国产 | 欧美精品xx | 午夜精品久久久久久久久久久久久 | 成人av毛片| 男女啪啪资源 | 麻豆精品自拍 | 插插网站 | 草草福利视频 | 国产精品美乳在线观看 | 淫片在线 | 国产亚洲精品久久久久丝瓜 | 国产精品视频h | 国产成人啪精品午夜在线观看 | 国产九色sp调教91 | 黄色网在线播放 | 国产一区欧美 | 天天色婷婷| 夜晚福利| 国产精选毛片 | 欧美激情网站 | 国产黄色大片 | 国产成年人视频网站 | 国产91精品一区 | 日韩乱码人妻无码系列中文字幕 | 欧美性猛交xxxx免费看 | 在线观看亚洲欧美 | 超碰av人人| 国产99久久久 | 日本免费三片在线播放 | 久久精品黄| 97人妻天天摸天天爽天天 | 色综合中文 | 伊人久艹 | 亚洲第七页 | 美女爱爱爱 | 亚洲伊人精品 | 色月婷婷| 亚洲成人麻豆 | 亚洲人成久久 | 第一章激情艳妇 | 在线免费色 | 久青草视频在线观看 | www日韩欧美 | 日本不卡视频一区 | 麻豆精品网站 | 久久久国产精品久久久 | 99久久精品一区二区成人 | 免费在线日韩 | 欧美日韩精品二区 | 69视频免费在线观看 | 自拍偷拍欧美亚洲 | 亚洲欧美在线播放 | 天堂8av| 亚洲精品字幕在线 | 丰满人妻一区二区三区四区 | 91日本在线观看 | xxxxx国产| 日韩一区二区三区视频 | av老司机久久 | 激情午夜婷婷 | av片免费播放 | 国产视频污在线观看 | 黄色女女 | 九九九国产视频 | 91高清国产 | 捆绑无遮挡打光屁股 | 五月天激情啪啪 | 日日夜夜精品视频 | 色漫在线观看 | 亚洲国产婷婷 | 精品久久久久久久久久 | 国产国产乱老熟女视频网站97 | 欧美春色 | 国产成人久久777777 | 福利一区二区在线观看 | 免费看一区二区三区 | sese国产| 日本激情影院 | 亚洲男人天堂2018 | 精品欧美一区二区三区久久久 | 麻豆影视在线免费观看 |