1. 一键保存接口的响应内容和复制匹配规则到剪贴板(主要给 AutoResponder 做本地 mock 数据用)
2. 复制 url 的短路径等
1. save_response.js 里面的内容添加到 Fiddler 脚本里的 class Handlers 里面
2. 修改 Fiddler 响应 json 文件的保存路径
1. 会话右击选择 “Save Response Body” 保存响应文件和复制匹配规则到剪贴板
2. 会话右击选择 “Copy Uri For Yapi” 复制 短路径
//右键 request 弹出框添加子菜单-保存响应内容, save_response.js 内容放在 class Handlers 类里面并修改保存路径
public static ContextAction("Save Response Body")
function SaveResponseBody(oSessions: Session[]) {
if (null == oSessions || oSessions.Length > 1){
MessageBox.Show("Please choose an session."); return;
}
for (var x = 0; x < oSessions.Length; x++){
//MessageBox.Show(oSessions[x]);
//MessageBox.Show(oSessions[x].fullUrl);
//MessageBox.Show(oSessions[x].GetResponseBodyAsString());
var url = oSessions[x].url;
//MessageBox.Show(url);
//MessageBox.Show(a[0].replace(/\?/g,""));
var reg = /\/.*\?/;
var a = url.match(reg);
var b;
//MessageBox.Show(a);
if(a == null){
var reg = /\/.*/;
var a = url.match(reg);
var reg_rule = "METHOD:" + oSessions[x].RequestMethod + " REGEX:.*" + a[0];
var b = a[0].replace(/\//g,"_").replace(/\?/g,"").substr(1);
}else{
var reg_rule = "METHOD:" + oSessions[x].RequestMethod + " REGEX:.*" + a[0].replace(/\?/g,"");
var b = a[0].replace(/\//g,"_").replace(/\?/g,"").substr(1);
}
var filename = "D:\\work\\fiddler_session\\" + b + ".json";
//MessageBox.Show(reg_rule);
//var path_url = oSessions[x].fullUrl;
var resp_body = oSessions[x].GetResponseBodyAsString();
var is_json = resp_body.Contains('"');
//MessageBox.Show(resp_body);
if(is_json){
/*
//var filename = "E:/yinzhuoqun/fiddler_session/" + b;
oSessions[x].utilDecodeResponse();//消除保存的请求可能存在乱码的情况
var fso;
var file;
//var curDate = new Date();
fso = new ActiveXObject("Scripting.FileSystemObject");
// 文件保存路径,可自定义
// ForReading 1 只读的形式打开文件
// ForWriting 2 可以写入打开的文件,重新写入,不会接着写
// ForAppending 8 在文件的末尾接着写入
// true表示如果没有该文件,则创建该文件。
// 2 是覆盖,8 是追加
file = fso.OpenTextFile(filename, 2, true, true);
file.writeLine(oSessions[x].GetResponseBodyAsString());
file.close();
*/
// 使用FileStream和StreamWriter保存文件
var oBody = oSessions[x].GetResponseBodyAsString();
try {
var oFSO: System.IO.FileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create, System.IO.FileAccess.Write);
var oSW: System.IO.StreamWriter = new System.IO.StreamWriter(oFSO, System.Text.Encoding.UTF8);
oSW.Write(oBody);
oSW.Close();
oFSO.Close();
} catch(e) {
// 错误处理
FiddlerObject.log("Error writing to file: " + e.toString());
}
}else{
//oSessions[x].utilDecodeResponse();//消除保存的请求可能存在乱码的情况
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
var response_string = oSessions[x].GetResponseBodyAsString()
//MessageBox.Show(response_string);
var response_string_pars = request_pars_receive(response_string)
//FiddlerApplication.Log.LogString("yzq_log13: " + response_string_pars);
var response_json = Fiddler.WebFormats.JSON.JsonDecode(response_string_pars);
var response_string_changed = Fiddler.WebFormats.JSON.JsonEncode(response_json.JSONObject);
//文件保存路径,可自定义
file = fso.OpenTextFile(filename, 2, true, true);
file.writeLine(response_string_changed);
file.close();
}
// Clipboard.SetText 设置到剪贴板
Clipboard.SetText(reg_rule);
MessageBox.Show("1.json 文件已保存\n\n2.匹配规则已复制到剪贴板");
}
//MessageBox.Show(Session[].port);
}
// Copy Uri For Full API
public static ContextAction("Copy Uri For Full API")
function CopyUriForApi(oSessions: Session[]) {
for (var x = 0; x < oSessions.Length; x++){
//MessageBox.Show(oSessions[x]);
//MessageBox.Show(oSessions[x].fullUrl);
//MessageBox.Show(oSessions[x].GetResponseBodyAsString());
var url = oSessions[x].url;
var fullUrl = oSessions[x].fullUrl;
var reg = /\/.*\?/;
var a = url.match(reg);
//MessageBox.Show(a);
if(a !== null){
//MessageBox.Show(a[0].replace(/\?/g,""));
var regUrl = a[0].replace(/\?/g,"")
Clipboard.SetText(regUrl);
}else{
var reg = /\/.*/;
var a = url.match(reg);
Clipboard.SetText(a[0]);
}
}
}
// Copy Uri For Yapi
public static ContextAction("Copy Uri For Yapi")
function CopyUri(oSessions: Session[]) {
for (var x = 0; x < oSessions.Length; x++){
//MessageBox.Show(oSessions[x]);
//MessageBox.Show(oSessions[x].fullUrl);
//MessageBox.Show(oSessions[x].GetResponseBodyAsString());
var url = oSessions[x].url;
//MessageBox.Show(url);
var fullUrl = oSessions[x].fullUrl;
var reg = /\/.*\?/;
var a = url.match(reg);
//MessageBox.Show(a);
if(a !== null){
//MessageBox.Show(a[0].replace(/\?/g,""));
var regUrl = a[0].replace(/\?/g,"").replace(/.*api/g,"")
Clipboard.SetText(regUrl);
}else{
var reg = /\/.*/;
var a = url.match(reg);
Clipboard.SetText(a[0]);
}
}
}
// Copy Uri For Python Function
public static ContextAction("Copy Uri For Python Function")
function CopyUriForPython(oSessions: Session[]) {
for (var x = 0; x < oSessions.Length; x++){
//MessageBox.Show(oSessions[x]);
//MessageBox.Show(oSessions[x].fullUrl);
//MessageBox.Show(oSessions[x].GetResponseBodyAsString());
var url = oSessions[x].url;
var reg = /\/.*\?/;
var a = url.match(reg);
if(a !== null){
//MessageBox.Show(a[0].replace(/\?/g,""));
var reg_uri = a[0].replace(/\?/g,"").replace(/.*api/g,"").replace(/\//g,"_").replace(/^(\s|_)+|(\s|_)+$/g, '')
}else{
var reg = /\/.*/;
var a = url.match(reg);
var reg_uri = a[0].replace(/\?/g,"").replace(/.*api/g,"").replace(/\//g,"_").replace(/^(\s|_)+|(\s|_)+$/g, '')
}
//var path_url = oSessions[x].fullUrl;
Clipboard.SetText(reg_uri);
}
}