2012-12-05 2 views
5

Je suis en train de développer un programme en C# qui me permettra de capturer les requêtes faites par le WebBrowser1.Comment capturer des données avec FiddlerCore?

Mon problème est que les "données de requête" sont toujours vides. Je ne comprends pas où je dois mettre la commande "webBrowser1.Navigate".

Pour l'instant, mon code est le suivant.

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

} 

merci pour l'aide

+0

Quel est votre problème spécifique? – Blorgbeard

+0

Salut, mon problème est que les "données de la demande" sont toujours vides. Je ne comprends pas où je dois mettre la commande "webBrowser1.Navigate". Merci encore – Ldg

Répondre

3

De quelles "données de requête" parlez-vous?

Le problème de base est que vous appelez ici Startup avec un faux paramètre, indiquant que Fiddler ne devient pas le proxy pour tout processus du tout, de sorte que vous ne verrez jamais de données à moins que vous directement envoie une requête HTTP à cette instance de proxy.

Si votre objectif est de capturer le trafic de cette application et cette application ne, appelez

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

une fois que vous avez commencé l'instance proxy. Cela définira le paramètre proxy WinINET du processus en cours pour pointer sur l'instance FiddlerCore que vous avez démarrée.

+0

Maintenant, ça marche! Merci beaucoup pour la réponse! cette ligne me sauve! URLMonInterop.SetProxyInProcess ("127.0.0.1:8888", "<-loopback>"); – Ldg

0

Je suppose, mais je pense que vous avez besoin de réorganiser votre code afin que vous configurez Fiddler avant vous faites une demande:

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

bonjour! merci pour la réponse, mais même réarranger le code ne fonctionne toujours pas, la chose étrange est que si j'ouvre fiddler2 il y a des requêtes, mais si je pointe mon application comme un filtre, aussi fiddler2 ne reçoit aucune requête! Merci encore! – Ldg

+0

ok, maintenant application fiddler2 fonctionne, mais dans C# rien à faire! – Ldg

Questions connexes