1. 程式人生 > >iPhone頁面的常用調試方法

iPhone頁面的常用調試方法

登錄 xcode phone 僅支持 nal 操作 xtra 連接 lin

在iPhone中調試,大體上與上文 安卓中的移動頁面調試 類似,區別主要是iOS系統中的一些限制,導致某些工具無法使用。

本文基於此,簡要介紹在iPhone中如何調試頁面。

最終可以實現在Mac平臺使用Safari(或結合ios_webkit_dubug_proxy使用Chrome)調試手機中Safari的頁面,結合Charles進行抓包請求斷點,再通過微信ipa包重簽名來調試微信的WKWebView

在Windows中結合Fiddler與ios_webkit_debug_proxy中轉實現Chrome調試手機的Safari瀏覽器

一、能夠訪問頁面

某些頁面需要設置HOST才能進行訪問,在iPhone上不好設置HOST,所以需要一些代理工具幫助我們

除了Windows平臺中常用的代理調試工具Fiddler之外,還可以使用Mac中的常用代理工具 Charles

Fiddler

與上文類似,在iPhone中的WiFi設置裏面,設置代理為Windows的 ip:host,如果需要訪問HTTPS的頁面還需要設置證書

技術分享圖片技術分享圖片技術分享圖片技術分享圖片

Charles

在手機上設置好代理後,訪問頁面時在Charles中統一請求接入即可

技術分享圖片

當需要進行HTTPS頁面的訪問時,也需要在Mac和iPhone中都設置好證書

技術分享圖片

安裝後可在Mac證書列表中看到

技術分享圖片

並設置相關的域

技術分享圖片

根據Charles的提示,手機連接代理之後訪問 chls.pro/ssl 安裝證書,再訪問即可

技術分享圖片

技術分享圖片

而對於某些需要賬號授權登陸的頁面,涉及到Cookie的模擬登錄,可以使用這兩個代理工具進行設置

在Fiddler中可以按前文安卓的配置

在Charles中也有對應的方法

技術分享圖片

二、審查元素查看頁面輸出

可以使用Chrome的設備模擬來查看頁面

技術分享圖片

不過對於iPhone的調試,還需要進行真機的頁面查看

一般來說,iPhone中的頁面是在Safari瀏覽器中查看的

微信中的內置瀏覽器是WKWebView內核或 UIWebView ,WKWebView的版本依賴於IOS的版本。其中 UIWebViewer 只是系統瀏覽器的一部分組建,功能不全或有所 限制

所以某些情況下可直接在手機的Safari瀏覽器進行查看調試,某些情況還是少不了在微信內置瀏覽器中進行

Safari遠程調試

這個方法需要結合Mac的Safari瀏覽器使用,通過Mac與iPhone進行連接來調試

技術分享圖片

手機上訪問某個頁面,選取進行調試,將會打開Safari的開發者工具,可以看到熟悉的幾個面板

技術分享圖片

技術分享圖片

除了審查元素查看日誌之外,還可進行腳本的斷點調試,查看網絡請求等操作。

不過功能相對Chrome DevTools來說,相對簡單了些,對於簡單的頁面可直接使用

對於高版本的iOS系統(如iPhone 7),進行遠程調試的Mac主機的系統版本也有限制,並非任何Mac和iPhone之間都能進行調試

此外,這種遠程調試僅支持調試手機的Safari瀏覽器,無法調試微信的內置瀏覽器

基於Weinre的調試

參考前文

基於微信開發者工具的調試

參考前文

技術分享圖片

與前文類似,這兩種方法都能進行基礎的頁面信息查看,不支持HTTPS,使用spy-debugger可支持HTTPS

基於 spy-debugger 的調試

參考前文,設置好相應的HTTPS證書

技術分享圖片

基於 ios-webkit-debug-proxy 的調試

Mac上的safari調試功能不夠好,而且不能調試微信中的頁面,使用weinre只能簡單地調試微信頁面,無法進行腳本斷點等高級功能

最好的辦法莫過於讓iPhone可Chrome Devtools進行連接,充分利用好的調試工具與現有的平臺,進行調試。

