我已经在java应用程序中连接到了一个socks5服务器,现在我想启动一个外部应用程序,并让它的所有连接都通过这个socks5服务器运行。外部应用程序本身不支持socks5。
任何输入都会很棒,让我抓狂了.
发布于 2010-09-10 01:28:01
我知道如何做的2个技巧是替换标准运行时库,或者使用类似的技巧来拦截OS网络调用,或者在内核中设置一组微调的防火墙规则。
这两种技术都是非常特定于操作系统的,并且无法使用java来实现。
最好的办法是运行现有的socks5包装器,并让该程序启动像socksify这样的外部应用程序。
我对这种方法有不同的体验,一些应用程序可以工作,另一些应用程序不能,并且从来没有发现其中的任何逻辑。
YMMV
另一种方法是在Java应用程序中使用tcpproxy (例如,使用Apache MINA ),并让应用程序连接到本地主机上的代理端口。同样,这只适用于某些服务。
发布于 2010-09-10 07:51:14
如果外部应用程序是用Java编写的,那么它就支持SOCKS。只要用-DsocksProxyHost=host和-DsocksProxyPort=port运行就行了。请参见1。
1:http://download.oracle.com/javase/6/docs/technotes/guides/net/properties.html“网络属性”。
https://stackoverflow.com/questions/3678876
复制相似问题