Java поддерживает настройку прокси-сервера Socks через зарегистрированный java.net.Authenticator
или через настройки, как описано в Сетевые свойства :
Настройки поддержки протокола SOCKS
Имя пользователя и пароль SOCKS
приобрел следующим образом. Первый,
если приложение зарегистрировало
java.net.Authenticator
по умолчанию
экземпляр, то это будет запрошено
с протоколом, установленным в строку
«SOCKS5», и подсказка установлена в
строка "SOCKS аутентификация". Если
аутентификатор не возвращает
имя пользователя / пароль или если нет
аутентификатор зарегистрирован, то
система проверяет пользовательские настройки
"java.net.socks.username
" и
"java.net.socks.password
". Если эти
предпочтения не существуют, то
системное свойство "user.name
" проверено
для имени пользователя. В этом случае нет
пароль указан.
SocksProxyHost
socksProxyPort (по умолчанию: 1080)
Указывает имя прокси-сервера SOCKS и номер порта, который будет использоваться уровнем протокола SOCKS. Если указан socksProxyHost, то все сокеты TCP будут использовать прокси-сервер SOCKS для установления или принятия соединения. Прокси-сервер SOCKS может быть сервером SOCKS v4 или v5, и он должен разрешать неаутентифицированные соединения.
Для примеров кода клиента вы можете проверить этот ответ в Переполнение стека.
РЕДАКТИРОВАТЬ: обновление ответа в соответствии с комментарием
Побочным эффектом поддержки SOCKS в JDK является то, что вся ваша JVM будет проходить через один и тот же прокси-сервер SOCKS. Так что это может не сработать для вас.
Authenticator
влияет на всю аутентификацию в вашей JVM (HTTP-аутентификация, Proxy Auth). Опять же, это может не сработать для вас.
В вашем случае возможным решением будет использование HttpClient из HttpComponents (наследник устаревшего Commons HTTP Client 3.x ). Посмотрите примеров и особенно запрос через прокси и Проверка подлинности прокси примеры.