Java中的http代理身份验证
我试图在Java应用程序中支持经过身份验证的代理。我的理解是java。网代理类不支持身份验证,您需要自己处理身份验证
我已经创建了java的一个子类。网代理类,它接受两个附加参数,用户名和密码
实现HTTP代理身份验证非常简单,getHttpProxyAuthenticationHeader方法只返回base64编码的身份验证信息,以传递给HttpUrlConnection或类似方法
不过,我在袜子代理方面遇到了麻烦。我找不到任何关于向Socks服务器发送身份验证的文档。我不确定是否需要在类中使用authenticateSocksProxy(OutputStream stream)等方法实现SOCKS身份验证协议,然后调用
authedProxy.authenticateSocksProxy(outputstream);
在使用插座之前
outputstream.writeBytes(myData.getBytes());
另一个选项是返回身份验证数据的字节[],然后手动写入数据,而不是类写入身份验证数据
我不认为java。网验证器,或系统。setProperty方法将有任何用处,因为我的实现需要在每个连接的基础上工作,并且是线程安全的
非常感谢您的帮助
# 1 楼答案
取自JSocks项目来源: https://code.google.com/p/jsocks-mirror/source/browse/trunk/src/java/net/sourceforge/jsocks/socks/UserPasswordAuthentication.java
我认为它足够清晰,可以理解整个过程: