Java——Jsoup方式的IP代理服务器的使用

代理服务器的基本了解

       在一般情况下,使用浏览器可以直接连接internet站点获取网络信息,
   而代理服务器(Proxy Server)是网络上提供转接功能的服务器。
   代理服务器是介于客户端和Web服务器之间至的另一台服务器。
   基于代理服务器,浏览器不再直接从Web服务器获取数据,
   而是向代理服务器发出情求,信号会先送发到代理服务器,
   由代理服务器取回浏览器所需要的信息。可以将代理简单理解为中介.




       在网络爬虫中,使用代理服务器访问网页内容;能高度隐藏爬虫真实IP地址,
  从而防止网络爬虫被服务器封锁。另外,普通网络爬虫使用固定IР地址请求时
  往往需要没置随机休息时间,而通过代理联务器却不需要,从而提高了数据采集的效率。
  三前,代理股务器可以来源于提供免费代理服务的一些网站或接口网站,
  但这些免费代理IP地址的稳定性较差,另外,也可通过付费的方式获取商业级代理,
  其提供的代理IP地址可用率较高,稳定性较强。

记得设置这两个地方
在这里插入图片描述

本代码使用有局限性:

局限性为:
      授权模式 要使用 终端IP授权
      然后生成提取链接页面 返回类型设置必须使用Text文本形式的返回类型
import net.sf.json.JSONObject;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.lang.reflect.Array;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.*;

public class Jsoupdemo6 {
	//生成的ip提取链接,记得换成自己的
    private final static String GET_IP_URL = "http://www.zdopen.com/PrivateProxy/GetIP/?api=202207061724038356&akey=3d6e457db3f4b25c&count=5&adr=%E6%B5%99%E6%B1%9F%2C%E6%B2%B3%E5%8D%97%2C%E5%8C%97%E4%BA%AC&fitter=2&timespan=6&type=1";

    public static void main(String[] args)  {
        Document doc = null;

        try {
            doc = Jsoup.connect(GET_IP_URL).get();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        String text = doc.text();
        // System.out.println(text);
        String[] s = text.split(" ");

        String[] arrip=new String[s.length];
        String[] arrport=new String[s.length];
        for (int i=0;i<s.length;i++) {
            String s1 = s[i];
            arrip[i]= s1.split(":")[0];
            arrport[i]=s1.split(":")[1];
        }

        Map<String, String> ipmap = new HashMap<>();
        Map<String, String> portmap = new HashMap<>();

        for (int i = 0; i < arrip.length; i++) {
            ipmap.put("ip"+i,arrip[i]);
            portmap.put("port"+i,arrport[i]);
        }

        /*
        * 便捷输出查看
        *
        * */
        // for (int i = 0; i < portmap.size(); i++) {
        //     System.out.println(portmap.get("port"+i));
        // }


        for (int i = 0; i < ipmap.size(); i++) {
            // System.out.println(ipmap.get("ip"+i));
            // System.out.println(portmap.get("port"+i));
            String ip =ipmap.get("ip"+i);
            String port=portmap.get("port"+i) ;

            // System.out.println(ip+"  "+port);
            checkIp a = new checkIp(ip, Integer.valueOf(port));
            try {
                a.lianjie();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }


    }


    static class checkIp{
        private String ip ;
        private int port;

        public checkIp(String ip, int port) {
            this.ip = ip;
            this.port = port;
        }
        public  void  lianjie() throws IOException {

			//要请求的网址,记得换成自己的
            Connection connection= Jsoup.connect("https://www.baidu.com");
              /*
            * 这个地方的proxy 参数第一个是String 类型 用于传入 代理Ip地址  第二个参数是int类型用于传入 Ip端口号
            * */
            Connection.Response execute = connection.method(Connection.Method.GET).timeout(20*1000).proxy(ip, port).execute();

            int i = execute.statusCode();
            System.out.println("响应状态码为:"+i);


        }

    }
}

我自己使用的代理ip是 zhandaye 拼音自己猜一下

返回类型是Json方式 ,授权方式为账号密码的写法链接:博客链接跳转

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩眀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值