WebMagic使用代理ip爬数据解决HTTP407问题
手头一个小活儿是爬竞品网站数据。使用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元。这么昂贵的资源,公司项目停滞后就一直闲置着没有利用,真是浪费老板的钱呀~~
参考:http://ip.zdaye.com/Help/2925.html
WebMagic使用代理ip爬数据解决HTTP407问题的更多相关文章
- 代理IP爬取,计算,发放自动化系统
IoC Python端 MySQL端 PHP端 怎么使用 这学期有一门课叫<物联网与云计算>,于是我就做了一个大作业,实现的是对代理IP的爬取,计算推荐,发放给用户等任务的的自动化系统.由 ...
- 代理IP爬取和验证(快代理&西刺代理)
前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...
- php 使用代理IP进行数据抓取
什么是代理?什么情况下会用到代理IP?代理服务器(Proxy Server),其功能就是代用户去取得网络信息,然后返回给用户.形象的说:它是网络信息的中转站.通过代理IP访问目标站,可以隐藏用户的真实 ...
- requests 使用免费的代理ip爬取网站
import requests import queue import threading from lxml import etree #要爬取的URL url = "http://xxx ...
- 极简代理IP爬取代码——Python爬取免费代理IP
这两日又捡起了许久不碰的爬虫知识,原因是亲友在朋友圈拉人投票,点进去一看发现不用登陆或注册,觉得并不复杂,就一时技痒搞一搞,看看自己的知识都忘到啥样了. 分析一看,其实就是个post请求,需要的信息都 ...
- 如何使用代理IP进行数据抓取,PHP爬虫抓取亚马逊商品数据
什么是代理?什么情况下会用到代理IP? 代理服务器(Proxy Server),其功能就是代用户去取得网络信息,然后返回给用户.形象的说:它是网络信息的中转站.通过代理IP访问目标站,可以隐藏用户的真 ...
- 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)
分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图 ...
- 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)
分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...
- 使用Python爬取代理ip
本文主要代码用于有代理网站http://www.kuaidaili.com/free/intr中的代理ip爬取,爬虫使用过程中需要输入含有代理ip的网页链接. 测试ip是否可以用 import tel ...
随机推荐
- zip,rar及linux下常用的压缩格式
日常操作中我们经常使用到文件压缩操作,其使用一些特定的算法来减小文件的大小,可以提高传输数据时的速率和减少数据在一些存储机制上占有的空间大小,实现空间利用最大化. 比如:如果你想通过邮箱发送一个文件夹 ...
- 集合系列 Map(十三):LinkedHashMap
我们之前说过 LinkedHashMap 是在 HashMap 的基础上,增加了对插入元素的链表维护.那么其到底是怎么实现的呢?今天这篇文章就带我们来一探究竟. public class Linked ...
- keras图片数据增强ImageDataGenerator
datagen = ImageDataGenerator( rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shea ...
- Zuul Swagger 整合
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...
- Jupyter修改设置
下载完anaconda后Jupyter默认目录是用户目录,默认浏览器是IE,让有强迫症的我有点难受,所以把它的默认目录和浏览器修改一下. 首先运行一下jupyter notebook --genera ...
- c语言从入门到精通的几个阶段
本文主要结合往期学员学习阶段,因材施教整理的几个阶段学习路线知识点: 1.初级教程 初级c语言入门教程比较适合零基础的小白,这个周期一般在22天,度过这个阶段的小白,基本上已经拥有了编程思维,且能开发 ...
- python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]
目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...
- MySQL去重保留最大的那条记录(取最新的记录)
以用户登录日志表为例,取用户最近登录的设备 1 SET NAMES utf8mb4; 2 ; 3 4 -- ---------------------------- 5 -- Table struct ...
- LeetCode H2O 生成
第1117题 现在有两种线程,氢 oxygen 和氧 hydrogen,你的目标是组织这两种线程来产生水分子. 存在一个屏障(barrier)使得每个线程必须等候直到一个完整水分子能够被产生出来. 氢 ...
- 初步了解Node.js,学做简单的留言本案例
在还没有正式的学Node.js的时候, 你们认为Node.js 对于前端来说是什么呢? 会认为Node.js 是框架? 认为这是类似Jquery的一个快速.简洁的JavaScript框架? 反正我自己 ...