Apache HTTP 客户端 socks 代理

Posted

技术标签:

【中文标题】Apache HTTP 客户端 socks 代理【英文标题】:Apache HTTP Client socks proxy 【发布时间】:2012-06-04 18:12:52 【问题描述】:

我目前正在从事一个 Web 请求项目,并且正在使用 Apache Http 客户端库。我尝试连接到服务器(例如http://www.google.com),并使用经过 Mozilla firefox 测试的工作 Socks v4/5,但问题是我从未得到响应。只有不同的错误...

这是一个代码sn-p:

//HttpClient
DefaultHttpClient http = new DefaultHttpClient();
//A class defined by me
Proxy proxy = bla bla;
HttpHost host = new HttpHost(proxy.getIP(), proxy.getPort());
if (proxy.getUsername() != null) 
   http.getCredentialsProvider().setCredentials(
                            new AuthScope(proxy.getIP(), proxy.getPort()),
                            new UsernamePasswordCredentials(proxy.getUsername(), proxy.getPassword()));

http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, host);

谁能告诉通过 SOCKS 代理启动通信的正确方法?谢谢!

注意:上面的代码与 HTTP 代理完美配合。

【问题讨论】:

java.net.SocketException:软件导致连接中止:recv 失败或服务器无法访问等。但是如果我将代理与 mozilla 一起使用,它就可以工作。 【参考方案1】:

Http 代理和 socks 代理有非常不同的协议(http://en.wikipedia.org/wiki/SOCKS#Comparison)。 对于您的问题: 您可以通过本机 Java 套接字 (How can I configure HTTPClient to authenticate against a SOCKS proxy?) 或通过 DefaultClientConnectionOperator 创建您自己的实现,这是很好的指南 (http://4devops.blogspot.com/2011/10/httphttps-over-socks-proxy-with-java.html)

【讨论】:

以上是关于Apache HTTP 客户端 socks 代理的主要内容,如果未能解决你的问题,请参考以下文章

socks5代理的工作原理

为啥 HTTP/HTTPS 代理和 Socks 代理可以在一个端口上工作?

http,socks4,socks5代理的区别

http代理和SOCKS5代理的区别

Socks5代理Socks5 Proxy

java实现socks5代理功能的客户端,模拟浏览器进行HTTP POST提交