【发布时间】:2010-09-09 17:12:54
【问题描述】:
我已在我的 java 应用程序中连接到 socks5 服务器,现在我想启动一个外部应用程序并让它的所有连接都通过 socks5 服务器运行。外部应用程序本身不支持 socks5。
任何输入都会很棒,在这里挠头..
【问题讨论】:
标签: java sockets external socks
我已在我的 java 应用程序中连接到 socks5 服务器,现在我想启动一个外部应用程序并让它的所有连接都通过 socks5 服务器运行。外部应用程序本身不支持 socks5。
任何输入都会很棒,在这里挠头..
【问题讨论】:
标签: java sockets external socks
我知道如何做到这一点的 2 个技巧是替换标准运行时库或类似的技巧来拦截 OS 网络调用或在内核中设置一组微调的防火墙规则。
这两种技术都非常特定于操作系统,无法使用 java 来实现。
最好的办法是运行现有的 socks5 包装器并让该程序启动外部应用程序,例如 socksify。
我对这种方法的体验参差不齐,有些应用程序可以工作,有些则不能,而且从未发现其中的任何逻辑。
YMMV
另一种方法是在 Java 应用程序中播放 tcpproxy(例如,使用 Apache MINA 的东西)并让应用程序连接到 localhost 上的代理端口。同样,这仅适用于某些服务。
【讨论】:
如果外部应用程序是用 Java 编写的,它确实支持 SOCKS。只需使用 -DsocksProxyHost=host 和 -DsocksProxyPort=port 运行它。见[1]。
[1]:http://download.oracle.com/javase/6/docs/technotes/guides/net/properties.html“网络属性”。
【讨论】: