配置代理池
配置代理池
当有节点连接到server之后,我们就有大量终端节点,此时需要配置代理IP池,才可以真正提供代理服务。 这是因为根据需求不同,我们需要提供不同类型的代理服务。
在IP池列表页面,点击《创建IP池》即可进入IP池创建配置向导

所有IP池都需要填写一个唯一的IP池ID,以及给他增加一个IP池描述方便搜索和索引

随机IP池
随机代理IP池会在每次代理转发的时候,随机的选择一个可用代理资源,代理请求和IP资源供应者没有绑定关系,这很适合做无状态的爬虫访问方案
由于majora的web服务启动后,一定会占用一个端口,同时为了让majora开箱即用,majora框架默认将web端口配置为一个随机IP池。 同时,此随机IP池是全局的,不可修改的
- 在前几个章节我们介绍过终端配置分组,在这里我们可以给随机IP池挂接终端分组,这样只有属于当前分组的节点资源才会加入当前IP池
- 随机IP池因为每次访问都随机切换IP,所以他不需要配置多个端口,因此只需要配置一个工作端口即可

静态IP池
静态代理IP池,每一个端口将会固定的绑定一个IP资源节点。端口和IP资源永远绑定,代理IP出口可以长期不改变,他就是我们常说的长效代理,他特别适合跨境电商等需要保持长期稳定代理IP的场景
由于静态IP池是服务器端口和节点一一绑定,他的配置相对比较复杂
- 首先将可选的终端资源加入到IP池节点资源列表中
- 然后为每一个节点分配一个工作端口
如果节点资源加入到资源列表,但是没有配置工作端口,则会配置失败

一致性哈希智能IP池
一致性哈希智能IP池,他将端口和代理IP资源节点做一执行哈希映射,这样当IP出现不稳定下线的时候,就会有其他的IP资源节点临时顶上。而当这个IP资源恢复了以后,他将重新替换刚刚的临时IP资源节点。 一致性智能IP池可以保持一个相对稳定和固定的IP出口规则,能尽可能的均衡出口IP稳定和IP服务能力有效(也就是说永远不会出现IP无法使用的情况)的能力模型。 一致性智能IP池是一般情况为爬虫代理IP池的推荐方案
- 你可以配置将那些分组的节点资源加入到当前IP池
- 对于一致性哈希IP池,我们一般会在一段连续的端口范围上开启多个代理服务器,这里需要配置
PortSpace表达式,参考本章节末尾关于PortSpace表达式的描述

城市IP池
城市IP池中,每个端口映射一个城市,不同用户映射同一个城市下各自节点实现多节点负载均衡,他适合给C端客人提供基于城市的IP地址供应,这是最适合海外外贸业务的一种场景。

指令IP池
指令IP池,通过用户名参数扩展,实现每次代理根据程序设定传递动态参数。IP池根据用户参数动态决策如何实现IP资源路由绑定,指令IP池可以扩展各种灵活高效的IP绑定方案,如支持国家/城市分配、支持经纬度动态路由等。 我们将在后续扩展各种类型的指令IP池,用以满足各类灵活需要
- 你可以配置将那些分组的节点资源加入到当前IP池
- 我们一般会在一段连续的端口范围上开启多个代理服务器,这里需要配置
PortSpace表达式,参考本章节末尾关于PortSpace表达式的描述 - 需要设定指令类型,用于确定最后路由的时候使用何种指令路由模型
- directive_city :基于城市路由的IP池,本IP池会尽可能保证一个用户请求IP来自配置的城市 若当前城市没有IP资源,则会请求报错(无节点资源)
- directive_gps:基于经纬度路由的IP池,本IP池首先将IP反解析到经纬度上,然后根据用户传递的经纬度参数将请求路由到具体目标经纬度最近的节点上
需要注意,当前我们没有开放指令IP池扩展脚本,用户如果有新的指令IP池模型需求,需要购买我们的系统源码进行二次开发 这也是因为IP池本身的开发很容易带来性能问题,经过决策我们觉得IP池的自定义开发最好是在我们官方指导下进行 当然,随着项目演进,指令IP池类型应该会越来越多

代理鉴权账户扩展-路由指令
majora的大多数用户应该是爬虫开发者,他们本身具备开发能力,这样其实可以在每次代理使用的时候,通过编程控制传递业务参数,majora系统根据参数动态决策如何进行节点选择。 这就引出了指令IP池的概念,即通过指令+参数,进行更细粒度的代理转发控制。
然而在代理协议上(http、https、socks5),并没有额外的传参字段,所以理论上我们无法实现指令传参。 不过,来自社区供应商的接口设计启发,我们发现国外很多IP供应商都是通过扩展鉴权账户名称的字段含义,实现指令传参(也即把鉴权用户名字段的含义做一个扩充,让用户名变成:用户名+额外字段的含义), 这样majora通过解析用户名,然后拆分真正用户名部分和参数部分,就可以获得整个请求的用户名+参数了。
如用户和密码:majora:password,修改用户名语义后:majora-city-南京:password,这里的-city-南京是额外多出来的, majora框架遇到此种格式,则会认为用户请求信息为:(用户名:majora,密码:password,城市:南京),这样。就可以接收到编程传递的动态参数了
这样,majora的指令参数格式定义如下: userName-param1-value1-param2-value2-paramn-valuen 即以用户名开头,连接-作为分割,后面n(n>=0)个参数-参数值的连续字符串
majora支持白名单鉴权,白名单鉴权模式下不会发送密码,自然白名单模式下也就不支持指令参数的概念了
PortSpace表达式
PortSpace表达式是用于定义一段连续端口的表达式,在majora中主要用于配置开放代理IP服务的端口列表,如下样例都是合法的PortSpace表达式
- 一个固定数字:80
- 一个数字范围:3000-3100
- 多个数字:80,82,84
- 多个数字范围 :3000-3100,4000-4100
- 任意个数字,数字范围的组合 80,82,84,3000-3100,4000-4100
