Java - 如何使用凭据设置 socks 代理

Posted

技术标签:

【中文标题】Java - 如何使用凭据设置 socks 代理【英文标题】:Java - how to setup socks proxy with credentials 【发布时间】:2018-12-22 10:06:08 【问题描述】:

您好亲爱的社区成员, 我是一个初学者,我正在尝试使用凭据设置 socks 代理,所以我使用了以下代码。但它不起作用。

proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("myhost.com", 81));
Authenticator.setDefault(new ProxyAuthenticator("aaa","aaa"));
conn = (HttpURLConnection) url.openConnection(proxy);

我遇到了错误

java.net.SocketException: SOCKS : authentication failed

我什至尝试了以下代码,但它也不起作用。

proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("myhost.com", 81));
System.setProperty("java.net.socks.username","aaa");
System.setProperty("java.net.socks.password","aaa");

我尝试将它们结合起来,我尝试使用System.setProperty("socksProxyUser","aaa")System.setProperty("socksProxyPassword","aaa"),但我仍然遇到同样的错误。谁能帮帮我。

提前致谢

【问题讨论】:

【参考方案1】:

尝试进行身份验证时尝试此操作。

public Authenticator getAuth(String user, String password) 
    new Authenticator() 
        public PasswordAuthentication getPasswordAuthentication() 
            return (new PasswordAuthentication(user, password.toCharArray()));
        
    ;

然后,正常初始化您的代理,就像您正在做的那样,除了身份验证(您收到错误的原因)之外,请执行此操作。

Authenticator.setDefault(getAuth(username, password));

【讨论】:

以上是关于Java - 如何使用凭据设置 socks 代理的主要内容,如果未能解决你的问题,请参考以下文章

如何为chrome浏览器设置socks5代理?

如何为chrome浏览器设置socks5代理

如何为 SOCKS 代理设置 nonProxyHosts?

如何用RouterOS封堵HTTP、SOCKS代理

通过身份验证连接并保持与 socks5 代理服务器的连接

在windows下如何为特定进程设置指定代理?