Java:使用Silvertunnel Netlib的Tor HTTP请求

时间:2013-02-28 14:07:16

标签: java tor silvertunnel

我正在尝试使用Silvertunnel Netlib(https://silvertunnel.org/doc/netlib.html)通过Tor网络在Java应用程序中发出匿名HTTP请求。我正在使用示例代码,该代码在通过TCPIP发出请求时有效,但在使用TOR设置时,它以以下异常结束(在尝试连接大约10分钟后):

java.io.IOException: Tor.connect: unable to connect to null:80 after 11 full retries with 5 sub retries
    at org.silvertunnel.netlib.layer.tor.clientimpl.Tor.connect(Tor.java:281)
    at org.silvertunnel.netlib.layer.tor.TorNetLayer.createNetSocket(TorNetLayer.java:113)
    at org.silvertunnel.netlib.util.HttpUtil.get(HttpUtil.java:121)
    at FlightBot.main(FlightBot.java:48)

以下是我正在使用的代码:

NetLayer lowerNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TOR);

// wait until TOR is ready (optional) - this is only relevant for anonymous communication:
lowerNetLayer.waitUntilReady();

// prepare parameters (http default port: 80)
TcpipNetAddress httpServerNetAddress = new TcpipNetAddress("httptest.silvertunnel.org", 80);
String pathOnHttpServer = "/httptest/bigtest.jsp?id=example";
long timeoutInMs = 5000;

// do the HTTP request and wait for the response
byte[] responseBody = HttpUtil.getInstance().get(lowerNetLayer, httpServerNetAddress, pathOnHttpServer, timeoutInMs);

// print out the response
System.out.println(new String(responseBody));

我做错了还是Tor网络目前无法使用?

要清楚,它在使用时有效:

NetLayer lowerNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP)

在第一行。

1 个答案:

答案 0 :(得分:4)

问题是底层的Tor实现。 Tor网络不断发展,并非所有变更都已在Silvertunnel Netlib中实施。 由于个人原因,silvertunnel项目已经停止。 我创建了一个新版本:SilverTunnel-NG,它是原始项目的一个分支。

现在与Tor网络的连接再次正常工作。

希望这对你来说还不晚:)