java使用Jsoup爬虫,IP代理方式

package com.wxq.pachong.demo1;

import java.io.IOException;

import java.util.*;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import net.sf.json.JSONObject;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Test {

//获取代理ip,记得更换,也可在此网站注册,进行测试使用

  private final static StringGET_IP_URL ="http://webapi.http.zhimacangku.com/getip?num=5&type=2&pro=&city=0&yys=0&port=1&pack=43370&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=1&regions=";

    public static void main(String[] args)throws InterruptedException {

ExecutorService exe = Executors.newFixedThreadPool(10);

        for (int i=0 ;i<1;i++) {

Document doc =null;

            try {

doc = Jsoup.connect(GET_IP_URL).get();

            }catch (IOException e) {

continue;

            }

System.out.println(doc.text());

            JSONObject jsonObject = JSONObject.fromObject(doc.text());

            List> list = (List>) jsonObject.get("data");

            List> ipList =new ArrayList>();

            for (Map map : list ) {

Map map1 =new HashMap();

                String ip = (String)map.get("ip");

                int port = (int)map.get("port");

                map1.put("ip",ip);

                map1.put("port",port);

                ipList.add(map1);

            }

System.out.println("ipList代理IP:"+ipList);

            int ipCount = list.size();

            System.out.println("IP总数量:"+ipCount);

            //代理IP均分给用户

            int userCount =5;

            int count = ipCount/userCount;

            System.out.println("每个用户分得IP数量:"+count);

            /*for(int j =1; j

}*/

            for (Map map : ipList ) {

String ip = (String)map.get("ip");

                int port = (int)map.get("port");

                checkIp a =new checkIp(ip, port,count);

                exe.execute(a);

                Thread.sleep(3000);

            }

exe.shutdown();

        }

}

}

class checkIpimplements Runnable {

private static Loggerlogger = LoggerFactory.getLogger(checkIp.class);

    private static int suc=0;

    private static int total=0;

    private static int fail=0;

    private Stringip ;

    private int port;

    private int count;

    public checkIp(String ip, int port,int count) {

super();

        this.ip = ip;

        this.port = port;

        this.count = count;

    }

@Override

    public void run() {

Random r =new Random();

        String[] ua = {"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.32",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",

                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586",

                "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",

                "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)",

                "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)",

                "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.3 Safari/537.36",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Core/1.47.277.400 QQBrowser/9.4.7658.400",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",

                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 TheWorld 7",

                "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/60.0"};

        int i = r.nextInt(14);

        logger.info("检测中------ {}:{}",ip,port );

        Map map =new HashMap();

        //可以加参数,用户的账号密码

        map.put("userName","DD1838768852");

        map.put("passWord","DD1838768852");

        try {

total ++;

            long a = System.currentTimeMillis();

            //爬取的目标网站,url记得换下。。。!!!

            Document doc = Jsoup.connect("https://www.xxx.com/free/")

.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")

.header("Accept-Encoding", "gzip, deflate, br")

.header("Accept-Language", "zh-CN,zh;q=0.9")

.header("Cache-Control", "max-age=0")

.header("User-Agent", ua[i])

.header("Cookie", "channelid=0; sid=1552294186460690; Hm_lvt_7ed65b1cc4b810e9fd37959c9bb51b31=1552294430; _ga=GA1.2.962118079.1552294430; _gid=GA1.2.346759656.1552294430; _gat=1; Hm_lpvt_7ed65b1cc4b810e9fd37959c9bb51b31=1552359319")

.header("Host", "www.xxx.com") //记得换下

.header("Referer", "https://www.xxx.com/")//记得换下

.ignoreContentType(true).ignoreHttpErrors(true)

.proxy(ip,port)

.data(map)

.timeout(30 *1000)

.post();

            System.out.println(ip+":"+port+"访问时间:"+(System.currentTimeMillis() -a) +"  访问结果: "+doc.text());

            suc ++;

        }catch (IOException e) {

e.printStackTrace();

            fail ++;

        }finally {

if (total ==count ) {

System.out.println("总次数:"+total);

                System.out.println("成功次数:"+suc);

                System.out.println("失败次数:"+fail);

            }

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,728评论 6 526
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,623评论 3 411
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,371评论 0 372
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,174评论 1 306
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,014评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,532评论 1 319
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,641评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,793评论 0 283
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,294评论 1 329
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,276评论 3 352
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,423评论 1 364
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,980评论 5 354
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,678评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,087评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,307评论 1 279
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,997评论 3 385
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,404评论 2 370

推荐阅读更多精彩内容

  • 我看见了 我看见了 我看见了一片瀑布 我看见了一只恐龙 我看见了一座慢慢移动的秀峰 我看见了一幅巨大的有着蓝色背景...
    绣面芙蓉阅读 125评论 0 0
  • 文/宁生 感情刚开始的时候,我们都有一腔孤勇。 一直很喜欢林宥嘉的歌,总觉得他的歌宛转悠扬,从不撕心裂肺,却丝丝缕...
    宁阿生阅读 1,226评论 1 3
  • 小时候过生日,妈妈会给我们煮个鸡蛋吃,寿星可以多吃一个,也没有长寿面这一说,只有鸡蛋而已。所以,我对生日并没有特别...
    伊萨卡阅读 397评论 0 3
  • 40多年一晃而逝,很多黑色泳衣加泳军退到洞底,站在海岸边,百无聊赖的等待甜香以上的发型师,早熟的记忆,突然呼吸,这...
    海哥0001阅读 247评论 0 0