通过 Java 使用代理进行 HTTP 请求





5.00/5 (2投票s)
一个简单的代码解决方案,演示如何使用 Java 通过代理发出 HTTP 请求
引言
在网络编程领域,通过代理服务器进行 HTTP 请求对于各种原因至关重要,包括网络爬虫、管理多个请求或提高匿名性。本文介绍了一个 Java 代码片段,演示了如何配置 HttpURLConnection
以通过具有基本身份验证的代理服务器路由请求。
使用代码
要使用此 Java 代码通过代理进行 HTTP 请求(具有基本身份验证)
-
更新配置:
- 使用您的代理服务器详细信息设置
proxyHost
、proxyPort
、username
和password
。 - 将
url
变量修改为目标端点。
- 使用您的代理服务器详细信息设置
-
编译和运行:
- 使用
javac Main.java
编译代码。 - 使用
java Main
运行编译后的类。
- 使用
-
关键组件:
- 代理设置:通过
Proxy
和InetSocketAddress
配置。 - 身份验证:使用 Base64 编码添加
Proxy-Authorization
标头。 - 响应处理:使用
BufferedReader
读取并打印响应。
- 代理设置:通过
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.util.Base64;
public class Main {
public static void main(String[] args) throws Exception {
try {
String proxyHost = "us.swiftproxy.net";
int proxyPort = 7878;
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
String username = "username_custom_zone_us";
String password = "password";
String credentials = username + ":" + password;
URL url = new URL("http://ipinfo.io");
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
connection.setRequestMethod("GET");
connection.setRequestProperty("Proxy-Authorization", "Basic " + Base64.getEncoder().encodeToString(credentials.getBytes()));
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println((response.toString()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
结论
此 Java 代码片段提供了一种通过具有基本身份验证的代理服务器进行 HTTP 请求的简单方法。通过使用适当的代理设置和身份验证标头配置 HttpURLConnection
,您可以有效地管理网络请求,同时控制您的 IP 地址和访问凭据。无论您是在处理 IP 限制、进行研究还是管理多个帐户,这种方法都提供了一个实用的解决方案。为了增强安全性及功能,请务必小心处理敏感信息,并根据您的特定需求调整代理设置。