ios-webkit-debug-proxy 支持多平臺,這麽來說我們可以不借助Mac主機實現調試iPhone的需求。不過配置過程稍微有些繁瑣

在Mac中安裝

技術分享圖片

在前面install前面加上參數是因為brew的update太慢了,手動設置成不需要update

另外,可以看到報錯了,在這裏設置權限即可

技術分享圖片

在手機打開某個頁面,然後訪問 localhost:9221 ,即可進行調試

技術分享圖片

或者之間在chrome中輸入 chrome://inspect 也可看到相應信息

技術分享圖片

美中不足還是無法檢測微信中的頁面

在Windows中配置

在windows中配置相對麻煩了些,首先需要安裝powershell(win10中已經自帶),然後安裝 scoop ,再安裝這個插件

  • 安裝powershell3: https://www.microsoft.com/en-us/download/details.aspx?id=34595
  • 安裝scoop: iex (new-object net.webclient).downloadstring(‘https://get.scoop.sh‘)
  • 安裝git: scoop install git
  • 關聯包集:scoop bucket add extras
  • 安裝工具:scoop install ios-webkit-debug-proxy
  • USB連接設備(或模擬器)
  • 開啟ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html(參數免FQ)
  • 設置Chrome://inspect中監聽端口
  • 如果沒有設備列表,可能需要安裝iTunes來獲取(間接地使用授權功能)

同樣地,訪問相應的頁面

技術分享圖片

技術分享圖片

或者使用Chrome自身的DevTools來調試,即可實現在Window中調試手機Safari頁面(然而還是不支持微信內置的)

技術分享圖片

調試微信內置的webview

要調試微信內置的webview,就需要對其進行重簽名打包, 讓iOS覺得我們是微信這個APP的開發者(蘋果的限制太多了)

相關鏈接 相關鏈接

相關步驟:

在現有證書基礎上(如果沒有證書需要自己設置)

1. 下載 IPAPatch ,解壓。

可以看到如下文件信息

技術分享圖片

2. 下載越獄版的微信ipa(盡量通過正規渠道獲取,也可直接在PP助手下載,下載的時候不要連接手機)

ipa是iOS的應用程序文件包,類似安卓中的apk,正常版本的帶有加密信息,打包後會出問題,越獄版已經去殼,可以簽入我們的證書

3. 將 IPAPatch文件夾中的 /Assets/app.ipa 替換成這個微信 ipa

4. 用XCode打開 /IPAPatch.xcodeproj

5. 設置 一個新的 BundleID,選用AppleID Team,設置Code Signing,選擇真機 target,然後運行安裝即可

遇到報錯信息就按提示進行解決

可能遇到的問題有:

no matching provisioning profiles found 確認是否配置了證書,簡單的操作可以直接按提示進行fixed

Code signing is required for product type ‘Framework‘ in 不要忘了設置Framework中的簽名

Xcode: failed to get the task for process 打開應用是會伴有閃退現象。 簽名需要使用開發版(iOS Developer),不要使用發布版(iOS Distribution),ipa包需使用越獄版

Xcode “Device Locked” When iPhone is unlocked 記得在手機上選擇信任電腦

could not find developer disk image 低版本的XCode不包含新版iOS的系統依賴,需要更新XCode為最新版,或者直接下載對應的包,放到XCode的包目錄中

安裝成功後一直停留在啟動畫面 可能是XCode開啟了調試斷點功能,取消即可

安裝之後原有微信應用打不開了,如果使用不恰當的ipa包,會有意外的副作用,所以得謹慎選擇ipa包

技術分享圖片

技術分享圖片

技術分享圖片

安裝成功後,即可打開新的微信使用

技術分享圖片

登陸後,訪問相關頁面,就可以調試webview了

方法同上,可在Mac上使用Safari來調試內置瀏覽器的頁面,公眾號,小程序等

技術分享圖片

或者,直接使用我們的windows系統,開啟 ios_webkit_debug_proxy 後,在Chrome中調試即可

技術分享圖片

技術分享圖片

iPhone頁面的常用調試方法