Javascript Fiddler XML解析
FiddlerScript是。例如,以下对onbeforesponse的添加将偷偷地用Javascript Fiddler XML解析,javascript,json,xml,fiddler,Javascript,Json,Xml,Fiddler,FiddlerScript是。例如,以下对onbeforesponse的添加将偷偷地用127.0.0.1替换返回的外部IP地址: if (oSession.url == "api.ipify.org/?format=json"){ var j = GetResponseJson(oSession); j["ip"] = "127.0.0.1"; SetResponseJson(oSession, j); } 其中GetResponseJson和SetResponseJ
127.0.0.1
替换返回的外部IP地址:
if (oSession.url == "api.ipify.org/?format=json"){
var j = GetResponseJson(oSession);
j["ip"] = "127.0.0.1";
SetResponseJson(oSession, j);
}
其中GetResponseJson
和SetResponseJson
是我根据Eric的链接答案生成的助手函数:
static function GetResponseJson(oSession: Session){
return Fiddler.WebFormats.JSON.JsonDecode(oSession.GetResponseBodyAsString()).JSONObject;
}
static function SetResponseJson(oSession: Session, j){
oSession.utilSetResponseBody(Fiddler.WebFormats.JSON.JsonEncode(j));
}
这对于修改Fiddler截获的JSON有效负载非常有用
我的问题是:
- 在FiddlerScript中是否有解析和修改XML的等效方法
- FiddlerScript使用JScript.NET,因此可以引用.NET程序集,包括
System.Xml
,其中包含XmlDocument
类
首先,在Fiddler>Tools>Fiddler Options>Extensions中,添加对System.Xml.dll
的引用:
接下来,在FiddlerScript的顶部,引用它:
import System.Xml;
此时,您可以创建XmlDocument
对象:
var x = new XmlDocument();
FiddlerScript使用JScript.NET,因此可以引用.NET程序集,包括
System.Xml
,其中包含XmlDocument
类
首先,在Fiddler>Tools>Fiddler Options>Extensions中,添加对System.Xml.dll
的引用:
接下来,在FiddlerScript的顶部,引用它:
import System.Xml;
此时,您可以创建XmlDocument
对象:
var x = new XmlDocument();
要从响应中的XML节点添加自定义列,需要使用FiddlerScript 加载System.xml引用后,可以在FiddlerScript(规则>自定义规则)中添加以下内容:
public static BindUIColumn("Request")
function testXmlColumn(oSession: Session){
if (oSession.oResponse != null && oSession.oResponse["Content-Type"] == "text/xml; charset=utf-8") {
var doc = new XmlDocument();
doc.LoadXml(oSession.GetResponseBodyAsString());
var xPathString = '/an/XPath/Expression';
var xmlNode = doc.DocumentElement.SelectSingleNode(xPathString);
return xmlNode.InnerText;
}
return "";
}
显然,您需要用XPath表达式替换
/an/XPath/Expression
。这是一种非常简单的语言来匹配一个节点。要在响应中从XML中的节点添加自定义列,需要使用FiddlerScript
加载System.xml引用后,可以在FiddlerScript(规则>自定义规则)中添加以下内容:
public static BindUIColumn("Request")
function testXmlColumn(oSession: Session){
if (oSession.oResponse != null && oSession.oResponse["Content-Type"] == "text/xml; charset=utf-8") {
var doc = new XmlDocument();
doc.LoadXml(oSession.GetResponseBodyAsString());
var xPathString = '/an/XPath/Expression';
var xmlNode = doc.DocumentElement.SelectSingleNode(xPathString);
return xmlNode.InnerText;
}
return "";
}
显然,您需要用XPath表达式替换/an/XPath/Expression
。这是一种相当简单的语言来匹配节点