You might want to use a utility such as Wireshark (graphic, but not scripted from C #, AFAIK). Wireshare uses a library called WinPcap that actually monitors TCP streams on the computer. Decoding of HTTP headers should be done in your application (this is what wirehark / tcpdump / windump can do). You will need to use PInvoke to invoke the WinPcap library. You can find library wrappers by doing an online search for "WinPcap PInvoke".
This question sounds very similar to the following:
Is there any way in .NET for programmatically listening for HTTP traffic?
In addition, Capturing HTTP requests can help.
source share