5

WebBrowser1によって行われた要求をキャプチャできるようにするプログラムをc#で開発しています。

私の問題は、「リクエストデータ」が常に空であるということです。「webBrowser1.Navigate」コマンドをどこに置く必要があるのか​​わかりません。

今のところ私のコードは次のとおりです。

private void button3_Click(object sender, EventArgs e)
{
    webBrowser1.ScriptErrorsSuppressed = true;
    WebProxy myProxy = new WebProxy();
    Uri newUri = new Uri("http://localhost:8888");
    myProxy.Address = newUri;

    Fiddler.FiddlerApplication.Startup(8888, false, false);

    List<Fiddler.Session> oAllSessions = new List<Fiddler.Session>();

    webBrowser1.Navigate("http://www.youtube.com/");
    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
    {
        System.Windows.Forms.Application.DoEvents();
    }

    Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
    {
        Monitor.Enter(oAllSessions);
        oAllSessions.Add(oS);
        Monitor.Exit(oAllSessions);
    };

    var message = string.Join(Environment.NewLine, oAllSessions);
    MessageBox.Show(message);

    Fiddler.FiddlerApplication.Shutdown();

}

助けてくれてありがとう

4

2 に答える 2

3

あなたが言及している「リクエストデータ」は何ですか?

ここでの中心的な問題は、falseパラメーターを使用してStartupを呼び出していることです。これは、Fiddler がどのプロセスのプロキシにもならないことを示しているため、そのプロキシ インスタンスに HTTP 要求を直接送信しない限り、データは表示されません。 .

このアプリとこのアプリのみからのトラフィックをキャプチャすることが目標の場合は、

URLMonInterop.SetProxyInProcess("127.0.0.1:8888", "<-loopback>");

プロキシ インスタンスを開始した後。これにより、現在のプロセスの WinINET プロキシ設定が、開始した FiddlerCore インスタンスを指すように設定されます。

于 2012-12-05T22:24:49.607 に答える
0

私は推測していますが、リクエストを行う前にフィドラーを設定するようにコードを再配置する必要があると思います:

Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
{
    Monitor.Enter(oAllSessions);
    oAllSessions.Add(oS);
    Monitor.Exit(oAllSessions);
};

webBrowser1.Navigate("http://www.youtube.com/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
    System.Windows.Forms.Application.DoEvents();
}
于 2012-12-05T01:24:21.927 に答える