Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. public class TrafficEvent
  2. {
  3. public string Url { get; set; }
  4. public string ContentType { get; set; }
  5. public byte[] Data { get; set; }
  6. }
  7.  
  8. private List<TrafficEvent> trafficEvents;
  9. private Fiddler.SessionStateHandler responseHandler;
  10.  
  11. private void HandleBeforeResponse(Fiddler.Session session)
  12. {
  13. trafficEvents.Add(new TrafficEvent
  14. {
  15. Url = session.fullUrl,
  16. ContentType = session.oResponse.headers.Exists("Content-Type") ? session.oResponse.headers["Content-Type"] : "",
  17. Data = session.responseBodyBytes
  18. });
  19. }
  20.  
  21. public void StartFiddler()
  22. {
  23. trafficEvents = new List<TrafficEvent>();
  24. responseHandler = new Fiddler.SessionStateHandler(HandleBeforeResponse);
  25. Fiddler.FiddlerApplication.BeforeResponse += responseHandler;
  26.  
  27. Fiddler.WinINETCache.ClearFiles();
  28. Fiddler.CONFIG.IgnoreServerCertErrors = false;
  29.  
  30. int port = 8888;
  31. Fiddler.URLMonInterop.SetProxyInProcess("127.0.0.1:" + port.ToString(), "<-loopback>");
  32. Fiddler.FiddlerApplication.Startup(port, true, false);
  33. }
  34.  
  35. public List<TrafficEvent> StopFiddler()
  36. {
  37. Fiddler.FiddlerApplication.BeforeResponse -= responseHandler;
  38. Fiddler.FiddlerApplication.Shutdown();
  39. return trafficEvents;
  40. }
  41.  
  42. public async Task CaptureData(string url)
  43. {
  44. StartFiddler();
  45.  
  46. var proc = Process.Start("chrome.exe", url);
  47. proc.EnableRaisingEvents = true;
  48. await Task.Delay(30 * 1000);
  49. proc.Kill();
  50.  
  51. List<TrafficEvent> trafficEvents = StopFiddler();
  52.  
  53. foreach (TrafficEvent trafficEvent in trafficEvents)
  54. {
  55. // Store event in database
  56. }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement