2013-01-16 38 views
33

我正在使用Charles Proxy來重寫來自API的響應以用於測試目的。是否有可能用Charles Proxy重寫狀態碼?

如果我設置一個斷點,我允許,我想完全重寫原始響應。

但是,如果我想通過「重寫」工具來自動執行它,我卡住了,似乎你不能修改的狀態代碼:

Rewrite Rule panel

你知道,如果我遺漏了什麼?

+1

我只是想知道同樣的事情。我現在需要這個功能,所以我向Charles Proxy的作者發送了支持請求。如果我知道如何做到這一點,我會報告回來。 –

回答

65

的更新:查爾斯代理的3.8版本剛剛發佈,與改寫狀態的能力。從release notes

  • 重寫工具:允許響應狀態改寫

這個版本的重寫UI增加了一個新的 「響應狀態」 規則類型:

enter image description here

+0

完美地工作。謝謝 – Janusz

+23

在我的Charles版本(3.10.1)中,我必須輸入一個狀態碼和一條消息才能重寫。對於上面的示例工作,我必須用「500錯誤」替換「500」。 – emidander

8

這不是直接回答你的問題,但在我的評論指出上面我是在同樣的情況,我發現使用不同的工具,它爲我的作品很好的解決方案。

而是查爾斯的,我跑mitmproxy,特別mitmdump,這個簡短的Python rewriting script

#!/usr/bin/env python 

def response(context, flow): 
    if '/somePath' not in flow.request.path: 
     return 

    flow.response.status_code = 404 

鉤它到代理服務器,我運行mitmdump這樣的:

mitmdump -s /path/to/rewriting-script.py 

,它效果很好。

我在OS X和我配置的網絡接口的Web代理爲127.0.0.1端口8080

3

最後編輯:馬克Liyanage的回答是最正確的這個問題現在。

不,你不,我不認爲這是可能改寫一個狀態代碼。

我不能將其添加爲註釋(新用戶),但一個解決方法是:

  1. ,將返回你所需要的代碼,或者找到那些做一個服務器上創建資源。
  2. 使用地圖Remote功能,映射到返回的代碼資源。

我試過使用地圖本地,這將是完美的,但查爾斯增加了它自己的200 OK狀態代碼到返回的所有文件。

編輯:你也可以使用個體反應斷點和修改代碼。

+1

Marc Liyanage的答案是Charles新版本(3.8+)的正確答案。 – alejandromp

7

使用查爾斯3.8 +,你可以重寫狀態碼。

在重寫工具中,選擇「類型:響應狀態」。 在匹配字段和替換字段中,請注意,Charles預計傳入和重寫的狀態匹配格式"\d{3} .*"。這意味着您的重寫狀態除了數字狀態碼之外還必須有一個消息部分。

例如:

匹配值:201 *

替換值:502錯誤的網關

省略從替換值的消息將導致沒有重寫的狀態線。 您可以在每個調用摘要的Notes部分中看到Charles的重寫工具輸出消息。

相關問題