2012-12-05 9 views
5

Ich entwickle ein Programm in C#, mit dem ich die Anforderungen des WebBrowsers1 erfassen kann.So erfassen Sie Daten mit FiddlerCore?

Mein Problem ist, dass die "Anfrage Daten" immer leer ist. Ich verstehe nicht, wo ich den Befehl "webBrowser1.Navigate" setzen muss.

Für jetzt ist mein Code wie folgt.

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(); 

} 

Dank für die Hilfe

+0

Was ist Ihr spezifisches Problem? – Blorgbeard

+0

Hallo, mein Problem ist, dass die "Anfragedaten" immer leer sind. Ich verstehe nicht, wo ich den Befehl "webBrowser1.Navigate" setzen muss. Danke nochmal – Ldg

Antwort

3

Auf welche "Anfragedaten" beziehen Sie sich?

Das Kernproblem dabei ist, dass Sie Startup mit einem falsch Parameter anrufen, was anzeigt, dass Fiddler für jeden Prozess wird überhaupt nicht den Proxy werden, so dass Sie nie direkt, wenn Sie alle Daten sehen werden Senden Sie eine HTTP-Anfrage an diese Proxy-Instanz.

Wenn Ihr Ziel-Verkehr von dieser App und diese App nur zu erfassen, rufen

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

, nachdem Sie die Proxy-Instanz gestartet haben. Dadurch wird die WinINET-Proxy-Einstellung des aktuellen Prozesses so eingestellt, dass sie auf die von Ihnen gestartete FiddlerCore-Instanz zeigt.

+0

Jetzt funktioniert! Vielen Dank für die Antwort! Diese Linie rette mich! URLMonInterop.SetProxyInProcess ("127.0.0.1:8888", "<-loopback>"); – Ldg

0

Ich schätze, aber ich glaube, Sie müssen Ihren Code neu zu ordnen, so dass Sie eingerichtet Fiedler vor Sie eine Anfrage:

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(); 
} 
+0

hallo! danke für die antwort, aber selbst das umstellen des codes klappt immer noch nicht, das komische daran ist, dass wenn ich fiddler2 öffne, gibt es anfragen, aber wenn ich meine anwendung als filter aufrufe, bekommt auch fiddler2 keine anforderung! Danke nochmal! – Ldg

+0

ok, jetzt fiddler2 Anwendung funktioniert, aber in C# nichts zu tun! – Ldg