1

Fiddler.Coreを使用してリバースプロキシを作成しようとしています。これを使用して、http(s)を介してサードパーティのリクエストを再生できます。

libはhttpの場合はうまく機能しますが、httpsの場合は、応答の再生が単にタイムアウトするように見えるため、手順が不足しているようです。

仕様のコードは次のとおりです。

[TestClass]
public class Verify_basic_proxy_functionality
{
    WebClient WC;
    Proxy SUT;

    [TestInitialize]
    public void Init()
    {
        SUT = new Proxy();
        SUT.InsertSession(Url:"http://proxy/ping",ResponseBody:"pong");
        var uri = SUT.Startup(9100,IsRecording: false);
        WC = new WebClient() { Proxy = new WebProxy(uri)};
    }

    [TestMethod]
    public void Ping_should_return_pong()
    {
        WC.DownloadString("http://proxy/ping").ShouldBe("pong");
    }

    [TestMethod]
    [ExpectedException(typeof(WebException))]
    public void Pang_should_return_error()
    {
        WC.DownloadString("http://proxy/pang");
    }

    [TestMethod]
    public void Http_reverse_proxy_should_work()
    {
        SUT.IsRecording = true;
        var http_url = "http://httpbin.org/ip";
        var initial_result = WC.DownloadString(http_url);
        initial_result.ShouldContain("origin");
        SUT.IsRecording = false;
        var result = WC.DownloadString(http_url);
        result.ShouldBe(initial_result);
    }

    // This one fails with a timeout... Probably need to close the connection or similar?
    [TestMethod]
    public void Https_reverse_proxy_should_work()
    {
        SUT.IsRecording = true;
        var https_url = "https://httpbin.org/ip"; 
        var initial_result = WC.DownloadString(https_url);
        initial_result.ShouldContain("origin");
        SUT.IsRecording = false;
        var result = WC.DownloadString(https_url);
        result.ShouldBe(initial_result);
    }
}

プロキシのコードは、この要点にあります:https ://gist.github.com/ToJans/5082560

https(つまりエンコーディング)のために余分なステップを追加する必要があるかもしれないと思います。AFAIK fiddler.coreは、をインターセプトしOnValidateServerCertificateて常にtrueを返すため、証明書エラーを無視します。

私がここで間違っていることを誰が教えてくれますか?

4

1 に答える 1

1

さて、私の同僚は私の思考の欠陥を指摘しました。SSLの再生を行うときは、CONNECTを記録/再生しないでください!!!

MITMプロキシが機能するようになりました.....

于 2013-03-06T09:57:27.503 に答える