基於Fiddler/Charles調試指定API服務器

前言

不積跬步,無以至千里;不積小流,無以成江海;很久沒上來寫博客了,趁着疫情在家,尋思將這些年的一些小經驗記錄下來。

本文轉載自公司內部wiki。

1、目的

在開發工作中,有些時候需要調試已經對接過API,比如APP/H5已經對接了N個接口,但是其中幾個接口可能有服務端的變更,需要回歸一下接口的兼容性,這個時候用 Fiddler/Charles 代理對應的客戶端請求,攔截指定規則的請求,轉發到你想要進行測試驗證的服務器,這就可以非常方便驗證服務是否能滿足真實需求了。(標題中所謂指定API服務器,可以是正式環境的API、預覽環境的API、測試環境的API、本地的API,只需要對應的客戶端支持即可。)

2、Fiddler 怎麼做

  1. 首先確保你的 Fiddler 可以遠程調試
    這個配置主要是爲了考慮你可能是需要調試APP,那所謂的客戶端和你的 Fiddler 工具勢必不在同一個機器上,因爲一個是 Windows 一個可能是 Android 或者 iOS。如下圖。

    (在如上圖中確保 `Allow remote computers to connect`,同時我在這裏強烈建議大家把 `Act as system proxy on startup` 去掉勾選,這個是一個懶人配置,但是會帶來很多的坑)
  2. 然後在 Fiddler 的 FiddlerScript 界面找到 OnBeforeRequest 代碼段
  3. 在這個方法裏面寫入以下代碼就可以完成目標

    OnBeforeRequest Example

    /*

    * 這裏是舉例子

    * if  條件可以相當的複雜,根據各自的需求來,語法基本和 C#/Java/JavaScript 類似,有還算比較友好的智能提示。

    * oSeesion 的類型是 Session,又上角有一個 ClassView 可以看到更多的API如果感興趣的話。

    */

    var yourApi="http://127.0.0.1:45678/api";

    if(oSession.fullUrl.Contains("https://appapi.safetree.com.cn/path-you-want")){

        oSession.fullUrl=oSession.fullUrl.Replace("https://appapi.safetree.com.cn/path-you-want",yourApi)

    }

3、Charles 怎麼做

  1. 同樣是支持遠程訪問

  2. 找到 Map Remote 功能
  3. 編寫 Map 規則
    記得要啓用哦,`Enable Map Remote`
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章