2017-06-21 1 views
0

J'essaie d'intercepter la réponse et de modifier le corps html réponse de l'URL spécifique. Je suis capable de mettre à jour la chaîne dans le contenu html mais quand je vérifie dans le navigateur je ne suis pas capable de trouver les changements que j'ai faits.Modifier la réponse en utilisant le noyau du violoneur

J'utilise ceci pour modifier la réponse

private void FiddlerApplication_BeforeResponse(Session oSession) 
{ 
    //if (!oSession.fullUrl.ToLower().Contains(txtCaptureUrl.Text.Trim().ToLower())) 
    // return; 

    if (oSession.fullUrl.ToLower().Contains("localhost")) 
     return; 

    //Search and replace in HTML. 
    if (oSession.fullUrl.ToLower().Contains("prohance")) 
     { 
    if (oSession.HostnameIs("10.10.10.199") && oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html")) 
     { 
     oSession.bBufferResponse = true; 
     // Remove any compression or chunking 
     oSession.utilDecodeResponse(); 
     var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); 
     //oBody = ReplaceFirst(oBody, "</script>", "<script type='text/javascript'>alert(123)</script>"); 
     oBody = ReplaceFirst(oBody, "ATTENDANCE", "RAVIKANTH"); 
     oSession.utilSetResponseBody(oBody); 
     oSession.utilDecodeResponse(); 
     var oBody1 = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); 
    } 
    return; 
    } 
} 

public string ReplaceFirst(string text, string search, string replace) 
{ 
    int pos = text.IndexOf(search); 
     if (pos < 0) 
     { 
     return text; 
     } 
     return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); 
    } 

quand je suis débogage je suis voir la réponse a été modifiée, mais quand je vérifie Parcourir je ne suis pas en mesure de voir le résultat souhaité ce qui peut être problème Before altering the respone

After altering the respone

+0

Que fait 'ReplaceFirst'? Est-ce votre code? – mjwills

+0

ReplaceFirst est utilisé pour remplacer la première occurrence du mot dans le corps de la réponse par le mot souhaité. –

+0

Cela fonctionne-t-il si vous remplacez 'oSession.utilDecodeResponse(); var oBody = System.Text.Encoding.UTF8.GetString (oSession.responseBodyBytes); 'avec' oSession.utilDecodeResponse(); string oBody = oSession.GetResponseBodyAsString(); ' – mjwills

Répondre

0

Enfin je l'ai résolu ..

J'ai juste raté le réglage oSession.bBufferResponse = true; sur l'événement beforeRequest.

FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest; 

private void FiddlerApplication_BeforeRequest(Session oSession) 
{ 
    oSession.bBufferResponse = true; 
}