【发布时间】:2014-11-30 15:51:38
【问题描述】:
为什么我的 SOCKS 代理代码会抛出 SocketException: Malformed reply from SOCKS server?我尝试在 URLConnection 或其他中设置,但这不起作用。唯一有效的东西 - chilkat lib,但它是商业的。那么,例如,我如何通过 ASOCKS 代理发出 http 请求?也许存在一些免费的库?
例如,那个代码:
SocketAddress addr = new InetSocketAddress(proxy_ip, proxy_port);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
Socket socket = new Socket(proxy);
InetSocketAddress dest = new InetSocketAddress("google.com", 80);
try {
socket.connect(dest);
} catch (IOException ex) {
Logger.getLogger(CheckProxy.class.getName()).log(Level.SEVERE, null, ex);
}
抛出异常:
java.net.SocketException: Malformed reply from SOCKS server
at java.net.SocksSocketImpl.readSocksReply(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at proxychecker.CheckProxy.SocksCheck(CheckProxy.java:86)
第 86 行是“socket.connect(dest);”
【问题讨论】:
-
有两种方法,它们都有文档记录。
-
要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。
-
好的。我用了很多方法来解决这个问题。一般来说,我收到异常:“java.net.SocketException:来自 SOCKS 服务器的格式错误的回复”。异常不取决于实现,例如我已经尝试了上一条评论中的代码 - stackoverflow.com/questions/21742103/… .
-
这基本上是 HTTP call with Socks 4 proxy 的副本。另见this Java bug。
-
@prophet 这不是这里的情况。