文章目錄
讓 iOS 裝置可以存取自訂 domain
近幾年行動裝置的瀏覽量佔比有愈來愈高的趨勢,身為 web 工程師也得朝著 mobile first 的方向做調整優化,所以在不同行動裝置上做測試也在所難免,為了避免 key 錯 ip、方便記憶,多數的專案也都採用 private domain 的做法,因此不可能為了 iOS 裝置測試方便就調整不同服務間的 connection string,想了幾種方式最後還是搬出老方法 - 透過某台開發環境的電腦架設 proxy server 來處理
iOS 沒有 hosts file 可以設定,同事說可以透過 jb 來設定,我沒有實際用過,留給大家自行嘗試看看囉
基本環境說明
- macOS Catalina 10.15.1
- iOS 13.3
- docker 19.03.5
- Mitmproxy 5
在內網中使用自訂 domain :
yowko.test
開發環境透過修改
etc/hosts
,將yowko.test
指向特定內網 ip 獲取服務,iOS 不認得自訂 domain
設定方式
使用
Mitmproxy
在電腦上建立 proxy server這邊可以使用其他工具 (過去在 Windows 平台,我多是使用 fiddler 詳細資訊可以參考之前筆記 使用fiddler 內建proxy 來截錄手機或是程式封包,因為 mac 使用 fiddler 需要透過 mono 以方便性來看不是首選)
透過 homebrew 安裝
安裝指令
brew install mitmproxy
啟動
Mitmproxy
僅啟動 proxy server
mitmproxy
畫面會顯示出所有 proxy 經手的資訊
啟動 proxy server 及 web ui
會一併啟動 proxy server
mitmweb
有 web ui 顯示出所有 proxy 經手的資訊
使用 docker
其他使用方式,請參考 dockerhub - mitmproxy/mitmproxy,預設 mitmproxy 會使用 stdout 輸出資訊,如果使用
-d
daemon 模式啟動, container 啟動完成就會直接 shutdown 了docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy
將 iOS 裝連上與電腦共用的 wifi,並設定 proxy server 指向裝設 mitmproxy 的電腦 ip
)
已可正常存取自訂 domain
無法連線 https 網頁或是 apple 服務 (optional)
雖然可以正常存取自訂 domain,但部份服務卻出現異常,主要是因為 mitmproxy 無法正確轉導 https 內容,此時可以透過信依 mitmproxy 憑證解決問題,或是裝置只在自訂 domain 測試使用,需要其他服務時停用 proxy
在 iOS 上使用
Safari
連線至http://mitm.it
下載並安裝 Mitmproxy 用憑證一定要透過
Safari
開啟網頁,否則無法進行安裝設定 –> 一般 –> 描述檔
設定 –> 一般 –> 關於本機 –> 憑證信任設定
啟用根憑證完整信任
心得
這招是以前跟寫 app 的同事合作時常用來 debug 的方法,想不到過這麼多年了還是相當受用,非常感謝當年同事的指導
說實話我不清楚這個做法是不是最好,甚至是不是正確的,不過以結果來看的確可以解決當下的問題,提供大家參考,也請大家指教其他做法
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。