如何在java中使用HTTP代理

Tim*_*Tim 22 java ip proxy

我正在编写一个连接到网站并检查一些代码的代码,比如爬虫.但我需要通过代理连接并更改IP地址(因此它不会在服务器日志中显示客户端的IP).

怎么能通过java来完成?

Aru*_*hny 48

您可以使用java系统属性来设置代理或将其作为命令行选项传递.

您可以在这里找到一些细节和样品.

例如:打开连接之前

System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用系统中配置的默认网络代理

System.setProperty("java.net.useSystemProxies", "true");
Run Code Online (Sandbox Code Playgroud)

从Java 1.5开始,您可以创建代理实例并将其传递给openConnection()方法.

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
URL url = new URL("http://www.yahoo.com");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
uc.connect();
Run Code Online (Sandbox Code Playgroud)

或者像lisak建议的那样,您可以使用一些第三方库来更好地满足您的需求.

  • 为什么根本没有 Proxy.Type.HTTPS(安全)常量? (2认同)

lis*_*sak 10

或者您也可以使用更适合您需求的HttpClient.查看文档,它简短而且非常有用.

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Run Code Online (Sandbox Code Playgroud)