C# 如何使用c处理来自浏览器的http请求

C# 如何使用c处理来自浏览器的http请求,c#,C#,我有一个用c.Net开发的windows应用程序,它被用作网络的网站拦截器。我通过修改主机文件来实现这一点。当URL像www.yahoo.com一样被阻止时,它工作得很好。现在我的要求是我必须根据关键字阻止URL。例如,当用户在浏览器中键入yahoo时,我应该验证关键字并阻止相应的网站。现在我如何跟踪用户在浏览器中键入的网站,并根据url阻止或允许用户访问特定网站。如果关键字存在,我不应该允许用户查看页面。如何做到这一点?有人能帮我做到这一点吗?有很多代码示例在那里,它将作为代理,例如。然而,我

我有一个用c.Net开发的windows应用程序,它被用作网络的网站拦截器。我通过修改主机文件来实现这一点。当URL像www.yahoo.com一样被阻止时,它工作得很好。现在我的要求是我必须根据关键字阻止URL。例如,当用户在浏览器中键入yahoo时,我应该验证关键字并阻止相应的网站。现在我如何跟踪用户在浏览器中键入的网站,并根据url阻止或允许用户访问特定网站。如果关键字存在,我不应该允许用户查看页面。如何做到这一点?有人能帮我做到这一点吗?

有很多代码示例在那里,它将作为代理,例如。然而,我强烈建议你按照别人给你的建议,使用现有的应用程序

构建一个不会干扰当今复杂web应用程序的代理并非易事。您还需要小心基于关键字的阻止-我所开发的web应用程序由于代理程序执行此操作而以惊人的方式失败,并且拒绝对重要javascript文件的请求(通常是由于缩小或压缩导致我们的应用程序无用)


也考虑到你的代理将无法检查SSL流量,而这些服务一直在增加你自己的证书作为中间人的作用。

你应该使用一个免费的或付费的产品来做它。重新发明轮子没有多大意义-在我键入此评论的时间内,我脑海中有六种方法可以绕过您的计划。您必须为此重新设计方法-主机文件确实不是正确的方法,并且,正如您所发现的,无法满足您的新需求。在纯C语言中,您可能无法做到这一点,因为您可能需要连接到运行在Firefox上的其他应用程序,等等。除了用C编写它的乐趣外,这是毫无意义的,因为这是在较低的网络级别上进行的,用于拦截地址和检查对某个关键字的请求,而这正是透明web代理为您所做的。您必须从发生拦截的网络堆栈的角度来考虑。这不是一项不可能完成的任务,但正如汤姆·里特(Tom Ritter)在评论中指出的那样,为什么要这么做呢。