抓包工具的安裝和配置


抓包工具的安裝和配置


1 Charles的安裝和配置

1.1 Charles的安裝

  • 下載地址https://www.charlesproxy.com/download/
  • 安裝地址:D:\Python\Charles
  • 系統版本:W10 64位
  • 注冊破解
    •   Registered Name: https://zhile.io
    •   License Key:  48891cf209c6d32bf4

1.2 Charles的配置

1.2.1 PC端證書安裝

首先打開Charles,按照如下路徑依次點擊:

Help –> SSL Proxying –> Install Charles Root Certificate

 即可進入證書安裝頁面。在彈出的證書安裝頁面點擊安裝證書(I)...進入證書安裝向導,直接點擊下一步,選中將所有證書放入下列存儲(P),然后點擊瀏覽按鈕,從中選擇證書存儲位置為受信任的根證書頒發機構,再次點擊確定按鈕,然后點擊下一步,再繼續點擊下一步按鈕完成導入。

1.2.2 移動端證書安裝

以IOS系統為例,首先查看PC端Charles代理是否開啟:

Proxy –> Proxy Settings

打開代理設置頁面,確保當前的HTTP代理是開啟的,即勾選中Enable transparent HTTP proxying。此代理端口為8888,也可自行修改。

接下來將手機和電腦連接在同一個局域網下(同一個WIFI網絡即可)。然后查詢PC端的IP地址(不是網絡IP地址,是機器的IPv4地址):

Wireless LAN adapter WLAN:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::a982:2d9c:45a7:7a96%5
   IPv4 Address. . . . . . . . . . . : 192.168.31.48
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.31.1

然后啟用手機已連接網絡(WIFI網絡)的http代理,將服務器設置為IPv4地址端口設置為8888,然后保存。最后在PC端回出現一個提示窗口,詢問是否信任此設備,點擊Allow按鈕即可。這樣手機和PC就連接在同一個局域網內,並且設置了Charles的代理,即Charles可以抓取到流經App的數據包了。

接下來再移動端安裝Charles的HTTP證書,首先打開Charles,然后按照如下路徑依次點擊:

Help –> SSL Proxying –>Install Charles Root Certificate on a Mobile Device

此時會出現一個提示框,提示在移動端設置好Charles代理(IPv4:8888),然后在手機瀏覽器(移動端系統自帶的瀏覽器)中打開http://chls.pro/ssl下載證書,然后會彈出安裝證書界面,點擊安裝即可。最后,若IOS系統版本是10.3以上,還需要在

設置 –> 通用 –> 關於本機 –> 證書信任設置

中將證書的完全信任開關打開。到此,整個配置完成,打開Charles,並在手機上隨便瀏覽一下網頁,可以發現Charles已經能夠抓取到數據包。

1.3 Charles的亂碼問題

抓取的過程中發現抓取到的數據包亂碼和鏈接unknown問題,原因是需要配置SSL代理,按如下順序依次點擊:

Proxy –> SSL Proxying Setting –> Enable SSL Proxying

然后點擊Add,在彈出的窗口中,Host填寫*Port填寫443,然后點擊確定,最后重啟Charles即可解決亂碼問題。


 

2 mitmproxy的安裝和配置

mitmproxy是一個支持HTTP和HTTPS的轉包程序,類似FiddlerCharles的功能。只不過通過控制台的形式操作。此外,mitmproxy還有兩個關聯組件,一個是mitmdump,它是mitmproxy的命令行接口,利用它可以對接Python腳本,實現監聽后的處理;另一個是mitmweb,它是web程序,通過它可以清楚的觀察到mitmproxy捕獲到的請求。

2.1 mitmproxy的相關鏈接

2.2 mitmproxy的安裝方法

  • 使用pip命令直接安裝:
    C:\Users\Strive>pip3 install mitmproxy

     如果網絡沒有問題,會直接安裝好mitmproxy和所有的依賴庫。

  • 在Github上下載安裝包:

     下載地址:https://github.com/mitmproxy/mitmproxy/releases

Tips:Windows上不支持mitmproxy的控制台接口,但是可以使用mitmdump和mitmweb。

2.3 mitmproxy的證書配置

