Java使用jdk调用Socks5代理IP的代码样例
站大爷
官方
2024-01-20
1531 浏览
温馨提示:
1. http/https网页均可适用
2. 运行环境要求 jdk >= 1.6
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.util.zip.GZIPInputStream;
public class JavaSocksWhitelist {
public static void main(String[] args) throws IOException {
String proxyIp = "159.138.41.125"; // 代理服务器IP
int proxyPort = 16818; // 代理服务器端口
// 要访问的目标网页
String pageUrl = "https://example.com";
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(proxyIp, proxyPort));
URL url = new URL(pageUrl);
HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(proxy);
httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.setConnectTimeout(5*1000); // 设置超时时间
httpUrlConnection.setRequestProperty("Accept-Encoding", "gzip"); // 添加gzip压缩让数据传输更块
// 发起请求
httpUrlConnection.connect();
// 输出状态码
System.out.println("code: " + httpUrlConnection.getResponseCode());
// 读取返回内容
InputStream inputStream = httpUrlConnection.getInputStream();
String encoding = httpUrlConnection.getContentEncoding();
// 处理gzip压缩
if (encoding.equals("gzip")) inputStream = new GZIPInputStream(inputStream);
String message = getContentFromInputStream(inputStream);
// 输出返回内容
System.out.println(message);
// 关闭输入流和连接
inputStream.close();
httpUrlConnection.disconnect();
}
// 读取输入流中的内容
public static String getContentFromInputStream(InputStream inputStream) throws IOException {
final int bufferSize = 1024;
final char[] buffer = new char[bufferSize];
final StringBuilder out = new StringBuilder();
Reader in = new InputStreamReader(inputStream, "UTF-8");
for (;;) {
int rsz = in.read(buffer, 0, buffer.length);
if (rsz < 0) break;
out.append(buffer, 0, rsz);
}
return out.toString();
}
}