如何构建一个自己的代理ip池

对于爬虫来说,当你的访问频率达到了目标网站设置的阈值时,就会触发目标网站的反爬机制。而封禁访问者ip就是很常见的一个反爬机制。当ip被封禁后,从此ip发出的请求将不能得到正确的响应。这种时候,我们就需要一个代理ip池。

  什么是代理ip池?

  通俗地比喻一下,它就是一个池子,里面装了很多代理ip。它有如下的行为特征:

  1.池子里的ip是有生命周期的,它们将被定期验证,其中失效的将被从池子里面剔除。

  2.池子里的ip是有补充渠道的,会有新的代理ip不断被加入池子中。

  3.池子中的代理ip是可以被随机取出的。

  这样,代理池中始终有多个不断更换的、有效的代理ip,且我们可以随机从池子中取出代理ip,然后让爬虫程序使用代理ip访问目标网站,就可以避免爬虫被封的情况。

  今天,我们就来说一下如何构建自己的代理ip池。而且,我们要做一个比较灵活的代理池,它提供两种代理方式:

  1.每次都通过http接口提取一个随机代理ip,然后在爬虫中使用此代理ip(大部分代理ip池服务都是这种形式);

  2.使用squid3代理做请求转发,爬虫设置好squid3代理的地址,每次请求将由squid3自动转发给代理池中的代理。

  代理池结构

  代理池的组件可以大致描述如下:

  1.代理IP的获取/补充渠道,定期把获取到的代理ip加入到代理池中

  2.代理ip的验证机制,定期验证代理池中ip的有效性,并删除掉所有失效的ip

  3.一个web服务,用以提供获取一个随机代理的api

  4.squid3的维持脚本,它定期获取代理池中的可用ip,更新squid中的可转发代理列表

  5.一个调度器,程序的入口,用来协调各组件的运行

  如果不是很理解,没关系,请往下看,我会细说。

  环境说明

  为了实现代理IP池,我们如下的软件环境(列举主要部分):

  1.redis服务器,用以存放代理池相关数据

  2.flask,用以实现提取单个随机代理的api

  3.squid3,用以实现代理转发

  组件1-获取代理ip的渠道

  我们有很多种渠道获取代理ip。笼统一点来说,可以分为两类,免费代理和收费代理。

  免费代理,顾名思义嘛,最大的优点就是免费,不需要什么成本,网上搜一下就能找到。缺点也很明显,免费代理毕竟是免费的,所以质量根本不能保证,大部分无法使用,能用的多数也速度奇慢。

  收费代理的质量相对来说就好多了,不同平台的代理质量和价格上都有些出入,可以自行比较。

  个人学习的话,如果真的资金优先,可以考虑采集免费代理;如果资金相对充裕,可以花钱买一天或一周的代理使用,价格也不贵。我是比较推荐收费代理的,因为免费代理的质量真的不敢恭维。

  企业商用的话,优先考虑收费代理吧,会稳定很多。

  我选择的代理服务商是站大爷,声明一下,我真的没收广告费啊= =。坦言说,让我选择站大爷的最大原因是,它支持账号密码访问的模式。

  没用过收费代理的朋友可能不清楚,使用收费代理平台的接口,从平台上批量提取代理ip或使用代理时,一般都是要绑定你的机器ip的。比如,你的机器ip是123.123.123.123,你就需要事先在平台上把ip绑定为123.123.123.123,这样,你只能通过IP为123.123.123.123的机器从平台提取ip,提取出的ip也只能由ip为123.123.123.123的机器使用,其他ip的机器都不行。当我们有多台机器的时候,就会非常尴尬了,毕竟不能给每台机器都买一次代理吧,很不划算。

  在站大爷上面,除了绑定ip这个方法外,还可以选择使用账号+密码提取/使用代理,选择这个方法的话就不再受到IP地址的限制。讲道理,有点舒服啊= =

  我下面的编码以站大爷为例,使用其他代理服务的可自行编写相关脚本,原理和逻辑都是相通的,部分细节上针对处理即可。

  购买的细节我也不说了,如果需要购买的话,直接去官网购入短效优质代理即可。

转载于:https://blog.51cto.com/13152774/2359100

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值