對於mitmproxy來說,如果想要截獲HTTPS請求,就需要設置證書。mitmproxy在安裝后會提供一套CA證書,只要客戶端信任了mitmproxy提供的證書,就可以通過mitmproxy截獲HTTPS請求的具體內容。

  • 首先,運行一下命令產生CA證書,並啟動mitmdump
    mitmdump
  • 接下來在用戶目錄下的.mitmproxy目錄里找到CA證書,一共5個證書一個導入證書引導頁文件
    1. mitmproxy-ca.p12: 打開該文件,會進入導入證書引導頁。
    2. mitmproxy-ca.pem: PEM格式的證書私鑰
    3. mitmproxy-ca-cert.pem: PEM格式證書,適用於大多數非Windows平台
    4. mitmproxy-ca-cert.p12:PKCS12格式證書,適用於Windows平台
    5. mitmproxy-ca-cert.cer: 與mitmproxy-ca-cert.pem相同,只是改變了后綴,適用於部分Android平台
    6. mitmproxy-dhparam.pem: PEM格式的密鑰文件,用於增強SSL安全性
  • 然后打開mitmproxy-ca.p12文件,進入導入證書引導頁,點擊下一步會出現密碼設置提示,不需要設置密碼,直接點擊下一步,勾選將所有的證書都放入下列存儲(P),再點擊瀏覽,選擇證書存儲位置為受信任的根證書頒發機構,接着點擊確定,然后點擊下一步,如果有安全警告彈出,直接點擊是。這樣就完成Windows上mitmproxy證書的配置。
  • mitmproxy-ca-cert.pem文件用郵件發送到Iphone上,然后再Iphone上直接點擊附件並識別安裝。注意,必須要用Iphone自帶的郵件App收郵件,才能識別附件。
  • 最后啟用手機已連接網絡(WIFI網絡)的http代理,將服務器設置為IPv4地址端口設置為8080(Charles的端口為8888),就可以成功HTTPS請求的具體內容。

 

3 Appium的安裝和配置

Appium是移動端的自動化測試工具,類似於PC端的Selenium,利用它可以驅動Android、IOS等設備完成自動化測試,比如模擬點擊、滑動、輸入等操作。Appium負責驅動移動端來完成一系列操作,對於IOS設備來說,它使用UIAutomation來實現驅動;對於Android設備來說,它使用UIAutomatorSelendroid來實現驅動。同時,Appium也相當於一個服務器,可以向其發送一些操作指令,它會根據不同的指令對移動設備進行驅動,以完成不同的的工作。

3.1 Appium的相關鏈接

3.2 Appium的安裝方法

3.3 Android開發環境配置

如果使用Android設備進行App抓取的話,還需要下載和配置Android SDK,這里推薦直接安裝Android Studio(安裝教程):

在安裝Android Studio之前還要確定已經安裝好了Java JDK(安裝教程):

