package demo;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
/**
* compile 'com.squareup.okhttp3:okhttp:4.9.3'
*/
class ApiProxyJava {
public static void main(String[] args) throws IOException {
testHttpWithOkHttp();
testSocks5WithOkHttp();
}
/**
* http代理
*/
public static void testHttpWithOkHttp() throws IOException {
//定义要访问的URL
String url = "https://ipinfo.ipidea.io";
//创建一个HTTP类型的代理对象,设置代理服务器IP地址和端口号:
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("ip", "port"));//这里的 "ip" 和 "port"应替换为代理服务器地址和端口。
//构建一个OkHttpClient实例,并配置好HTTP代理:
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
//发送GET请求并获取响应:
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//获取并打印响应内容
String responseString = response.body().string();
System.out.println(responseString);
}
/**
* SOCKS5代理
*/
public static void testSocks5WithOkHttp() throws IOException {
//定义要访问的URL
String url = "https://ipinfo.ipidea.io";
//创建一个SOCKS类型的代理对象,设置代理服务器IP地址和端口号:
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("ip", "port"));//这里的 "ip" 和 "port"应替换为实际的SOCKS代理服务器地址和端口。
//构建一个OkHttpClient实例,并配置好SOCKS代理:
//这里使用了SOCKS代理,这意味着所有的网络流量(包括TCP连接)都将通过这个SOCKS代理进行转发。
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
//发送GET请求并获取响应:
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//获取并打印响应内容:
String responseString = response.body().string();
System.out.println(responseString);
}
}
package demo;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
/**
* compile 'com.squareup.okhttp3:okhttp:4.9.3'
*/
class AutProxyJava {
public static void main(String[] args) throws IOException {
testWithOkHttp();
testSocks5WithOkHttp();
}
/**
* http代理
*/
public static void testWithOkHttp() throws IOException {
String url = "https://ipinfo.ipidea.io";//请求地址
//创建一个HTTP类型的代理对象,指定代理服务器的主机名和端口号
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", "port"));//这里用到的"host"和"port"应替换为代理服务器地址和端口。
// 构建一个自定义的OkHttpClient实例,设置代理服务器并添加一个代理认证器(proxyAuthenticator):
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).proxyAuthenticator((route, response) -> {
// 在这里生成Basic认证的凭证字符串
String credential = Credentials.basic("account", "password");//此处的账号密码 "account" 和 "password" 应替换为认证账户名和认证账户密码。
// 如果代理服务器需要身份验证,则在请求头中添加认证信息
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}).build();
//发送GET请求并获取响应:
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//获取并打印响应内容:
String responseString = response.body().string();
System.out.println(responseString);
}
/**
* Socks5代理
*/
public static void testSocks5WithOkHttp() throws IOException {
//请求地址
String url = "https://ipinfo.ipidea.io";
//创建一个SOCKS类型的代理对象,设置实际的代理服务器主机名和端口号:
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("host", "port"));//这里用到的"host"和"port"应替换为代理服务器地址和端口。
//设置全局默认的认证器(Authenticator),用于处理所有网络连接需要的基本身份验证。这里预设了一个用户名和密码:
java.net.Authenticator.setDefault(new java.net.Authenticator() {
private PasswordAuthentication authentication =
new PasswordAuthentication("account", "password".toCharArray());//此处的账号密码 "account" 和 "password" 应替换为认证账户名和认证账户密码。
@Override
protected PasswordAuthentication getPasswordAuthentication() {//当网络连接需要身份验证时,系统会调用此方法获取认证信息。
return authentication;
}
});
//构建OkHttpClient实例,配置好SOCKS代理:
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
//发送GET请求并获取响应:
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//获取并打印响应内容:
String responseString = response.body().string();
System.out.println(responseString);
}
}