C++ 如何编写一个好的程序来阻止不需要的/有害的网站

C++ 如何编写一个好的程序来阻止不需要的/有害的网站,c++,windows,network-programming,winsock,C++,Windows,Network Programming,Winsock,我打算编写一个简单的应用程序,用不需要的/恶意的网站阻止网络流量(HTTP和HTTPS) 假设: 一开始,逻辑将很简单。在浏览器中输入“黑名单”中的地址后,我的逻辑应在通信和发送我定义的站点内容下进行控制 稍后,我想添加一些逻辑,搜索web主体以查找不需要的/有害的单词 程序将用C语言编写++ 我不想使用现有的库(开源等)只从零开始编写。J只是想学习windows网络机制和层 不幸的是,在Windows中玩网络层时,我是个门外汉 我从哪里开始? 我应该在何处以及如何注入过滤逻辑?您应该查看。

我打算编写一个简单的应用程序,用不需要的/恶意的网站阻止网络流量(HTTP和HTTPS)

假设:

  • 一开始,逻辑将很简单。在浏览器中输入“黑名单”中的地址后,我的逻辑应在通信和发送我定义的站点内容下进行控制
  • 稍后,我想添加一些逻辑,搜索web主体以查找不需要的/有害的单词
  • 程序将用C语言编写++
  • 我不想使用现有的库(开源等)只从零开始编写。J只是想学习windows网络机制和层
不幸的是,在Windows中玩网络层时,我是个门外汉

我从哪里开始?
我应该在何处以及如何注入过滤逻辑?

您应该查看。此API使您能够以非常低的级别访问网络堆栈。

您至少有两个选项:

  • 构建您自己的代理以过滤流量和替换不需要的内容,并在浏览器设置中设置此代理
  • 创建NDIS筛选器驱动程序。你可以开始阅读NDIS。您也可以在WDK中找到

我更喜欢第一种选择。

我会在业余时间做一些类似的事情(好像我有过一样)。
这并不容易。
这在很大程度上取决于操作系统的版本。
但据我所知,它在Win7或更高版本上不起作用。有一个实现类似于您试图实现的目标。
对于Win7和更高版本,有过滤器驱动程序替代方案,但我测试了它,如果站点使用SSL,您将看不到任何东西。您必须以某种方式在驱动程序内部处理此问题,或者将流量重定向到中间人代理。我还没走那么远。
无论如何,这是M$的官方样品。您可能也对它感兴趣。

这是一个应用程序还是一个学习项目?如果你想要一个过滤器,你最好使用现有的库,或者找到一些开源的东西并修改它以适应。如果你想学习如何在C++中做Windows网络的东西,请继续。我只是想学习一点……我认为第二个选项更安全,因为它深入到各个层。非常感谢。但它也需要对网络数据包进行低级操作。它有可能在XP上工作吗?恐怕没有机会。。。