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

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

调通站大爷提供的获取代理ip的api接口并没什么技术难度。可是,在运行爬数据程序时,收到http的407错误。经了解,407是授权错误,要求代理身份验证。站大爷技术支持提醒说检查一下产品配置。发现“一手私密代理”里当前授权模式是“用户名+密码”。然后,再看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元。这么昂贵的资源,公司项目停滞后就一直闲置着没有利用,真是浪费老板的钱呀~~

原文地址:https://www.cnblogs.com/buguge/p/11434328.html

时间: 2024-08-30 08:52:52

WebMagic使用代理ip爬数据解决HTTP407问题的相关文章

scrapy中使用代理IP爬取数据时遇到IP失效时自动切换的方法

当使用临时的IP请求数据时,由于这些IP的过期时间极短,通常在1分钟~5分钟左右,这时scrapy就会报发以下错误 2020-01-17 17:00:48 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://xxxx/co s): Connection was refused by other side: 10061: 由于目标计算机积极拒绝,无法连接.. 这时如何自动切换IP,然后重新请求呢? 先看看scrapy的

豆瓣-代理ip登陆-css解决class空格

首先附上源码: from bs4 import BeautifulSoup from selenium import webdriver import time from ArticleSpider.proxy_pool import proxy import csv #代理Ip iplist=proxy().get_ip_list() proxies=proxy().get_random_ip(iplist) #账号密码 user={ 'word':'账号', 'password':'密码'

使用多个代理IP爬某投资机构的公司信息

使用requests+beautifulsoup4爬取某网站的项目信息,此网站比较复杂,所需的数据在6个不同网页中,每抓取一条数据需要打开6个不同网页取数据,然后保存在某一条数据的数据字典中.某些数据有多条,而且每一条有可能还需要细分,所有数据格式层级非常多,最多有5层数据.此网站使用禁止IP的方式来反扒,而且手段非常凶残,只要快速连续爬取30个页面左右,就立即会禁止该网段IP的访问(及其傻逼的方式,会误杀大量客户,而且正常客户的正常访问在这种严苛的封杀下无法访问),当前是使用大量抓取免费的ip

酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)

分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不过没关系,看这些图片长得这么清秀纯天然无杂质,识别是很容易的. 然后再来选一下ip地址: 很可能ip地址是用这个js现写进来的,要确定的话还得看一眼返回的原始html,查看源码定位这一个ip: 看来只能从这段js中提取ip地址了,并不是很难,只需要把引号.加号.括号.document.write.空

如何利用动态代理IP来做SEO(网络营销)

对动态代理IP大家都不陌生,今天我们来聊下如何利用动态代理ip来做SEO优化.其实除了SEO很多网络营销也都需要用到代理IP,因为很多网络营销的用户都知道,投票.注册帐号.发帖子等工作,都需要用到代理IP这个工具,才能毫无限制的操作. 动态代理IP对seo网站运营的影响: 我们在尝试运用动态代理IP之前,先说说咱们有什么常规化的seo优化方式去优化网站,其中要做好2点.第一点做好基本优化.第二点,深入认识搜索引擎: 1:做好基本优化:说的就是站内优化和站外优化.站内优化就是把网站优化的基础完善,

爬取西刺网代理ip,并把其存放mysql数据库

需求: 获取西刺网代理ip信息,包括ip地址.端口号.ip类型 那,如何解决这个问题? 分析页面结构和url设计得知: 数据都在本页面可以全部获取,没有单独的详情页面 下一页通过更改当前页面最后url后缀进行跳转页面,那我实现URL的拼接不就解决这个问题了 那,软件的运行环境? python3.5 scrapy twisted request pymysql 以上是第三方包,通过pip安装 MySQL服务 其中db,user,password的值根据实际情况而定 #!/usr/bin/pytho

使用TaskManager爬取2万条代理IP实现自动投票功能

话说某天心血来潮想到一个问题,朋友圈里面经常有人发投票链接,让帮忙给XX投票,以前呢会很自觉打开链接帮忙投一票.可是这种事做多了就会考虑能不能使用工具来进行投票呢,身为一名程序猿决定研究解决这个问题.于是有了以下思考 1.是否能一个人投多票,如果不行又是什么限制了一人投多票? 答:投票网站限制了一个IP或者一个用户只能投一票,防止恶意刷票行为 2.如果是一个IP一票那是否代表着多个IP就能投多票了呢? 答:答案是肯定的 3.用什么方法能够在代码里面改变自己请求的IP? 答:HTTP请求的时候设置

大数据爬虫为什么要使用IP代理,代理IP的特点是什么?

随着互联网的迅猛发展,大数据的应用,大数据样本获得需要通过数据爬虫来实现,而爬虫工作者一般都绕不过代理IP请添加链接描述这个问题,为什么呢,这是因为在网络爬虫抓取信息的过程中,抓取频率高过了目标网站的设置阀值,将会被禁止访问.如果抓取频率低了就影响数据抓取,严重浪费时间,那么这个问题如何解决呢,其实也很简单,那就是使用代理IP.那么代理IP一般从哪里来呢?一般获取代理IP的方式有以下三种,让我们一一道来. 第一种:自己搭建服务器,这种代理IP优点是效果最稳定,时效和地区完全可控,可以按照自己的要

Scrapy爬取美女图片第三集 代理ip(下)

这是我的公众号获取原创保护的首篇文章,原创的肯定将支持我继续前行.现在写这篇文章的时间是晚上11:30,写完就回寝室休息了,希望更多的朋友与我一起同行(当然需要一个善良的妹子的救济). 好了,废话不多说,咱们进入今天的主题.上一篇咱们讲解了代理ip上篇,本篇咱们继续讲解代理ip.这一篇是上一篇的扩展和优化,主要的改动是使用scrapy来进行爬取代理ip,同时演示在scrapy框架中怎么使用mongodb数据库,最后使用多线程批量验证代理ip的合理性,大大加快了速度. 这次我选择的依然是http: