Build a Custom Importer or Exporter
Sample Extension
Create a Fiddler Classic extension project.
-
Modify the default class1.cs (or create a new class) in your project as follows:
using System; using System.IO; using System.Text; using System.Windows.Forms; using Fiddler; using System.Diagnostics; using System.Reflection; [assembly: AssemblyVersion("1.0.0.0")] [assembly: Fiddler.RequiredVersion("2.4.0.0")] [ProfferFormat("TAB-Separated Values", "Session List in Tab-Delimited Format")] [ProfferFormat("Comma-Separated Values", "Session List in Comma-Delimited Format; import into Excel or other tools")] public class CSVTranscoder: ISessionExporter // Ensure class is public, or Fiddler Classic won't see it! { public bool ExportSessions(string sFormat, Session[] oSessions, Dictionary<string, object> dictOptions, EventHandler<ProgressCallbackEventArgs> evtProgressNotifications) { bool bResult = false; string chSplit; // Determine if we already have a filename from the dictOptions collection string sFilename = null; if (null != dictOptions && dictOptions.ContainsKey("Filename")) { sFilename = dictOptions["Filename"] as string; } if (sFormat == "Comma-Separated Values") { chSplit = ","; if (string.IsNullOrEmpty(sFilename)) sFilename = Fiddler.Utilities.ObtainSaveFilename("Export As " + sFormat, "CSV Files (*.csv)|*.csv"); } else { chSplit = "\t"; if (string.IsNullOrEmpty(sFilename)) sFilename = Fiddler.Utilities.ObtainSaveFilename("Export As " + sFormat, "TSV Files (*.tsv)|*.tsv"); } if (String.IsNullOrEmpty(sFilename)) return false; try { StreamWriter swOutput = new StreamWriter(sFilename, false, Encoding.UTF8); int iCount = 0; int iMax = oSessions.Length; #region WriteColHeaders bool bFirstCol = true; foreach (ColumnHeader oLVCol in FiddlerApplication.UI.lvSessions.Columns) { if (!bFirstCol) { swOutput.Write(chSplit); } else { bFirstCol = false; } swOutput.Write(oLVCol.Text.Replace(chSplit, "")); } swOutput.WriteLine(); #endregion WriteColHeaders #region WriteEachSession foreach (Session oS in oSessions) { iCount++; if (null != oS.ViewItem) { bFirstCol = true; ListViewItem oLVI = (oS.ViewItem as ListViewItem); if (null == oLVI) continue; foreach (ListViewItem.ListViewSubItem oLVC in oLVI.SubItems) { if (!bFirstCol) { swOutput.Write(chSplit); } else { bFirstCol = false; } swOutput.Write(oLVC.Text.Replace(chSplit, "")); } swOutput.WriteLine(); } if (null != evtProgressNotifications) { evtProgressNotifications(null, new ProgressCallbackEventArgs(, )); ProgressCallbackEventArgs PCEA = new ProgressCallbackEventArgs((iCount/(float)iMax), "wrote " + iCount.ToString() + " records."); evtProgressNotifications(null, PCEA); if (PCEA.Cancel) { swOutput.Close(); return false; } } } #endregion WriteEachSession swOutput.Close(); bResult = true; } catch (Exception eX) { MessageBox.Show(eX.Message, "Failed to export"); bResult = false; } } return bResult; } public void Dispose() { } }
See Also
Build extension assemblies to run in both Fiddler Classic versions 2 and 4