代码示例-Java

发布时间:2021-08-04 15:08

此示例是通过修改JVM中的网络设置来达到代理的效果,如果程序员有些请求不需要代理可以在代理请求之后再将JVM配置项改回默认项。支持http、https、socks5代理

代码

此代码以http和https代理为例:

// 使用socks5代理配置



package com.qg;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.*;

public class ProxyClient {

      //用户key

      private static String user = "key";

      //用户密码

      private static String password = "proxy_password";

      //获取到的代理IP

      private static String proxyIP = "127.0.0.1";

      //获取到的代理端口

      private static String proxyPort = "1080";

      public static void main(String[] args) {

            // 下面http、https代理和socks5代理只需要设置一个就可以

            // 使用http代理和https代理

            System.setProperty("http.proxySet", "true");

            // 发起http请求时使用的代理服务器配置

            System.setProperty("http.proxyHost", proxyIP);

            System.setProperty("http.proxyPort", proxyPort);

            // 发起https请求时使用的代理服务器配置

            System.setProperty("https.proxyHost", proxyIP);

            System.setProperty("https.proxyPort", proxyPort);

            // 这行代码是身份验证的关键配置,不然身份验证不起作用

            System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");

            System.setProperty("jdk.http.auth.proxying.disabledSchemes", "");

            // 身份验证

            Authenticator.setDefault(

                  new Authenticator() {

                      public PasswordAuthentication getPasswordAuthentication() {

                          return new PasswordAuthentication(

                                  user, password.toCharArray());

                      }

                  }

          );

          sendRequest("http://httpbin.org/get");

          sendRequest("https://httpbin.org/get");

      }

      public static void sendRequest(String urlStr) {

          URL url;

        &nbs; BufferedReader in;

          StringBuilder result = new StringBuilder();

          try {

              url = new URL(urlStr);

              HttpURLConnection conn = (HttpURLConnection) url.openConnection();

              conn.connect();

              in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

              String line;

              while ((line = in.readLine()) != null) {

                  result.append(line);

             }

              conn.disconnect();

              System.out.println("http status code:"   conn.getResponseCode());

              System.out.println("body: "   result);

          } catch (IOException e) {

              e.printStackTrace();

         }

      }

  }

如需使用socks5代理可以将main函数中的代码替换为:

// 使用socks5代理配置
System.setProperty("socksProxyHost", proxyIP); System.setProperty("socksProxyPort", proxyPort); System.setProperty("socksProxyVersion", "5"); System.setProperty("java.net.socks.username", user); System.setProperty("java.net.socks.password", password);
相关文章
本文导读

客户热线:QQ:917352665

客户服务中心