当前位置: 移动技术网 > IT编程>开发语言>Java > WebMagic使用代理ip爬数据解决HTTP407问题

WebMagic使用代理ip爬数据解决HTTP407问题

2019年08月30日  | 移动技术网IT编程  | 我要评论

咯血,韩火火事件,818电影网


手头一个小活儿是爬竞品网站数据。使用webmagic来实现。光公司ip不行,被封了就会影响业务正常访问。刚好公司另一个项目购买了代理ip资源“站大爷”,那个项目夭折了,于是申请借来用用。

调通站大爷提供的获取代理ip的api接口并没什么技术难度。可是,在运行爬数据程序时,收到http的407错误。经了解,407是授权错误,要求代理身份验证。站大爷技术支持提醒说检查一下产品配置。发现“一手私密代理”里当前授权模式是“用户名+密码”(可以在“终端ip授权”和“用户名+密码”两种授权模式中切换)。然后,再看webmagic的proxy类,有一个构造器是除了必传的ip、端口外,还可以传用户名和密码。那就是它了。改正以后,测试ok。


webmagic使用代理ip实现爬虫的部分代码:

request request = new request("https://www.xxx.com/a/b");
request.setmethod("post");
try {
    request.addheader("proxy-authorization","basic "+ base64.getencoder().encodetostring("20190430**********:password".getbytes("utf-8")));
    request.addheader("authorization","basic "+ base64.getencoder().encodetostring("20190430**********:password".getbytes("utf-8")));
}catch (exception e){
    log.error("",e);
}
request.setrequestbody(httprequestbody.json("{pageidx:'"+pageidx+"'}","utf-8"));

httpclientdownloader httpclientdownloader = new httpclientdownloader();


//            调用api获取代理ip列表
list<zdoipvo> proxyiplist = spiderconfig.getips();
if(!collectionutils.isempty(proxyiplist)) {
    zdoipvo zdoipvo = proxyiplist.get(0);
    httpclientdownloader.setproxyprovider(simpleproxyprovider.from(
            new proxy(zdoipvo.getip(), zdoipvo.getport(),spiderconfig.getzdoid(),spiderconfig.getzdopassword())
    ));
}

spider.create(this)
        .addrequest(request)
        .setdownloader(httpclientdownloader)
        //开启2个线程抓取
        .thread(2)
        //启动爬虫
        .run();
}

 

查看站大爷资料,我方所对接的一手私密代理ip有1-4小时存活期,可同时提取1000左右(江浙粤一带居多),足见这个企业的技术强势。不过,一分价钱一分货,购买一年的费用高达18000元。这么昂贵的资源,公司项目停滞后就一直闲置着没有利用,真是浪费老板的钱呀~~

 

参考:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网