大多数关于住宅代理池的描述都把它说得像一个仓库:大量地址堆放在架子上,等着被分发出去。这种思维模型是错误的,而且会带来实际的运营意外,因为代理池不是库存。它是一群不断加入和离开的真实家庭连接,几乎所有让高级团队对代理池行为感到困惑的问题,都源于这一个事实。
下面说明代理池实际上是如何组建的、“刷新”在机制上意味着什么,以及你在设计时应该考虑的后果。
代理池是如何建立的
住宅代理池中的地址属于真实用户的家庭网络连接,这意味着提供商无法像购买数据中心地址段那样直接购买它们。它们必须通过贡献获得。
主流的机制是通过软件参与。用户安装一个应用程序,或者安装内嵌了某个 SDK 的应用程序,作为交换,该应用会提供某种好处:免广告等级、付费功能、少量报酬、某种服务的访问权限。当该设备在线且足够空闲时,它就可以代表网络承载一次请求。提供商与嵌入该 SDK 的开发者保持合作关系,而这些关系决定了代理池的地理和网络分布形态,这也是为什么两家标称总量相近的提供商,在任何特定国家的表现可能会有很大差异。这种安排的伦理问题,以及如何审查它,是提供商如何合乎伦理地获取其 IP一文的主题。
值得内化的结论是:代理池的构成取决于哪些应用在哪些地方受欢迎。它不是均匀分布的,不是中心化规划的,并且会随着这些应用用户的增减而变化。
“刷新”实际上意味着什么
代理池会持续更替,原因与提供商毫无关系。
当用户关闭应用、把手机放进口袋、离开家、或者睡觉时,设备就会离线。当路由器重启或 ISP 的租约到期时,家庭连接会获得新的地址,因此同一个家庭明天可能会以不同的地址出现。参与者会退出。新的参与者会加入。除此之外,提供商自身也会移除那些信誉变差或行为不可靠而退化的地址。
这些都不是维护窗口期。这就是稳定状态,持续在后台发生,这也是为什么住宅代理池更适合被建模为一种流动,而不是存量。
代理池规模不等于可用性
这是问题的实际核心所在,也是标称数字容易误导人的地方。
公布的代理池数字通常是累计值:网络在某段时期内见过的地址总数。真正决定你使用体验的是并发可用性,也就是此刻、在你请求的国家、在你所应用的筛选条件下,有多少个不同的地址可以为你服务。这两个数字相差可达几个数量级,而只有后者才是限制你任务的因素。
有三件事会进一步缩小这个数字。地理位置:全球总量并不能说明你所在市场的情况,这正是国家可用性一文所论证的。筛选条件:添加一个城市或 ASN 会大幅削减符合条件的地址集合,因为只有满足全部条件的地址才算数。以及时间:因为代理池跟随人类活动而变化,同一个国家在当地晚间时段会比凌晨四点更”深”。
结果是,“代理池有多大”这个问题几乎无法给出有用的答案,而”在我的筛选条件下、在我的并发量下、在我运行的时段,我实际能得到多少个不同的地址”这个问题,二十分钟内就能测量出来,而且正是真正重要的数字。
更替解释的五种行为
一旦你把代理池建模为一个群体而不是库存,一系列原本令人费解的行为就会变得显而易见。
粘性会话有时会提前结束。 你请求了一个十分钟的会话,结果只持续了四分钟,因为底层设备离线了。粘性会话是尽力而为地保持一个地址一段时间,而不是对基础设施的租约,假设并非如此的代码会间歇性地出错。把它当作正常事件处理:检测到变化就重启流程,而不是把它当作错误,参见粘性代理与轮换代理对比。
同一个地址反复出现。 轮换机制是每次独立选择,而不是不重复地循环遍历一份列表,因此重复是预期之中的,而且当狭窄的筛选条件缩小了符合条件的集合时,重复会变得频繁。这是算术问题而不是故障,也是IP 不轮换一文中涉及的原因之一。
不同地址之间的性能差异很大。 这些是消费者连接,各自有自己的带宽、拥塞状况和家庭使用情况,因此延迟的分布比数据中心基础设施要宽得多。百分位数是描述它的诚实方式;平均值会掩盖真正影响你计划安排的尾部情况。
可用性随一天时间变化。 一个在 20:00 成功、在同一市场的 04:00 却举步维艰的任务,通常是看到了代理池深度的昼夜变化,而不是目标发生了变化。
同一任务的两次运行结果不同。 不同的地址,不同的网络,不同的信誉。一定程度的波动是内在的,把每一次波动都当作回归问题会浪费大量的调查精力。
为一个群体而设计
对于在此基础上进行构建的任何人,都有一些实际的后果。
把地址当作一次性消耗品,把路由当作你要管理的单位。你从来没有真正”选中”某个地址,也无法保留它,因此健康状况的追踪应该在路由和会话层面进行,这正是大规模监控代理健康状况和构建代理管理器中所采用的模型。
让任务可恢复且幂等。如果一个会话可能在流程中途消失,那么该流程就需要能够在不重复工作、不损坏记录的情况下重新启动。
有意识地选择 TTL。长 TTL 只是一个请求,而不是保证,在消费者连接上要求一个小时,会让你在流程中途遭遇掉线。只请求流程实际需要的时长。
测量你的有效代理池,而不是读取营销数字:在你真实的筛选条件下抽样几百次出口,统计不同的地址和组织数量,并在你实际运行的时段重复该操作。这个数字,而不是标称数字,才应该用来指导并发量和分配方面的决策,此外还可以参考你实际需要多少代理 IP中的推理。
并根据这个群体的特性来安排调度,因为在一个小市场的深夜时段运行一个高负载任务,等于是在无谓地与代理池对抗。
从外部看,良好的代理池管理是什么样子
你无法审查提供商的内部情况,但其效果是可以观察到的。在你运行的各个时段都能保持一致的成功率,说明代理池在你所在的市场中足够深,而不仅仅是总量上很大。你的出口样本中消费者 ISP 组织的分布很广,说明这是真正的住宅供应,而不是被稀释过的,这正是识别被当作住宅出售的数据中心 IP一文中的检验方法。地理定位与目标实际认定的位置相符,而不仅仅是查询服务所报告的位置,说明地理标注得到了维护。而一个能够坦然描述其获取方式而不感到不安的提供商,也在某种程度上告诉了你其代理池整体管理方式。
结论
住宅代理池是一个群体,不是库存。它是通过参与组建而成,而不是购买而来,其形态取决于人们实际使用的软件,并且随着设备离线、地址重新分配、参与者的加入和退出而持续更替。正是这一个特性解释了粘性会话提前结束、地址反复出现、延迟差异很大、可用性随一天时间变化,以及两次相同的运行产生不同结果等现象。请针对这一点进行设计:把地址当作一次性消耗品,按路由追踪健康状况,让流程可恢复,选择与流程相匹配的 TTL,并在你自己的筛选条件下、在你自己的运行时段测量你的有效代理池,而不要依赖描述的是与限制你的因素无关的其他东西的标称数字。
住宅代理正是建立在这样的代理池之上,覆盖 195 个国家,支持国家、地区、城市和 ASN 筛选,并采用按 GB 计价,因此测量你自己的有效可用性只需付出测试所用的带宽成本。