NiceLeeのBlog 用爱发电 bilibili~

Java Http代理设置

2019-01-07
nIceLee

阅读:


在做爬虫的时候,同一ip频繁抓取有很大可能会被识别,然后被ban。因而,使用代理是很有必要的。

URLConnection 设置代理

URLConnection有两种设置方法:

  • Java支持以System.setProperty的方式设置http代理及端口,如下:
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
  
// 针对https也开启代理
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);

代理的关闭:

System.clearProperty("http.proxyPort");
System.clearProperty("http.proxyHost");
System.clearProperty("https.proxyPort");
System.clearProperty("https.proxyHost");

更多设置可以参考:https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html

  • 使用Proxy对象,在建立连接时注入到URLConnection即可:
// 初始化proxy对象
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
  
// 创建连接
URL u = new URL(url);
URLConnection conn = u.openConnection(proxy);

HtmlUnit 设置代理

有的时候需要支持js,这时,一种可行的解决方案是使用HtmlUnit:

WebClient webClient = new WebClient(BrowserVersion.CHROME);
ProxyConfig proxyConfig = new ProxyConfig(proxyHost, proxyPort);
webClient.getOptions().setProxyConfig(proxyConfig);

内容
隐藏