1、http代理

package main.java.com.example;
import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class testproxy {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("43.248.79.157", 54267);
        String query = Executor.newInstance()
            .auth(entry, "crnr98", "ae44equ3")
            .execute(Request.Get("http://myip.ipip.net").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
2、socks代理

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class socksProxy
    {
        public static void main(String[] args) throws Exception
        {
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("43.248.99.32", 50215));//设置socks代理服务器ip端口
            System.out.println(proxy);
            java.net.Authenticator.setDefault(new java.net.Authenticator()//socks代理要进行认证
            {
                private PasswordAuthentication authentication = new PasswordAuthentication("crnr98", "ae44equ3".toCharArray());//上送代理对应的账密

@Override
                protected PasswordAuthentication getPasswordAuthentication()
                {
                    return authentication;
                }
            });
            //tcp方式
            /*Socket client = new Socket(proxy);
            client.connect(new InetSocketAddress("222.95.148.10", 8080));
            System.out.println(client);
            client.close();*/
            
            //okhttp方式
            OkHttpClient client = new OkHttpClient.Builder().connectTimeout(150, TimeUnit.SECONDS).proxy(proxy).build();//创建OkHttpClient,并且设置超时时间和代理

Request request = new Request.Builder().url("http://www.99bill.com").get().build();//查询本机ip地址请求
            Response response = client.newCall(request).execute();
            System.out.println(response.body().string());
            CloseableHttpClient client = null;
             HttpGet httpGet = new HttpGet(targetUrl);
             client = getHttpClient(proxy);
             CloseableHttpResponse response = getHttpClient.execute(httpGet);         
             String resultStr = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
             System.out.println("访问目标地址结果:"+resultStr);

}

3、http方式中走账密验证和不走账密验证

package main.java.com.example;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.nio.charset.StandardCharsets;

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import okhttp3.Authenticator;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.Route;

public final class Demo {

public static void main(String[] args) throws IOException {
        String ip = "1.199.167.15"; // 代理主机地址
        int port = 27320; // 代理主机端口

// 使用OKHttp库
        // OKHttpProxy.build(ip, port).test();
        //OKHttpProxy.build(ip, port, "9govbw", "gbqgn4a2").test(); // 代理认证

// 使用HttpClient库
        //HttpClientProxy.build(ip, port).test();
        HttpClientProxy.build(ip, port, "9govbw", "gbqgn4a2").test(); // 代理认证
    }

/**
     * OKHttp库使用代理
     */
    static class OKHttpProxy {

String proxyHost;
        int proxyPort;
        String proxyAccount;
        String proxyPwd;

/**
         * @param host 代理主机地址
         * @param port 代理主机端口
         */
        public static OKHttpProxy build(String host, int port) {
            OKHttpProxy proxy = new OKHttpProxy();
            proxy.proxyHost = host;
            proxy.proxyPort = port;
            return proxy;
        }

/**
         * @param host 代理主机地址
         * @param port 代理主机端口
         * @param acc 代理认证账号
         * @param pwd 代理认证口令
         */
        public static OKHttpProxy build(String host, int port, String acc, String pwd) {
            OKHttpProxy proxy = new OKHttpProxy();
            proxy.proxyHost = host;
            proxy.proxyPort = port;
            proxy.proxyAccount = acc;
            proxy.proxyPwd = pwd;
            return proxy;
        }

public void test() throws IOException {
            String targetUrl = "http://myip.ipip.net";

OkHttpClient client = null;
            if (proxyAccount == null || proxyPwd == null) {
                client = getHttpClient(proxyHost, proxyPort);
            } else {
                // 账号密码验证
                client = getHttpClient(proxyHost, proxyPort, proxyAccount, proxyPwd);
            }

Request request = new Request.Builder()
                    .url(targetUrl)
                    .build();
            Response response = client.newCall(request).execute();
            System.out.println(response.body().string());
        }

/**
         * 代理不需要账号密码认证的httpClient
         */
        private static OkHttpClient getHttpClient(String proxyHost, int proxyPort) {
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
            return new OkHttpClient.Builder()
                    .proxy(proxy)
                    .build();
        }

/**
         * 代理需要账号密码认证的httpClient
         */
        private static OkHttpClient getHttpClient(String proxyHost, int proxyPort, final String acc, final String pwd) {
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
            // 账号密码验证
            Authenticator authenticator = new Authenticator() {
                public Request authenticate(Route route, Response resp) throws IOException {
                    String credential = Credentials.basic(acc, pwd);
                    return resp.request().newBuilder().header("Proxy-Authorization", credential).build();
                }
            };
            return new OkHttpClient.Builder()
                    .proxy(proxy)
                    .proxyAuthenticator(authenticator)
                    .build();
        }

}
    
    /**
     * HttpClient库使用代理
     */
    static class HttpClientProxy {
        String proxyHost;
        int proxyPort;
        String proxyAccount;
        String proxyPwd;

/**
         * @param host 代理主机地址
         * @param port 代理主机端口
         */
        public static HttpClientProxy build(String host, int port) {
            HttpClientProxy proxy = new HttpClientProxy();
            proxy.proxyHost = host;
            proxy.proxyPort = port;
            return proxy;
        }

/**
         * @param host 代理主机地址
         * @param port 代理主机端口
         * @param acc 代理认证账号
         * @param pwd 代理认证口令
         */
        public static HttpClientProxy build(String host, int port, String acc, String pwd) {
            HttpClientProxy proxy = new HttpClientProxy();
            proxy.proxyHost = host;
            proxy.proxyPort = port;
            proxy.proxyAccount = acc;
            proxy.proxyPwd = pwd;
            return proxy;
        }

public void test() throws IOException {
            String targetUrl = "http://myip.ipip.net";

CloseableHttpClient client = null;
            if (proxyAccount == null || proxyPwd == null) {
                client = getHttpClient(proxyHost, proxyPort);
            } else {
                // 账号密码验证
                client = getHttpClient(proxyHost, proxyPort, proxyAccount, proxyPwd);
            }
            HttpGet httpGet = new HttpGet(targetUrl);
            CloseableHttpResponse response = client.execute(httpGet);
            String resultStr = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
            System.out.println(resultStr);
        }

/**
         * 代理不需要账号密码认证的httpClient
         */
        private static CloseableHttpClient getHttpClient(String proxyHost, int proxyPort) {
            HttpHost proxy = new HttpHost(proxyHost, proxyPort, "HTTP");
            return HttpClients.custom()
                    .setProxy(proxy)
                    .build();
        }

/**
         * 代理需要账号密码认证的httpClient
         */
        private static CloseableHttpClient getHttpClient(String proxyHost, int proxyPort, String acc, String pwd) {
            HttpHost proxy = new HttpHost(proxyHost, proxyPort, "HTTP");
            CredentialsProvider provider = new BasicCredentialsProvider();
            provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(acc, pwd));

return HttpClients.custom()
                    .setProxy(proxy)
                    .setDefaultCredentialsProvider(provider)
                    .build();
        }

}

}
推荐一家好用的代理ip成功率挺高的:https://h.shenlongip.com/index?from=seller&did=h4Dmox

java中各种使用设置代理的方法相关推荐

  1. Java中使用IE Proxy代理的方法

    在Java的网络编程中,有时候内网服务器需要访问外网的网络资源,这时候就需要使用代理. 完整的代码下载:src.rar 一般系统在ie浏览器中设置的代理,java无法访问到,可通过以下代码进行: st ...

  2. Java 中 List 分片的 5 种方法!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时 ...

  3. java中为什么要使用代理

    引入代理: 我们为什么要引入java的代理,除了当前类能够提供的功能外,我们还需要补充一些其他功能. 最容易想到的情况就是权限过滤,我有一个类做某项业务,但是由于安全原因只有某些用户才可以调用这个类, ...

  4. java中InvocationHandler 用于实现代理。

    以下的内容部分参考了网络上的内容,在此对原作者表示感谢! Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandler接口中的 ...

  5. [转载] java中对象作为参数传递给一个方法,到底是值传递,还是引用传递

    参考链接: 用Java传递和返回对象 看完绝对清晰~ java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? pdd:所谓java只有按值传递:基本类型  值传递:引用类型,地址值传递,所 ...

  6. JAVA中JButton常用设置

    JAVA中JButton常用设置 1. 对JButton大小的设置     --因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用      butto ...

  7. java 插入 mysql 乱码_解决java中插入mysql中文乱码的方法

    解决java中插入mysql中文乱码的方法 发布时间:2020-07-11 14:35:11 来源:亿速云 阅读:100 作者:清晨 这篇文章主要介绍解决java中插入mysql中文乱码的方法,文中介 ...

  8. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  9. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

最新文章

  1. oracle中before,Oracle中Before和After触发器的例子
  2. Ubuntu下配置和编译cpp-ethereum客户端
  3. Android开发之单例模式
  4. 计算机一级access考试题库,‎App Store 上的“计算机二级access-全国计算机等级考试题库”...
  5. Maven日常 —— 你应该知道的一二三
  6. 安装glog和gflags
  7. android11电视,谷歌发布首款Android TV版 基于Android 11开发者预览版
  8. 计算机网络体系结构作业题整理-第一章答案
  9. FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节
  10. 汉王人脸考勤管理系统 Check SQL注入漏洞
  11. 谷歌浏览器不支持html2.0,谷歌浏览器不能播放视频怎么办_chrome浏览器无法播放视频的解决方法-系统城...
  12. word文档设置不同的页眉页脚
  13. 2020年西北工业大学 J- 不讲武德
  14. 开始报名啦!——第二届融360“天机”金融风控大数据竞赛火热来袭
  15. 【转】Win7 更改文件夹背景
  16. layui 表格合计
  17. python加换行和去换行(去掉换行,end =““;加换行 ,‘/n‘)
  18. 删除链表的结点——《剑指offer》
  19. Random与ThreadLocalRandom 解析
  20. 怎么把多个JPG合并成一个PDF?还不快来学

热门文章

  1. iOS-tableview顶部拉伸效果(头像拉伸)
  2. html5穿插动图,视频中间插播广告 在视频中的任意位置添加广告图片,视频中穿插图片的方法...
  3. 【实训知识点记录】2.1插播结课作业需要的技术栈介绍
  4. 【案例实战】分布式应用下登录检验解决方案(JWT)
  5. 区块链100讲:STO技术标准(ST-20,SRC20,R-TOKEN,DS Protocol,ERC1400,ERC1410)
  6. 02_43_20190921
  7. Vue项目中使用 tinymce 富文本编辑器的方法,附完整源码
  8. 处理opencv里用plt显示imread读取图像偏色问题
  9. 【108期分享】4款产品发布PPT模板免费下载
  10. JAVA从文本文件(txt)读取一百万条数据保存到数据库