テスト目的でAPIからの応答を書き直すためにCharlesProxyを使用しています。
ブレークポイントを設定すると、必要に応じて生の応答を完全に書き換えることができます。
ただし、「書き換え」ツールを使用して自動化したい場合は、行き詰まります。ステータスコードを変更できないようです。
私が何かを逃しているかどうか知っていますか?
テスト目的でAPIからの応答を書き直すためにCharlesProxyを使用しています。
ブレークポイントを設定すると、必要に応じて生の応答を完全に書き換えることができます。
ただし、「書き換え」ツールを使用して自動化したい場合は、行き詰まります。ステータスコードを変更できないようです。
私が何かを逃しているかどうか知っていますか?
アップデート:Charles Proxyのバージョン3.8がリリースされたばかりで、ステータスを書き換えることができます。リリースノートから:
このバージョンのリライトUIは、新しい「応答ステータス」ルールタイプを追加します。
1-選択Tools > Rewrite
またはOPTION + CMD + R
2-選択Enable Rewrite
してから選択Add
3-フィールドに詳細を入力します
4-タイプとアクションを追加
5-アクションのタイプを選択Response Status
します-この場合-、変更する値を書き込みます-500-、置換する値を書き込みます-200-
最終段階:
6-チャールズとの応答のステータスコードを操作する準備ができました
Charles 3.8+を使用すると、ステータスコードを書き直すことができます。
書き換えツールで、「タイプ:応答ステータス」を選択します。一致フィールドと置換フィールドでは、Charlesは着信ステータスと書き換えステータスがフォーマットと一致することを期待していることに注意して"\d{3} .*"
ください。つまり、書き換えられたステータスには、数値のステータスコードに加えてメッセージ部分が必要です。
例えば:
一致値:201。*
置換値:502 Bad Gateway
置換値からメッセージを省略すると、ステータス行は書き換えられません。Charlesの書き換えツールの出力メッセージは、各呼び出しの要約の「メモ」セクションで確認できます。
これはあなたの質問に対する直接の答えではありませんが、上記の私のコメントで述べたように、私は同じ状況にあり、私にとってうまく機能する別のツールを使用して解決策を見つけました。
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に構成しました。
最終編集:Marc Liyanageの答えは、現在この質問に対して最も正しいものです。
いいえ、そうではありません。ステータスコードを書き直すことはできないと思います。
これをコメント(新規ユーザー)として追加することはできませんが、回避策の1つは次のとおりです。
Map Localを使用してみましたが、これはこれに最適ですが、Charlesは、返されたすべてのファイルに独自の200OKステータスコードを追加します。
編集:また、個々の応答にブレークポイントを使用して、コードを変更することもできます。
Charlesへの直接の答えではありませんが、Proxyman(スクリプト機能)を使用して、HTTP応答を簡単に変更するJSコードを記述できます。
例えば、
function onResponse(url, request, response) {
// Change to 404 status code for the matching request
response.statusCode = 404;
return response;
}
実行できるスニペットコードの完全なリストは次のとおりです。
免責事項:私はProxymanの作成者です。それがあなたを助けることができることを願っています。
Requestly Desktop Appを使用すると、リクエストの応答だけでなく、ステータスコードも30秒以内に変更できます。
これに加えて、次のことができます。
これが同じものの簡単なデモです。 https://youtu.be/nLcIZGmMAtQ