Java使用jsoup调用Http代理IP的代码样例
站大爷
官方
2024-01-20
1552 浏览
温馨提示:
1. 此代码样例同时支持访问http和https网页
2. 使用用户名密码访问的情况下,每次请求httpclient会发送两次进行认证从而导致请求耗时增加,建议使用终端IP授权访问
3. 若有多个用户名、密码进行认证,需要在代码中须添加AuthCacheValue.setAuthCache(new AuthCacheImpl());
4. 依赖包下载:
import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class TestProxyJsoup {
// 用户名密码授权
final static String ProxyUser = "username";
final static String ProxyPass = "password";
// 代理IP、端口号
final static String ProxyHost = "159.138.141.125";
final static Integer ProxyPort = 18916;
public static String getUrlProxyContent(String url) {
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
}
});
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));
try {
// 此处自己处理异常、其他参数等
Document doc = Jsoup.connect(url).followRedirects(false).timeout(3000).proxy(proxy).get();
if (doc != null) {
System.out.println(doc.body().html());
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws Exception {
// 目标网站
String targetUrl = "https://example.com";
// JDK 8u111版本后,目标页面为HTTPS协议,启用proxy用户密码鉴权
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
getUrlProxyContent(targetUrl);
}
}