通过 SOCKS 协议的 HTTP 请求

Posted

技术标签:

【中文标题】通过 SOCKS 协议的 HTTP 请求【英文标题】:HTTP request through SOCKS protocol 【发布时间】:2019-01-18 12:01:21 【问题描述】:

我正在尝试使用 Socks5 代理来发出 http 发布请求。代理的提供者已禁用 http 或其他东西。 我收到以下错误;

Exception in thread "main" java.net.SocketException: SOCKS: Connection not allowed by ruleset

我正在使用代码

    System.setProperty("java.net.socks.username", user);
    System.setProperty("java.net.socks.password", pass);

    Proxy prox = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(ip, 8000));
    URL url = new URL("https://www.myip.com");
    URLConnection con = url.openConnection(prox);

    con.setConnectTimeout(10000);
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

    String line;
    while ((line = in.readLine()) != null) 
        System.out.println(line);
    
    in.close();

我如何通过代理隧道(?)这个 http 请求?

PS 我知道这是可能的,因为 Firefox 中的某些扩展也允许我使用代理 我也试过这段代码,但它会导致同样的错误:https://pastebin.com/xt6evbm7

【问题讨论】:

【参考方案1】:

本系统不使用系统属性。

        Authenticator.setDefault(new Authenticator() 
            protected PasswordAuthentication getPasswordAuthentication() 
                return new PasswordAuthentication(user, pass.toCharArray());
            
        );

【讨论】:

以上是关于通过 SOCKS 协议的 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章

Socks5代理Socks5 Proxy

http代理和SOCKS5代理的区别是啥?

http,socks4,socks5代理的区别

Socks代理是什么意思?有什么用?

推送:啥是socks5代理ip

SOCKS5代理的介绍