Why does my SOCKS proxy code throw SocketException: Malformed reply from SOCKS server?

Pter picture Pter · Nov 30, 2014 · Viewed 22.8k times · Source

Why does my SOCKS proxy code throw SocketException: Malformed reply from SOCKS server? I've tried to set in URLConnection or other, but this doesn't work. Only thing that worked - chilkat lib, but it's commercial. So, how I, for example, make http request through a ASOCKS proxy? Maybe exist some free lib for that?

For example, that code:

    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);
    }

Throws exception:

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)

Where line 86 is "socket.connect(dest);"

Answer

user207421 picture user207421 · Dec 1, 2014
SocketException: Malformed reply from SOCKS server

That indicates that you don't have a SOCKS proxy at all. Possibly it is an HTTP proxy.

And note that you asked the wrong question. Your code was correct, it was your premiss that was wrong.