还记得刚学爬虫的时候,选了一个美女网站来练手,效率极高,看到什么都想爬下来。爬得正高兴呢,出现了一连串错误信息,查看后发现因为爬取太过频繁,被网站封了ip,那时起就有了构建代理ip池的念头。

网上搜索一下代理ip就会发现有很多网站提供,但是稳定好用的都要收费,免费倒也有一堆,但大多数都不能用。而且我写的一般都是小爬虫,极少有爬取上白g数据的时候,用收费的代理ip有点浪费。

所以,写了这个代理ip池,从各大代理ip网站爬取收集免费的代理ip,然后一一进行测试,从中筛选出高速可用的ip。得益于Node的异步架构,速度非常快,可以直接在自己的爬虫里调用,每次爬取前获取最新的代理ip,以后妈妈就再也不用担心我的爬虫被封了。

接下来会分为三个部分来讲解,怎么下载,怎么用和怎么写,如果只是想用的话看前两篇就够了。

1.如何下载

有两种途径,一个是通过Github:Card007/Proxy-Pool;

另一种是通过npm添加:npm install ip-proxy-pool;

两种方式都可以,推荐github,有个使用说明,后期我还会进行更新,欢迎start。

2.如何使用

//导入本地模块

3.怎么手动写一个代理ip池

现在来说说自己怎么写一个代理ip池,以西刺为例,用到的工具和方法基本上和上一篇爬取豆瓣top250一样,先是爬取西刺网站前5页的所有免费ip,然后保存在sqlite数据库里,接着通过每一个代理ip来访问某个网址,返回200则是可用,返回其它数字的则删除,来看代码:

//导入相应的库

接下来就碰到了Node的一个大坑,异步。由于异步架构,需要用到Promise来控制,比如在这个代理ip池里,会出现reqeust函数还没有爬完的时候就开始执行验证函数,直接导致错误。

所以我们这里需要分为两组,一组为异步爬取网站信息,另一组为异步验证代理ip,现在来改造一下上面的代码:

//生成网址

接下来分析一下网页内容,这里我们只需要ip,端口,和类型即可:

//分析网页内容

接着来实现数据库的存储删除功能:

//打开数据库

接着将数据库里的ip提取出来,进行测速筛选:

//从数据库提取出来的ip会通过这个类创建一个对象

最后,来写几个运行函数:

var 

大功告成:

完整代码可以通过github查看:GitHub
也可以访问我的网站,获取更多文章:Nothlu.com

代理ip池的ip是重复利用的吗_爬虫被封怎么办?用Node.js构建一个私人IP代理池...相关推荐

  1. 【Node】node.js实现服务器的反向代理,解决跨域问题

    跨域对于前端来说是一个老大难的问题,许多方法如jsonp.document.domain + iframe...都有或多或少的问题,一个最佳实践就是通过服务器nginx做反向代理,但奈何不懂相关知识, ...

  2. node.js获取本机Ip, hostName, mac

    //获取ip地址 getIPAdress() { let interfaces = require('os').networkInterfaces(); for (var devName in int ...

  3. Node.js获取本机IP

    function getIPAdress() {var interfaces = require('os').networkInterfaces(); for (var devName in inte ...

  4. js获取ip地址_(原创)Node.JS实战31:大名鼎鼎的Express!

    Express (http://expressjs.com)是Node.JS中一个简洁.灵活.强大的Web应用框架, 它提供了一系列强大特性,可以帮助我们快速创建各种Web 应用,也可用来编写各种的W ...

  5. 构建一个给爬虫使用的代理IP池

    做网络爬虫时,一般对代理IP的需求量比较大.因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制.这样我们在爬取网站时就需要很多代理IP. 代理IP的获取,可以从以下几个途径 ...

  6. 爬虫单个ip代理设置_爬虫怎样设置代理ip池

    在网络迅速发展的今天,互联网企业层出不穷,爬虫工作者也越来越多,大家都知道,代理ip是爬虫工作者的一个有力助手,今天小编在这里就与大家分享一下如何设置代理池以及伪装成浏览器的方法,请看下面的介绍. 1 ...

  7. 爬虫单个ip代理设置_爬虫怎么设置代理ip池?

    网络技术现在是如此发达,用户换ip再也不用自己手动来,很多ip代理都是傻瓜式操作,智能完成切换,完全不用使用者操心. 像在我们在利用网络爬虫开展数据采集,遇到爬取频率过高.频次过多的问题,会碰到ip被 ...

  8. python通过ip池爬_python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会...

    我们上次说了伪装头部 ↓ 让自己的 python 爬虫假装是浏览器 小帅b主要是想让你知道 在爬取网站的时候 要多的站在对方的角度想问题 其实 这和泡妞差不多 你要多站在妹纸的角度思考 她的兴趣是什么 ...

  9. python爬虫ip代理池_爬虫教程-Python3网络爬虫开发——IP代理池的维护

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 准备工作 要实现IP代理池我们首先需要成功安装好了 Redis 数据库并启动服务,另外还需要安装 Aiohttp.Requests.RedisPy.PyQ ...

  10. 如何维护一个1000 IP的免费代理池

    楔子 好友李博士要买房了, 前几天应邀帮他抓链家的数据分析下房价, 爬到一半遇到了验证码. 李博士的想法是每天把链家在售的二手房数据都抓一遍, 然后按照时间序列分析. 链家线上在交易的二手房数据大概有 ...

最新文章

  1. 程序员取悦女票的正确姿势---Tip1(iOS美容篇)
  2. mysql帐号,权限管理
  3. spring一: 容器以及bean生命周期
  4. 猴年如何抢红包?错过这秘籍可能错过几个亿!
  5. 安卓手机玩游戏卡顿怎么解决_手机卡顿怎么办?教你3个实用解决方法,两分钟解决卡顿难题!...
  6. Android控件Gallery3D效果
  7. ROS入门笔记(十三):分布式通信
  8. c语言实验报告1华科,华科操作系统实验报告
  9. CE教程第九关——处理共用代码
  10. 网络安全等级测评师培训(初级)----2021.6.6
  11. 在VS中生成汇编语言程序(.asm文件)的方法
  12. 李宏毅svm_CAA | 【智能自动化学科前沿讲习班第1期】国立台湾大学(位于中国台北)李宏毅教授:Anime Face Generation...
  13. 由《爆裂鼓手》引发的产品思考
  14. 商品详情页系统架构-笔记12 - 商品详情页整体架构组成+前端介绍
  15. Word插入的表格如何调整长和宽
  16. 2022年终几段晋升、述职等汇报文案参考
  17. php 超级管理员,WordPress超级管理员功能,超权限管理用户,可修改登录名
  18. 破开C语言暗夜的第二道光 —— 数据与数据类型(1)
  19. Maven配置阿里云HTTPS镜像地址
  20. 引流脚本到底怎么样?是不是骗人的?没有效果?

热门文章

  1. java对日期设置时间和对日期加减周
  2. 在 Go 语言中使用 Log 包--转自GCTT
  3. 小程序键盘遮挡输入框情况之一
  4. [洛谷P3381]【模板】最小费用最大流
  5. 疯狂工作流讲义(第2版)基于Activiti6.x电子书
  6. 在linux上使用scp命令拷贝一个目录到另一台服务器的时候报not a regular file错误的解决办法...
  7. C++关键字(static-register-atuo-extern-volatile-const)
  8. ibatis学习(一)--ibatis介绍以及用例 [转]
  9. GIT学习笔记——1.2 起步 - Git 简史
  10. 由数据库连接池想到的----处理他人未释放的资源