¿Cómo interceptar llamadas HTTP desde una aplicación?
Pregunta
Quiero ver todas las solicitudes HTTP que salen de una aplicación determinada y cancelarlas si es necesario.
¿Hay alguna manera de hacer esto en C #?
Solución
Si puede tocar la configuración de proxy del sistema (que es utilizada por muchas aplicaciones) o, si la aplicación no tiene en cuenta esa configuración, toque la configuración de la aplicación para usar un proxy de su elección, puede crear un proxy HTTP que haría el trabajo por usted.
Si solo quieres crear un perfil, hay una herramienta preparada que se comporta de esta manera y es muy buena, Fiddler .
Si no, tendría que profundizar en la pila de la red e implementar algo como un sniffer / firewall, por ejemplo, utilizando WinPcap . Eso es mucho más difícil de hacer.
Otros consejos
Si estás trabajando con Windows, es posible conectar las llamadas de la API de WinInet y hacer lo que quieras con ellas.
FreeCap (o su versión comercial, WideCap) hace eso: le permite enviar tráfico TCP a través de un servidor proxy. Ese proxy podría hacer el filtrado (por ejemplo, Fiddler ).
Sé que esto trae más aplicaciones independientes al sistema, pero funciona.