iPhone頁面的常用調試方法

来源:https://www.cnblogs.com/imwtr/archive/2018/03/30/8675701.html
-Advertisement-
Play Games

在iPhone中調試,大體上與上文 安卓中的移動頁面調試 類似,區別主要是iOS系統中的一些限制,導致某些工具無法使用。 本文基於此,簡要介紹在iPhone中如何調試頁面。 最終可以實現在Mac平臺使用Safari(或結合ios_webkit_dubug_proxy使用Chrome)調試手機中Saf ...


 在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 ,再安裝這個插件

同樣地,訪問相應的頁面

或者使用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中調試即可

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本博文是通過實際開發中的一個實例來講解自定義組件的使用。 第一步:新建自定義組件目錄,如圖,我新建了個componts和tabList目錄,然後右鍵tabList目錄選擇新建compont取名為tabList,就生成瞭如下目錄結構,組件結構和page一樣,包含js json wxml wxss 四個 ...
  • float元素原本的作用是用來使文字包裹圖片,現在人們更多的是用來進行佈局(ps:有沒有點濫用的意思) 也就是說本來你排好的界面設計,但是因為浮動會導致元素脫離文檔流,使得其他非浮動的塊級元素會無視這個浮動元素所占據的空間,或者是內聯元素的變化,導致排版出現問題。 常見的float帶來的問題: 這就 ...
  • ε=(´ο`*)))~昨天從項目現場趕回來 去面試了一波也是三年來第一波技術面,,沒準備,差勁的不行! 今天寫下 nrm這個包,此包主要用來切換 registry庫,當然也可以直接用 npm i <package> --registry https://xxxxx 安裝好之後可以用命令查看下幫助 可 ...
  • JavaScript模塊化規範主要遵循CommonJS和AMD規範。 CommonJS規範-伺服器端JavaScript規範 Node.js是一個伺服器端JavaScript項目,採用了CommonJS標準實現其模塊系統。 CommonJS中採用一個全局require方法來載入模塊,主要由原生模塊m ...
  • 作用域 (1)、作用域也叫執行環境(execution context)是JavaScript中一個重要的概念。執行環境定義了變數或函數有權訪問的其他數據,決定了它們各自的行為。在JavaScript中變數的作用域有全局作用域和局部作用域,全局變數是指變數沒有在函數體內聲明或者在函數內聲明的時候沒有 ...
  • 廢話不多少,下麵是對我從開發微信小程式的第一步開始到發佈的總結,覺得對您有幫助的話,可以贊賞下,以對我表示鼓勵。 一:首先註冊登錄微信公眾平臺,這個平臺很重要,以後查文檔全在上面看。https://mp.weixin.qq.com/。然後在設置=》開發設置那裡獲取appID; 二:下載微信開發者工具 ...
  • vue使用element ui的el input監聽不了回車事件,原因應該是element ui自身封裝了一層input標簽之後,把原來的事件隱藏了,所以如下代碼運行是無響應的: 解決方法需要在事件後面加上.native ...
  • 優先順序從高到低排列,瀏覽器優先滿足前面的規則 1,!important優先順序最高 2,內聯樣式 3,作者>讀者>瀏覽器 4,優先順序權重加法 id選擇器+100/個 類/偽類選擇器+10/個 元素名+1/個 5,權重值相等則以後出現的為準 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...