Java中使用SOCKS5代理,你可以使用Proxy类和ProxySelector接口。以下是一个简单的示例,演示如何通过SOCKS5代理连接到一个网站:
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.List;
public class Socks5Example {
? ? public static void main(String[] args) {
? ? ? ? // 设置SOCKS5代理主机和端口
? ? ? ? String proxyHost = "your_socks5_proxy_host";
? ? ? ? int proxyPort = 1080;
? ? ? ? // 设置要访问的网站
? ? ? ? String targetUrl = "http://www.example.com";
? ? ? ? // 设置系统属性,告诉Java使用SOCKS5代理
? ? ? ? System.setProperty("socksProxyHost", proxyHost);
? ? ? ? System.setProperty("socksProxyPort", String.valueOf(proxyPort));
? ? ? ? // 使用ProxySelector来设置代理
? ? ? ? ProxySelector.setDefault(new ProxySelector() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public List<Proxy> select(URI uri) {
? ? ? ? ? ? ? ? return Collections.singletonList(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(proxyHost, proxyPort)));
? ? ? ? ? ? }
? ? ? ? ? ? @Override
? ? ? ? ? ? public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
? ? ? ? ? ? ? ? // Handle connection failure if needed
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? // 现在可以使用Java的网络功能来连接到网站
? ? ? ? try {
? ? ? ? ? ? java.net.URL url = new java.net.URL(targetUrl);
? ? ? ? ? ? java.net.URLConnection connection = url.openConnection();
? ? ? ? ? ? // 进行进一步的操作,比如读取数据
? ? ? ? } catch (java.io.IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
请替换your_socks5_proxy_host为实际的SOCKS5代理主机地址。这个例子中使用了ProxySelector,以确保只有特定的URI使用SOCKS5代理。在实际应用中,你可能需要根据你的需求进行更复杂的配置。确保在实际使用中处理异常和错误。