基于Redis实现免费的IP代理池
基于Redis实现免费的IP代理池
作者: 彩色铅笔
前言:
首先表示抱歉,春节后一直较忙,未及时更新该系列文章。
近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集。
这时候,前面有园友提到的IP代理就该上场表演了。
IP代理池设计:
博主查阅与调研了多方资料,最终决定先通过爬取网络上各大IP代理网站免费代理的方式,来建立自己的IP代理池。
最终爬取了这家家较为优质的代理IP网站:
1.西刺代理 http://www.xicidaili.com
2.快代理
3.逼格代理
4.proxy360
5.66免费代理
简单点说就是把在采集的站源里面已知具有反爬机制的站源打上标签,修改所有的爬虫服务,遇到有此标签的站源先从IP代理池随机获取可用的代理IP再进行数据爬取。
安装Redis:
首先,我们需要一台服务器来部署我们的Redis服务(先不考虑集群什么的)。
博主一向不喜欢弹个小黑框,不停敲命令行进行操作的各种方式。个人认为,GUI是推动计算机快速发展的重要因素之一(非喜勿喷)。
翻阅了资料,找到了简易的redis安装客户端(windows版本,安装简单到爆)
话说博主就简单的修改了一下内存限制,设置了允许外网连接,设置了一个密码,也没多改其他东西。
注意,配置文件在安装完成后的目录下,名称是:Redis.window-server.conf
熟悉一点都知道,redis的c#驱动ServiceStack.Redis,NuGet就可以直接安装。比较坑的是4.0版本后商业化了,限制每小时6000次,要么下载3.9版本,要么考虑其他的驱动,例如:StackExchange。
下面附上博主基于ServiceStack写的 RedisManageService,由于业务简单,只使用到了几个API,大家凑合着看。
免费代理IP抓取服务实现:
我们首先设计一个最简单的IpProxy对象:
然后实现一个基于Redis的Ip代理池操作服务
提供简易的三个方法:添加代理IP、删除代理IP、随机获取一条代理IP
我们还需要一个爬虫服务,来爬取我们需要的免费代理IP数据:
最后采集具有反爬机制的html页面的时候,使用代理IP,这个相信大家都会,设置一下webRequest的Proxy参数即可。
webRequest.Proxy = new WebProxy(ip, port);
以上,就实现了一个基于redis的免费代理IP池。我们被封IP的爬虫服务又满血复活了,继续采集新数据去。
前言:
首先表示抱歉,春节后一直较忙,未及时更新该系列文章。
近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集。
这时候,前面有园友提到的IP代理就该上场表演了。
IP代理池设计:
博主查阅与调研了多方资料,最终决定先通过爬取网络上各大IP代理网站免费代理的方式,来建立自己的IP代理池。
最终爬取了这家家较为优质的代理IP网站:
1.西刺代理 http://www.xicidaili.com
2.快代理
3.逼格代理
4.proxy360
5.66免费代理
简单点说就是把在采集的站源里面已知具有反爬机制的站源打上标签,修改所有的爬虫服务,遇到有此标签的站源先从IP代理池随机获取可用的代理IP再进行数据爬取。
安装Redis:
首先,我们需要一台服务器来部署我们的Redis服务(先不考虑集群什么的)。
博主一向不喜欢弹个小黑框,不停敲命令行进行操作的各种方式。个人认为,GUI是推动计算机快速发展的重要因素之一(非喜勿喷)。
翻阅了资料,找到了简易的redis安装客户端(windows版本,安装简单到爆)
话说博主就简单的修改了一下内存限制,设置了允许外网连接,设置了一个密码,也没多改其他东西。
注意,配置文件在安装完成后的目录下,名称是:Redis.window-server.conf
熟悉一点都知道,redis的c#驱动ServiceStack.Redis,NuGet就可以直接安装。比较坑的是4.0版本后商业化了,限制每小时6000次,要么下载3.9版本,要么考虑其他的驱动,例如:StackExchange。
下面附上博主基于ServiceStack写的 RedisManageService,由于业务简单,只使用到了几个API,大家凑合着看。
免费代理IP抓取服务实现:
我们首先设计一个最简单的IpProxy对象:
然后实现一个基于Redis的Ip代理池操作服务
提供简易的三个方法:添加代理IP、删除代理IP、随机获取一条代理IP
我们还需要一个爬虫服务,来爬取我们需要的免费代理IP数据:
最后采集具有反爬机制的html页面的时候,使用代理IP,这个相信大家都会,设置一下webRequest的Proxy参数即可。
webRequest.Proxy = new WebProxy(ip, port);
以上,就实现了一个基于redis的免费代理IP池。我们被封IP的爬虫服务又满血复活了,继续采集新数据去。
yongbuyanbai2- 帖子数 : 5146
注册日期 : 12-08-31
您在这个论坛的权限:
您不能在这个论坛回复主题