我想构建一个通过我的应用程序路由所有网络流量(不仅仅是 HTTP)的应用程序。基本上,我想要的是提供给我的应用程序的所有流量(它们永远不应该达到实际目标,我的应用程序应该处理这个),然后将其转发到服务器;输入也是如此,只是颠倒了(服务器->应用程序->想要答案的程序)。是否有任何库(或类似的东西)可以使创建应用程序更容易?我正在寻找可以从 Python 或 Java 中使用的东西,但如果真的需要,我可以学习另一种语言。
问问题
2614 次
4 回答
4
您要使用的是一个数据包捕获库,您可以使用e pcap或其在python或 java 中的实现或绑定。
然而,像这样的事情通常是在理想情况下使用 C 在低级别实现的,这是一个教程教程
编辑:根据您的评论,您肯定想看看 netfilter hooks
当您使用它时,您可能还想看看netfilter hooks
于 2012-01-10T18:30:57.257 回答
1
如果您只想路由 tcp 流量,使用线程和套接字实际上很简单。对于要访问的每台服务器,您应该在不同的端口上进行侦听。在 Java 或 Python 中,您必须为要侦听的每个端口创建一个“套接字”。
对于每个新连接,您都会创建一个到服务器的新连接并创建两个新线程来处理该连接,一个线程将从客户端读取所有内容并将其发送到服务器。另一个将从服务器读取所有内容并将其发送到客户端。当连接的任何一端关闭它时,您关闭另一端并结束两个线程。
于 2012-01-10T18:35:03.887 回答
1
看看Jpcap。
于 2012-01-10T18:17:32.483 回答
0
如果您在 Linux 上执行此操作,您应该考虑使用 TUN/TAP 设备,这是一个非常方便的工具,用于拦截网络流量以进行自定义处理。如果您不熟悉,这里有一个基本教程 http://backreference.org/2010/03/26/tuntap-interface-tutorial/
于 2012-01-10T19:25:26.550 回答