2009-11-27 168 views
1

我有一个在c#.Net中开发的windows应用程序,它被用作网络的网站拦截器。我通过修改hosts文件来完成这项工作。它在URL阻止像“www.yahoo.com”。现在我的要求是我必须根据keywords.ie阻止网址,当用户只需在浏览器中键入“雅虎”,我应该验证关键字并阻止相应的网站。现在如何跟踪用户在浏览器中键入的网站,并根据url来阻止或允许用户访问特定网站。如果关键字存在,我不应该允许用户查看页面。如何操作?是否可以一个帮我做到这一点?如何处理来自浏览器的http请求使用c#

+2

您应该使用免费或付费产品之一来执行此操作。重新发明轮子没什么意义 - 在我输入此评论的时候,有六种方法可以让我在脑海中解决您的计划。 – 2009-11-27 14:01:53

+1

您必须为此重新设计您的方法 - 主机文件实际上并不是这样做的正确方法,正如您所发现的那样,它不适用于您的新需求。您可能无法直接在C#中执行此操作,因为您可能需要挂接到其他正在运行的应用程序(IE,Firefox等)。 – Joe 2009-11-27 14:04:37

+0

除了在C#中编写它的乐趣之外,它将毫无意义,因为它是毫无意义的在较低的网络级别完成拦截地址并检查某个关键字的请求,这是透明的Web代理为您做的。您将不得不考虑拦截发生的网络堆栈。这不是一项不可能完成的任务,但为何如Tom Ritter在评论中指出的那样。 – t0mm13b 2009-11-27 14:08:33

回答

0

有很多代码样本可以作为代理(例如,http://code.cheesydesign.com/?p=393),但是我强烈建议您遵循已给出的评论以及现有应用程序的建议。

建立一个不会干扰当今复杂网络应用程序的代理并不是微不足道的。您还需要小心基于关键字进行阻止 - 由于代理执行此操作,并且拒绝重要JavaScript文件(通常由于缩小或压缩)导致我们的应用无用,因此我所从事的Web应用失败了。

另外考虑到您的代理将无法检查SSL流量(这种情况一直在增加),而无需提供您自己的证书作为中间人。

相关问题