如何在Java中使用HTTP代理

2022-09-01 21:51:29

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

如何通过java完成此操作?


答案 1

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

您可以在此处找到一些详细信息和示例。

例如:打开连接之前

System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");

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

System.setProperty("java.net.useSystemProxies", "true");

从 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();

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


答案 2

或者您也可以使用更适合您需求的HttpClient。查看文档,它简短且内容丰富。

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);