Mitmproxy and iOS simulator

之前(兩三年前了)因為工作需求,想要確認 iOS 到底有沒有認真看待 HTTP cache 機制,因為在 app 內,收到的 HTTP status code 總是 200,然後我又看不到 request header,遠端的資料放 CDN 上也不好看到紀錄,轉念一想,我是不是可以改成監看 iOS 模擬器的所有請求呢?

搜尋之後發現有人說可以用 mitmoroxy,是開源的不像其他 proxy 除錯工具一樣需要付費,稍微測試了一下,發現這東西很好安裝和使用啊,所以花了一點時間研究看看是不是能達到目標,大概步驟如下:

  • 安裝brew install mitmproxy
  • 然後開 iOS 模擬器
  • 安裝 mitmoroxy 的 cert 到模擬器裡面
xcrun simctl keychain booted add-root-cert ~/.mitmproxy/mitmproxy-ca-cert.pem
  • 啟動 mitmproxy
  • 然後設定你的 MacOS 網路來使用這個 proxy(預設是http://localhost:8080),因為 iOS 模擬器和 host OS 是共用網路的

就這麼簡單,不過這方法還是有些限制,像是如果有用 HTTPS pinning 的話,那就還要其它設定;然後 mitmproxy 本身的操作很好上手,這邊就不多花時間說明了。

然後回到一開始的問題,到底 304 有沒有用呢?我這邊是用 React Native 內的 fetch,然後結論就是,在 mitmproxy 確實是看的到 304,不過在 RN 的 context 內就會變成 200 了,其實後來想想也覺得合理,因為應用程式層本來就不應該去處理 HTTP 層的 cache 問題,這樣大大的簡化了複雜度。

參考:


Unicode CLDR 與貨幣數值格式

Venezia

其實一直以來都有點好奇,像 Intl 這種可以根據語系格式化輸出數字、貨幣數值或是日期等資料的工具函數,它的資料集到底是哪裡來的?會很好奇是因為這其實是一個多對多的組合,不同的語言地區配上不同的貨幣,算起來每種資料格式都要維護一組數量不小的組合,例如我想要用法文或英文顯示 10000 新台幣要用怎麼顯示呢:

// zh-Hant
$10,000.00
// fr
10 000,00 TWD
// en-US
NT$10,000.00
閱讀「Unicode CLDR 與貨幣數值格式」全文



2024 北海道 Part 1

Lake Hill Farm

去年安排了一趟北海道的旅行,主要的目標是吃吃,沒有特別想獨立抽出來的分享的部分,所以就分幾篇貼照片加流水帳紀錄一下吧。行程一開始的規劃大致上如下:

Day # Trip 
16  1 小樽
17  2 小樽
18  3 洞爺湖
19  4 登別
20  5 十勝川温泉
21  6 阿寒湖
22  7 網走
23  8 旭川
24  9 富良野
25 10 札幌
26 11 札幌
27 12 札幌
28 13 札幌
29 14 家
閱讀「2024 北海道 Part 1」全文

➡ 看看其它文章