83

テスト目的でAPIからの応答を書き直すためにCharlesProxyを使用しています。

ブレークポイントを設定すると、必要に応じて生の応答を完全に書き換えることができます。

ただし、「書き換え」ツールを使用して自動化したい場合は、行き詰まります。ステータスコードを変更できないようです。

ルールパネルの書き換え

私が何かを逃しているかどうか知っていますか?

4

7 に答える 7

134

アップデート:Charles Proxyのバージョン3.8がリリースされたばかりで、ステータスを書き換えることができます。リリースノートから:

  • 書き換えツール:応答ステータスの書き換えを許可します

このバージョンのリライトUIは、新しい「応答ステータス」ルールタイプを追加します。

ここに画像の説明を入力してください

于 2013-09-06T23:16:46.937 に答える
26

1-選択Tools > RewriteまたはOPTION + CMD + R

選択を書き換えます


2-選択Enable Rewriteしてから選択Add

書き換え選択を有効にする


3-フィールドに詳細を入力します

詳細


4-タイプとアクションを追加

タイプとアクション


5-アクションのタイプを選択Response Statusします-この場合-、変更する値を書き込みます-500-、置換する値を書き込みます-200-

タイプとアクションの構成


最終段階:

6-チャールズとの応答のステータスコードを操作する準備ができました

ついに

Charles WebDebuggingProxyの公式サイト

于 2019-12-30T10:46:11.703 に答える
17

Charles 3.8+を使用すると、ステータスコードを書き直すことができます。

書き換えツールで、「タイプ:応答ステータス」を選択します。一致フィールドと置換フィールドでは、Charlesは着信ステータスと書き換えステータスがフォーマットと一致することを期待していることに注意して"\d{3} .*"ください。つまり、書き換えられたステータスには、数値のステータスコードに加えてメッセージ部分が必要です。

例えば:

一致値:201。*

置換値:502 Bad Gateway

置換値からメッセージを省略すると、ステータス行は書き換えられません。Charlesの書き換えツールの出力メッセージは、各呼び出しの要約の「メモ」セクションで確認できます。

于 2014-03-31T22:34:11.810 に答える
11

これはあなたの質問に対する直接の答えではありませんが、上記の私のコメントで述べたように、私は同じ状況にあり、私にとってうまく機能する別のツールを使用して解決策を見つけました。

Charlesの代わりに、次の短いPython書き換えスクリプトを使用して、 mitmproxy、具体的にはmitmdumpを実行します。

#!/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に構成しました。

于 2013-05-09T20:20:34.983 に答える
4

最終編集:Marc Liyanageの答えは、現在この質問に対して最も正しいものです。

いいえ、そうではありません。ステータスコードを書き直すことはできないと思います。

これをコメント(新規ユーザー)として追加することはできませんが、回避策の1つは次のとおりです。

  1. 必要なコードを返すリソースをサーバー上に作成するか、返すコードを見つけます。
  2. リモートマップ機能を使用して、コードを返すリソースにマッピングします。

Map Localを使用してみましたが、これはこれに最適ですが、Charlesは、返されたすべてのファイルに独自の200OKステータスコードを追加します。

編集:また、個々の応答にブレークポイントを使用して、コードを変更することもできます。

于 2013-06-19T15:19:24.657 に答える
1

Charlesへの直接の答えではありませんが、Proxymanスクリプト機能)を使用して、HTTP応答を簡単に変更するJSコードを記述できます。

例えば、

function onResponse(url, request, response) {
    // Change to 404 status code for the matching request
    response.statusCode = 404; 
    return response;
}

実行できるスニペットコードの完全なリストは次のとおりです。

免責事項:私はProxymanの作成者です。それがあなたを助けることができることを願っています。

于 2020-08-29T07:16:12.407 に答える
1

Requestly Desktop Appを使用すると、リクエストの応答だけでなく、ステータスコードも30秒以内に変更できます。

これに加えて、次のことができます。

  • 一致させる必要のあるURLの正規表現/ワイルドカードパターンを定義します。
  • ルールを保存します(ステータスコードを何度も変更する必要がないようにするため)。

基本的な応答変更ルールは次のようになります ここに画像の説明を入力してください

これが同じものの簡単なデモです。 https://youtu.be/nLcIZGmMAtQ

于 2022-01-10T10:54:34.130 に答える