Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TrafficEvent
- {
- public string Url { get; set; }
- public string ContentType { get; set; }
- public byte[] Data { get; set; }
- }
- private List<TrafficEvent> trafficEvents;
- private Fiddler.SessionStateHandler responseHandler;
- private void HandleBeforeResponse(Fiddler.Session session)
- {
- trafficEvents.Add(new TrafficEvent
- {
- Url = session.fullUrl,
- ContentType = session.oResponse.headers.Exists("Content-Type") ? session.oResponse.headers["Content-Type"] : "",
- Data = session.responseBodyBytes
- });
- }
- public void StartFiddler()
- {
- trafficEvents = new List<TrafficEvent>();
- responseHandler = new Fiddler.SessionStateHandler(HandleBeforeResponse);
- Fiddler.FiddlerApplication.BeforeResponse += responseHandler;
- Fiddler.WinINETCache.ClearFiles();
- Fiddler.CONFIG.IgnoreServerCertErrors = false;
- int port = 8888;
- Fiddler.URLMonInterop.SetProxyInProcess("127.0.0.1:" + port.ToString(), "<-loopback>");
- Fiddler.FiddlerApplication.Startup(port, true, false);
- }
- public List<TrafficEvent> StopFiddler()
- {
- Fiddler.FiddlerApplication.BeforeResponse -= responseHandler;
- Fiddler.FiddlerApplication.Shutdown();
- return trafficEvents;
- }
- public async Task CaptureData(string url)
- {
- StartFiddler();
- var proc = Process.Start("chrome.exe", url);
- proc.EnableRaisingEvents = true;
- await Task.Delay(30 * 1000);
- proc.Kill();
- List<TrafficEvent> trafficEvents = StopFiddler();
- foreach (TrafficEvent trafficEvent in trafficEvents)
- {
- // Store event in database
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement