"Сервер перенаправлен слишком много раз" при подключении через Tor в Java

Я пытаюсь прочитать сайт через Tor в Java-приложении с библиотекой silvertunnel-ng. Кажется, что соединение устанавливается (в журнале написано "Чтобы начать завершено!"), Но когда я пытаюсь прочитать сайт, я получаю

java.net.ProtocolException: Server redirected too many times (3)

Тестовый код такой:

String torCheck = "https://check.torproject.org/?lang=en_US";
URLStreamHandler handler = TorTools.buildTorHandler();
String result = "";
try {
    URL url = new URL(null, torCheck, handler);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
    System.setProperty("http.maxRedirects", "20");
    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    while (br.read() != -1)
        result += br.readLine() + "\n";
} catch (IOException e) {
    ...
} finally {
    ...
}
System.out.println(result);

Очевидно, что свойство httpRedirects не устанавливается, так как трассировка стека по-прежнему говорит "(3)", но я понятия не имею, почему.

Добавление CookieHandler было предложено здесь, но безрезультатно.

Обработчик Tor создается с помощью этого метода:

import org.silvertunnel_ng.netlib.adapter.url.NetlibURLStreamHandlerFactory;
import org.silvertunnel_ng.netlib.api.NetFactory;
import org.silvertunnel_ng.netlib.api.NetLayer;
import org.silvertunnel_ng.netlib.api.NetLayerIDs;

public static URLStreamHandler buildTorHandler() {
    NetLayer netLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TOR);
    netLayer.waitUntilReady();
    NetlibURLStreamHandlerFactory factory = new NetlibURLStreamHandlerFactory(false);
    factory.setNetLayerForHttpHttpsFtp(netLayer);
    return factory.createURLStreamHandler("http");
}

Любая идея будет высоко ценится.

0 ответов

Другие вопросы по тегам