Java:使用 Silvertunnel Netlib 的 Tor HTTP 请求

标签 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)

在第一行。

最佳答案

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

现在与 Tor 网络的连接又恢复了。

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

关于Java:使用 Silvertunnel Netlib 的 Tor HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137527/

相关文章:

php - 如何从 php curl 访问洋葱网站?

java - 连接到 TOR Java

java - 带有 postgresql 的串行列上的 Spring Data JPA "null value in column xxx violates not-null constraint"

java - 如何使用 `adb` 仅为一个用户安装开发应用程序?

ssl - 尝试了解 Tor 及其与 SSL 的关系

php - Tor 网络爬虫

java - Silvertunnel异常: java. lang.NoSuchMethodError : org. bouncycaSTLe.asn1.ASN1InputStream.readObject()Lorg/bouncycaSTLe/asn1/DERObject;

java - 为什么我们在单独的文件中声明公共(public)类?

java - 编辑 XML 样式表会更改 Android 中的按钮