### 代理池 和 Cookie 池 #### 代理池 ##### 准备工作 + 安装 **Redis 数据库** 并启动、安装 **aiohttp (异步请求)**、**asyncio**、**Flask** 等 ##### 代理池的目标 + 基本模块 : **存储模块**、**获取模块**、**检测模块**、**接口模块** + **存储模块** : 负责存储抓取下来的代理,选择 Redis 的 list (可以实现队列,队列更方便校验排序) + 保证获取的代理可以按照一定的先后顺序进行排序 + 方便对之前爬取过的代理进行重新校验 + **获取模块** : 定时在各大代理网站抓取代理 + 代理 : 可以是免费公开代理也可以是付费代理,代理的形式 IP 加 端口 + 尽量从不同源获取,尽量抓取高匿代理,抓取成功后将可用代理保存到数据库 + **检测模块** : 测验代理是否可以使用 + 测试方法 : 设置一个目标网站并设置好代理,如果可以返回内容并且不超时,说明代理可用 + 检测模块 : 使用异步请求 (代理检测比较耗时).代理检测如果可用,就将代理添加到代理池中 + **添加模块** : 如果代理池数量没有达到设置的最大代理数,那么就会循环调用**获取模块**获取代理,同时调用**检测模块**来检测,并将可用的代理添加到代理池 + **接口模块** : 将代理池获取代理的功能架设到 Flask 上,那么只需要访问一个 url 就可以获取一个代理,使用代理十分方便 + **调度器模块** : 设置两个进程 + **进程一** : 循环检测代理的数量,如果代理池数量不足,就调用添加模块不断添加内容 + **进程二** : 不断循环检验代理,这里检验代理是对于代理池中的 可用代理 ,防止代理超出其时效性 + 两个进程都需要设置一个循环校验时间,避免频繁检验和添加 #### cookie 池 + 通过获取每个账号模拟登陆后的 cookies 信息,保存到数据库,定时监测 cookies 的时效性 ##### 准备工作 + 安装 **Redis 数据库**,安装 requests,selenium, Flask 模块 ##### Cookie 的目标 + **存储模块** : 负责存储每个账号的用户名、密码和每个账号对应的 Cookies 信息,同时提供对数据的存储操作 + **生成模块** : 负责获取登陆之后的 Cookie ,这个模块要从数据库中获取账号密码,在模拟登陆目标页面,如果登录成功,就获取 Cookies 保存到数据库 + **检测模块** : 负责定时检测数据库中的 cookies 是否有效,使用 Cookies 请求链接,如果登录状态成功,则是有效的,否则失效并删除,接下来等待生成模块重新登陆生成 Cookies + **接口模块** : 通过 API 提供对外服务的接口,Cookies 越多越好,被检测到的概率越小,越安全