如何捕获URL或HTTP请求并使用C#重定向它

时间:2011-05-10 00:26:35

标签: c# http proxy httpwebrequest

大家好,感谢您的阅读。

对于质量保证方法,我想设置一个应用程序,可以处理和管理从特定运行的应用程序通过互联网发送的请求和数据。

更具体地说,我希望能够通过“代理应用程序”重定向几个网址而不是每个网址,因此如果我有一个请求http://www.google.comhttp://www.google.com/search的应用程序,我想只将第二个poiting重定向到相对路径/搜索。

我希望你明白这个主意。 你们有什么想法可以轻松实现,也许现有的框架可以实现这一目标吗?如果你给我一些代码,我会感激不尽。

提前致谢。

更新:事实上,我需要构建一个应用程序,它可以以某种方式“附加”并劫持已经开发的应用程序和数据服务器之间的现有连接,以便它可以监听和修改通过此连接发送的数据。我知道很难用c#这样的高级语言来完成,但我只是想确保

1 个答案:

答案 0 :(得分:2)

我不确定我是否正确关注您...您想将某些网址重定向到“代理应用程序”???不是代理服务器?

如果要重定向到代理服务器,则可以执行以下操作:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com/search/");
request.proxy = new WebProxy("http://proxyurl");
HttpWebResponse myWebResponse=(HttpWebResponse)myWebRequest.GetResponse();

或没有代理服务器:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com/");
HttpWebResponse myWebResponse=(HttpWebResponse)myWebRequest.GetResponse();

你可以让“代理申请”服务于网址,但这是一个完全不同的故事。在这种情况下,您需要在应用程序和其他应用程序之间进行某种通信方法。您的应用可以通过TCP via WCFvia Pipes连接到其他应用。您将URL发送到另一个应用程序并为其提供服务。

然后是另一部分:代理应用程序是否将页面提供给您的请求处理应用程序,还是将其提供给客户端?那么客户端如何与您的请求处理应用程序进行通信?

<强>更新 听起来你正在寻找类似Fiddler的东西:

  

Fiddler使您能够检查所有HTTP流量,设置断点,并“输入”传入或传出数据。 Fiddler比NetMon或其他网络调试器更易于使用,因为它只暴露HTTP流量,并且以用户友好的格式进行。

一般情况下,您可能需要查看traffic interception