我正在编写一个应用程序,该应用程序使用 REGEX 侦听特定数据包的端口。我可以看到原始的TCP流,但我想知道是否可以在没有任何数据包伪造库的情况下拦截和停止此流。
例:用户在有单词 P*RN 或"J*st** Bi*ber"的页面上导航,并自动丢失此特定连接。
如果我做不到,也许我会即时替换一些 HTML。
您可以实现代理服务器,以便从用户到互联网(和返回)的所有流量都将通过您的代理。可以使用 .NET 网络 API(无数据包伪造)实现代理。如果要断开连接,可以关闭 TCP 流,也可以发回错误响应。
此解决方案也存在一些问题:
- 您必须为要过滤的每个协议(SMTP,IMAP,POP3)实现特定的代理
- 您需要强制用户在连接到互联网时使用您的代理服务器(可以在网络级别配置)
- 它不适用于SSL(HTTPS),因为流量是加密的
编辑我认为没有办法使用 .NET API 拦截 TCP 流。但是,您可以转发 TCP 流(接受客户端连接,然后转发客户端和服务器之间的所有通信)。由于您接受了客户端 TCP 连接,因此也可以终止它。