我想为 Windows 开发一个基于主机的防火墙,主要是为了过滤以 HTTPS 开头的 URL!我知道 Microsoft 将 WFP 用作替代已弃用的旧技术,例如防火墙/过滤器挂钩、NDIS、TDI、WSA 和 Winsock 2 (LSP)。但 WFP 目前不支持带有主机名或 URL 的过滤器。此外,WFP 仅支持 C/C++,并且在 .NET 中没有可用的 C# 包装器。
我尝试了@basil 的WinDivert演示应用程序 webfilter,它在 TCP 端口 80(默认 HTTP)上解析 IPv4 出站流量中的数据包,重置服务器连接(TCP RST)并向客户端(浏览器)发送 HTML 响应,然后是 TCP FIN如果 URL 匹配文本文件中作为命令行参数给出的任何列入黑名单的条目,否则重新注入它们...
handle = WinDivertOpen(
"outbound && " // Outbound traffic only
"ip && " // Only IPv4 supported
"tcp.DstPort == 80 && " // HTTP (port 80) only
"tcp.PayloadLength > 0", // TCP data packets only
WINDIVERT_LAYER_NETWORK, priority, 0 …Run Code Online (Sandbox Code Playgroud)