Nano Hash - криптовалюты, майнинг, программирование

Как остановить Java от предварительного разрешения моего хоста при просмотре через прокси (Tor)?

В настоящее время я разрабатываю java-приложение, которое использует прокси-сервер tor, работающий на локальном хосте, для получения скрипта, отображающего IP-адрес запрашивающего.

Хотелось бы, чтобы работу делал в основном tor proxy, чтобы он работал в максимально "естественном" состоянии. Мой текущий код выглядит примерно так:

SocketAddress TorProxyAddress = new InetSocketAddress("127.0.0.1", 9050);
Proxy TorProxy = new Proxy(Proxy.Type.SOCKS, TorProxyAddress);
URL url = new URL("https://myhost.com/ip2.php");
URLConnection conn = url.openConnection(TorProxy);
// ... reading the input stream etc

Проблема, с которой я сейчас сталкиваюсь, заключается в следующем предупреждающем сообщении из консоли прокси-сервера tor:

[warn] Your application (using socks5 to port 443) is giving Tor only an IP address. Applications that do DNS resolves themselves may leak information. Consider using Socks4A (e.g. via privoxy or socat) instead. For more information, please see https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS.'

Для меня это выглядит так, как будто Java разрешает IP-адрес myhost.com без моего ведома. Как уже упоминалось, мне нужно запустить прокси-сервер tor в возможно идеальной среде.

Есть ли способ предотвратить предварительное разрешение хоста java и просто передать весь URL-адрес прокси-серверу tor?

Большое спасибо за каждый ответ!

28.04.2013

  • Я где-то читал, что URL() всегда предварительно разрешает ваш хост. Не используйте URL или URLConnection. 29.04.2013
  • Вы имеете в виду, что я должен использовать необработанный интерфейс сокета или мне не хватает некоторых альтернативных классов, которые я мог бы использовать? 29.04.2013
  • Попробуйте apache http comps hc.apache.org 30.04.2013

Ответы:


1

Я сам нашел простой ответ, это так же просто, как прочитать API для InetSocketAddress

Чтобы остановить Java от предварительного разрешения хоста, просто используйте:

InetSocketAddress unresolvedAdr = InetSocketAddress.createUnresolved(host, port);

Если вам интересно, вот мое полное решение (в моем особом случае с ssl-вещами):

TorProxyAddress = new InetSocketAddress("127.0.0.1", 9050);
Proxy TorProxy = new Proxy(Proxy.Type.SOCKS, TorProxyAddress);
Socket underlying = new Socket(TorProxy);

InetSocketAddress unresolvedAdr = InetSocketAddress.createUnresolved(host, port);
underlying.connect(unresolvedAdr);

SSLSocket socket = (SSLSocket) SockFactory.createSocket(underlying, "127.0.0.1", 9050, true);
// ... Read from / write to Socket
11.05.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..