C++ 如何编写一个好的程序来阻止不需要的/有害的网站
我打算编写一个简单的应用程序,用不需要的/恶意的网站阻止网络流量(HTTP和HTTPS) 假设:C++ 如何编写一个好的程序来阻止不需要的/有害的网站,c++,windows,network-programming,winsock,C++,Windows,Network Programming,Winsock,我打算编写一个简单的应用程序,用不需要的/恶意的网站阻止网络流量(HTTP和HTTPS) 假设: 一开始,逻辑将很简单。在浏览器中输入“黑名单”中的地址后,我的逻辑应在通信和发送我定义的站点内容下进行控制 稍后,我想添加一些逻辑,搜索web主体以查找不需要的/有害的单词 程序将用C语言编写++ 我不想使用现有的库(开源等)只从零开始编写。J只是想学习windows网络机制和层 不幸的是,在Windows中玩网络层时,我是个门外汉 我从哪里开始? 我应该在何处以及如何注入过滤逻辑?您应该查看。
- 一开始,逻辑将很简单。在浏览器中输入“黑名单”中的地址后,我的逻辑应在通信和发送我定义的站点内容下进行控制
- 稍后,我想添加一些逻辑,搜索web主体以查找不需要的/有害的单词
- 程序将用C语言编写++
- 我不想使用现有的库(开源等)只从零开始编写。J只是想学习windows网络机制和层
我应该在何处以及如何注入过滤逻辑?您应该查看。此API使您能够以非常低的级别访问网络堆栈。您至少有两个选项:
- 构建您自己的代理以过滤流量和替换不需要的内容,并在浏览器设置中设置此代理
- 创建NDIS筛选器驱动程序。你可以开始阅读NDIS。您也可以在WDK中找到
我更喜欢第一种选择。我会在业余时间做一些类似的事情(好像我有过一样)。
这并不容易。
这在很大程度上取决于操作系统的版本。
但据我所知,它在Win7或更高版本上不起作用。有一个实现类似于您试图实现的目标。
对于Win7和更高版本,有过滤器驱动程序替代方案,但我测试了它,如果站点使用SSL,您将看不到任何东西。您必须以某种方式在驱动程序内部处理此问题,或者将流量重定向到中间人代理。我还没走那么远。
无论如何,这是M$的官方样品。您可能也对它感兴趣。这是一个应用程序还是一个学习项目?如果你想要一个过滤器,你最好使用现有的库,或者找到一些开源的东西并修改它以适应。如果你想学习如何在C++中做Windows网络的东西,请继续。我只是想学习一点……我认为第二个选项更安全,因为它深入到各个层。非常感谢。但它也需要对网络数据包进行低级操作。它有可能在XP上工作吗?恐怕没有机会。。。