完成上述環境配置后,下載逍遙模擬器,然后進行安裝:

  • 模擬器安裝路徑:D:\Program Files\Microvirt
  • 模擬器adb路徑: D:\Program Files\Microvirt\MEmu\adb.exe(和Android SDK的adb重名
  • 模擬器adb版本,進入MEmu目錄,終端執行命令adb
    D:\Program Files\Microvirt\MEmu>adb
    Android Debug Bridge version 1.0.31
  • 查看模擬器設備端口號,進入Memu目錄,終端執行命令adb devices
    D:\Program Files\Microvirt\MEmu>adb devices
    List of devices attached
    127.0.0.1:21503 device

     可以查看到設備地址和端口127.0.0.1:21503

  • Android SDK路徑: D:\Java\Android\Sdk
  • Andriod SDK adb路徑:D:\Java\Android\Sdk\platform-tools\adb.exe
  • Android SDK adb版本,因為已經配置好了環境變量,所以終端任意位置執行命令adb
    C:\Users\Strive>adb
    Android Debug Bridge version 1.0.40
    Version 4986621
    Installed as D:\Java\Android\Sdk\platform-tools\adb.exe

通過上述內容可以發現模擬器的adb和Android SDK的adb版本不同,為了實現Appium連接上模擬器,需要將模擬器的adb版本替換成Android SDK adb版本,並且替換后的adb命令名字必須和原來模擬器adb名字一樣(例如,模擬器本來的adb文件名叫xiaoyao_adb.exe,用Android SDK 的adb.exe將xiaoyao_adb.exe替換掉后,需要將adb.exe重命名為xiaoyao_adb.exe)。

adb命令教程1adb命令教程2

終端任意位置執行adb connect 127.0.0.1:21503命令來鏈接模擬器:

D:\Program Files\Microvirt\MEmu>adb connect 127.0.0.1:21503
already connected to 127.0.0.1:21503:5555

終端任意位置執行adb devices -l命令來查看連接情況:

C:\Users\Strive>adb devices -l
List of devices attached
127.0.0.1:21503        device product:LG-H990DS model:LG_H990DS device:LG-H990DS transport_id:2

說明PC已經正確連接到模擬器了。Appium啟動一個App時需要設置Desired Capabilities(完整的Desired Capabilities配置的四個參數:

  • platformName: 平台名稱,需要區分Androidios,根據具體平台填寫即可。
  • deviceName: 設備名稱,此處是手機的具體類型,即model的值LG_H990DS模擬器的話是類似127.0.0.1:21503這樣的address:port)。
  • appPackage: App的包名,可以使用adb shell pm list packages -3命令查看機器中安裝的第三方App包名:
    C:\Users\Strive>adb shell pm list packages -3
    package:io.appium.settings
    package:com.youku.phone
    package:com.UCMobile.x86
    package:com.tencent.mm
    package:com.tencent.mobileqq
    package:com.jingdong.app.mall
    package:com.sina.weibo
    package:io.appium.unlock
    package:com.eg.android.AlipayGphone
  • appActivity: 入口Activity名稱,通常需要以.開頭,可以使用adb shell dumpsys package <package name>來查找到appActivity
    C:\Users\Strive>adb shell dumpsys package com.tencent.mm

     因為顯示內容太多,終端緩存不夠,查看不到最開始的信息,所以將輸出保存為文件(有的內容短的不需要保存為文件)查看:

    C:\Users\Strive>adb shell dumpsys package com.tencent.mm > weixin.txt

     在C:\Users\Strive目錄下有個名為weixin.txt的文件,打開查看:

    Activity Resolver Table:
      Full MIME Types:
          vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile:
            11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI
          vnd.android.cursor.item/vnd.com.tencent.mm.plugin.sns.timeline:
            11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI
          application/*:
            14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
          ...省略掉了...
    
    Base MIME Types:
          vnd.android.cursor.item:
            11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI (6 filters)
          text:
            34b938e5 com.tencent.mm/.plugin.account.ui.VoiceActionActivity (2 filters)
    
      Wild MIME Types:
          text:
            14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
            17ec1c4f com.tencent.mm/.ui.tools.ShareImgUI
          audio:
            14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
          ...省略掉了...
    
    Schemes:
          weixin:
            34d28d86 com.tencent.mm/.plugin.setting.ui.qrcode.GetQRCodeInfoUI
            35497e61 com.tencent.mm/.plugin.base.stub.WXCustomSchemeEntryActivity
          tencent1103188687:
            20694647 com.tencent.mm/.plugin.webview.ui.tools.QQCallbackUI
          http:
            34d28d86 com.tencent.mm/.plugin.setting.ui.qrcode.GetQRCodeInfoUI
    
    Non-Data Actions:
        
           ...省略掉了...
           android.intent.action.MAIN:
                22b4de0 com.tencent.mm/.ui.LauncherUI
           ...省略掉了...

     上述內容22b4de0 com.tencent.mm/.ui.LauncherUI中的.ui.LauncherUI即為查找到的appActivity

如果想要用真機進行測試和數據抓取,具體可以參考https://github.com/appium/appium/blob/master/docs/cn/appium-setup/real-devices-android.md

3.4 IOS開發環境配置

Appium是一個做自動化測試的工具,用它來測試自己開發的App是完全沒有問題的,因為它攜帶的是開發證書(Development Certificate)。如果想用IOS設備來做數據爬取的話,又是另外一回事了。一般情況下,做數據爬取都是使用現有的App,在IOS中一般都是通過App Store下載愛的,它攜帶的是分發證書(Distribute Certificate),而攜帶這種證書的App是禁止測試的,所以只有獲取ipa安裝包再重新簽名之后才可以被Appium測試(ipa包重簽名教程)。

Appium驅動IOS設備必須在Mac下進行,Windows和Linux平台是無法完成的。Mac平台的配置:

  • macOS 10.12及更高版本
  • Xcode 8及更高版本

配置滿足要求之后,執行如下命令配置依賴庫和工具:

xcode-select --install

 這樣IOS部分的開發環境就配置完成了,可以用IOS模擬器來進行測試和數據抓取了。

如果想要用真機進行測試和數據抓取,具體可以參考https://github.com/appium/appium/blob/master/docs/cn/appium-setup/real-devices-ios.md


 

4 參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM