1

できるようにしたいこと: サーバーに送信される前に HTTP リクエストを編集する

ユーザーがブラウザで選択した Web ページに移動する > 編集したいリクエストに遭遇する > リクエストを編集すると、元のリクエストではなくサーバーに送信されます。

これまでに行ったこと: リクエストを取得しましたが、編集するコードを見つける手助けが必要です。これまでのリクエストをキャプチャするための私のコードは次のとおりです。

    Fiddler.FiddlerApplication.BeforeRequest += sess =>
    {
        //Code to detect user specified URL here
    }

実際に送信する前にリクエストを編集することはできますか? FiddlerCore API のみを使用して実行できる場合は、感謝しますが、必要に応じてより多くのバイナリをダウンロードしたいと考えています。

追加メモ: ストリームライター、バイナリ ライターを試し、レスポーズをメモリ ストリームにコピーし、編集してからコピーし直しましたが、これらの方法はどれもうまくいきません。また、いくつかの方法を試すと、アプリがハングするだけで、X を押すなどの操作に応答しません。

たぶん、私が達成しようとしていることを説明するのが下手なのかもしれません.

リクエストが文字列「hello world」を読み取る場合、ユーザーが「hello there」と言うように REQUEST を変更できるようにしたいと思います

4

2 に答える 2

1

RequestBody が読み取り専用であると思っていたので、私はそのような愚かな間違いを犯しました。次のように応答を単純に編集できたことがわかりました。

    session.RequestBody = myBytes;

これには本当に腹が立ちます!

于 2012-12-14T11:27:57.070 に答える
0

デモ アプリでは、デリゲートの追加は次のように表示されます。

    Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) {
        // Console.WriteLine("{0}:HTTP {1} for {2}", oS.id, oS.responseCode, oS.fullUrl);

        // Uncomment the following two statements to decompress/unchunk the
        // HTTP response and subsequently modify any HTTP responses to replace 
        // instances of the word "Microsoft" with "Bayden". You MUST also
        // set bBufferResponse = true inside the beforeREQUEST method above.
        //
        //oS.utilDecodeResponse(); oS.utilReplaceInResponse("Microsoft", "Bayden");
    };
于 2012-12-14T10:03:19.797 に答える