将Fiddler请求实时记录到数据库

时间:2011-09-22 23:16:06

标签: fiddler

有没有办法记录所有正在进行数据库的请求,还是只能将快照记录到数据库?

1 个答案:

答案 0 :(得分:2)

以下示例依赖于OLEDB 4.0,它不适用于64位进程。您可以选择其他数据提供程序(例如SQLServer),也可以强制Fiddler以32位模式运行。

将以下内容添加到Rules文件中以创建新的菜单项。

// Log the currently selected sessions in the list to a database.
// Note: The DB must already exist and you must have permissions to write to it.
public static ToolsAction("Log Selected Sessions") 
function DoLogSessions(oSessions: Fiddler.Session[]){
if (null == oSessions || oSessions.Length < 1){
  MessageBox.Show("Please select some sessions first!");
  return;
}
var strMDB = "C:\\log.mdb";
var cnn = null;
var sdr = null;
var cmd = null;
try
{
  cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strMDB);
  cnn.Open();
  cmd = new OleDbCommand();
  cmd.Connection = cnn;

  for (var x = 0; x < oSessions.Length; x++){
    var strSQL = "INSERT into tblSessions ([ResponseCode],[URL]) Values (" + 
    oSessions[x].responseCode + ", '" + oSessions[x].url + "')";
    cmd.CommandText = strSQL;
    cmd.ExecuteNonQuery();
  }
}
catch (ex){
  MessageBox.Show(ex);
}
finally
{
  if (cnn != null ){
    cnn.Close();
  }
}
}

注意:要在Fiddler 2.3.9及更低版本中使用数据库对象,您需要将system.data添加到工具|中的参考列表中。提琴手选项|扩展|脚本。在2.3.9.1及更高版本中,此引用将自动发生。 然后,在规则脚本的顶部列出新导入:

import System.Data.OleDb;

请参阅FiddlerScript CookBook