帮助中心

   

热门搜索: 免费续期  推广  永久会员

学习一个代理IP池的架构

有一个自建的代理IP池,无论是在工作使用中还是在生活使用中,都是非常方便的。这样我们就不需要去一一找代理IP,或者是重复购买代理IP服务。迅联加速下面介绍一个关于代理IP池建设的架构。

代理IP池的架构设计:

1、存储

我们把抓到的代理存到mysql中, 具体的表设计如下:

CREATE TABLE `proxy` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`ip` varchar(15) NOT NULL,

`port` int(10) unsigned NOT NULL DEFAULT ‘3128’,

`type` smallint(5) unsigned NOT NULL DEFAULT ‘0’,

`country` varchar(2) DEFAULT NULL,

`state` varchar(15) DEFAULT NULL,

`enqueue_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`last_check_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`used_times` int(11) NOT NULL DEFAULT ‘0’,

`from_url` varchar(1024) NOT NULL DEFAULT ”,

PRIMARY KEY (`id`),

KEY `idx_ip_port` (`ip`,`port`)

) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8mb4

2、抓取和验证

代理的获取分为两个线程, 一个线程使用爬虫不断扫描已知的代理的网站, 获得代理的地址, 验证后入库. 另一个线程扫描库里的代理, 验证是否依然可用.

3、接口

代理服务对外主要提供一个接口, get_proxy. 需要使用代理的程序每次调用这个接口获得一个可用代理使用. 每次尽量选取使用次数最少但是存活时间最长的代理.

4、实现

把每个网页抽取代理的xpath配好, 之后就等着在数据库看数据就好了。

使用 django 简单实现了一个后台, 大概是这样的:

 

学习一个代理IP池的架构
  经过测试, 一般代理的存活时间往往在十几分钟左右, 但是这些代理网站的更新时间一般也在十几分钟, 而且由于找到了大概几十个网站, 扫一遍并验证花费的时间可能在几个小时左右. 所以维持一个可用代理在1k左右的代理库是不成问题的.

get_proxy 的接口如下:

 

学习一个代理IP池的架构
  经过这一步之后,我们就已经能够把这些免费提供使用的代理IP给抓取到我们的代理池当中,可以留着等到需要使用的时候配置即可。

关闭
19907977089
关注微信公众号,免费送30分钟时长