历时大致两个月,到现在终于完成了高可用分布式代理IP池(https://github.com/SpiderClub/haipproxy),目前开源在了Github上。写这个项目的原因主要有两点,一是本人平时的部分工作需要和网络爬虫打交道,代理IP在有的时候还可以发挥非常重要的作用,调研过一些开源的代理IP采集程序,发现在爬取、解析、校验、资源调度等这些方面总有一些不尽人意的地方;二是和一个网友(不严格的说算得上是伯乐)的交流让小编有了关于使用Scrapy来写分布式网络爬虫的一些想法,正好还可以借助这个机会来尝试证实这些想法。

  架构设计

  这篇文章的目的是阐述haipproxy的主要架构和流程。该项目模块是

  基于Scrapy和Redis的分布式网络爬虫,用作IP爬取和校验,对应于项目的crawler

  基于Redis实现的分布式任务调度工具,对应于项目的scheduler和redis_util.py

  Crawler分为代理爬取和校验,两者实现思想类似,主要使用Scrapy的spider_idle信号和DontCloseSpider异常来阻止Scrapy在没有数据的时候关闭,灵感来自scrapy-redis(https://github.com/rmax/scrapy-redis)。

  启动调度器,包括代理网络爬虫调度器和校验网络爬虫调度器。调度器会读取rules.py中待爬取的网站,将其编排成任务存入各个任务队列中

  启动各个网络爬虫,包括IP爬取和校验程序。项目中网络爬虫和调度器都是高可用的,还可以根据实际情况进行分布式部署,无需改动代码。由于本文的目标不是写成该项目的详细使用文档,所以省略了如指定启动网络爬虫类型和调度器类型的介绍

  代理IP采集网络爬虫启动后会到对应的任务队列中获取任务并执行,再把获取到的结果存入一个init队列中

  init队列由一个特殊的校验器HttpbinInitValidator进行消费,它会过滤掉透明代理,再把可用代理输入各个Validated队列中

  调度器会定时从Validated队列中获取代理IP,再将其存入一个临时的队列。这里用一个临时队列是为了让校验更加公平,如果直接从Validated队列中获取资源进行校验,那么会增大不公平性

  这时候各个校验器(非init校验器)会从对应的临时队列中获取待校验的IP并对其进行校验,此处省略校验细节

  校验完成后再将其放回到Validated队列中,等待下一轮校验

  请求成功率(体现为分数)、响应速度和最近校验时间满足settings.py所配置要求的代理IP将会被网络爬虫客户端所消费

  为了屏蔽各个调用语言的差异性,目前实现的客户端是squid客户端,它还可以作为网络爬虫客户端的中间件

  到此,整个流程便完了。

转载于:https://blog.51cto.com/14059916/2352798

太阳软件分享丨分布式ip代理池,可用率超高,赶快试试吧!相关推荐

  1. 墨墨背单词刷分享链接访问量(动态获取IP代理池)

    墨墨背单词 分享链接刷点击量(自动获取最新IP代理池方式),以提高单词上限. 运行方式 1 Python 环境运行main.py 1.1 克隆本仓库 Github仓库 Momo-Share-Fresh ...

  2. python代理ip多进程_静听网+python爬虫+多线程+多进程+构建IP代理池

    目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是晚上睡觉听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但 ...

  3. 静听网+python爬虫+多线程+多进程+构建IP代理池

    目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是晚上睡觉听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但 ...

  4. python ip代理池_python实现ip代理池功能示例

    本文实例讲述了python实现ip代理池功能.分享给大家供大家参考,具体如下: 爬取的代理源为西刺代理. 用xpath解析页面 用telnet来验证ip是否可用 把有效的ip写入到本地txt中.当然也 ...

  5. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  6. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...

  7. python开源ip代理池_[技术]基于python实现的短效代理ip池程序

    我们在写爬虫程序的时候,或者是抓取数据的时候,遇到一些发爬不是很厉害的网站,一般都是通过代理ip来实现绕过对方的反爬措施. 一般好的代理都是需要付费的,免费的代理速度慢,而且难找.市面上也有很多对应的 ...

  8. Python搭建自己[IP代理池]

    IP代理是什么: ip就是访问网页数据服务器位置信息,每一个主机或者网络都有一个自己IP信息 为什么要使用代理ip: 因为在向互联网发送请求中,网页端会识别客户端是真实用户还是爬虫程序,在今天以互联网 ...

  9. Python爬虫实战之:快代理搭建IP代理池(简版)

    目录 前言 项目背景 项目简介 前期准备 讲解1:项目搭建 讲解2:安装 faker 库获取user-agent 讲解3:分析 "快代理" 页面 讲解4:筛选有效IP 讲解5:Pa ...

最新文章

  1. mysql数据库---授权语句以及备份
  2. 5G/4G:空口MAC层架构的简要变化。
  3. Self-Tuning Spectral Clustering论文阅读和代码理解
  4. 使用C#操作XML文件
  5. ios项目中使用gcd的场景_Redis在PHP项目中的实际应用场景
  6. Java的String理解
  7. securecrt使用_SecureCRT会话丢失原因及解决方法
  8. hdu 1025 Constructing Roads In JGShining's Kingdom(DP + 二分)
  9. IntelliJ IDEA Maven配置 MAC系统
  10. 记录一次使用ghidra逆向分析斐讯K3官改固件web登录验证的经历
  11. c语言求解二元一次方程,c语言,求解二元一次方程
  12. 课程设计:波形发生器
  13. 83岁清华奶奶,62岁 IT 大爷被阿里40万年薪争抢,你大妈始终是你大妈,你大爷永远是你大爷!...
  14. qemu-img命令
  15. CocosCreator接入穿山甲广告2-插屏广告
  16. uni-app 在mac电脑连接安卓手机进行真机调试
  17. 90% 的前端都会使用 ES6 来简化代码,你都用过哪些?
  18. 一个大牛的acm历程(看着就要颤抖
  19. 什么叫做社交电商,社交电商怎么做?
  20. HRBUST2343 巴啦啦能量(字符串,技巧)

热门文章

  1. Hardware/Firmware/Software的区别
  2. 火绒剑(专业人员使用的系统进程分析工具)
  3. zabbix监控方式(03) - 通过SNMP服务协议监控路由器/交换机
  4. 最干净利索且下载快速的maven3.6.3安装方式和阿里云镜像
  5. mysql 密码修改
  6. 大家来找茬辅助工具超级简易版
  7. 如何删除CSDN自己上传的资源(2021年12月29亲测有效)
  8. 微信机器人java-wechaty
  9. javascript生成二维码
  10. docker挂载 -v