数据抓取

网络抓取代理:哪种类型最适合每种任务?

比较用于网络抓取的住宅、ISP、移动和数据中心代理,包括成本、轮换、反爬虫处理和最佳适用场景。

Matt Brown

Matt Brown

2022年12月13日 · 更新于 2026年8月27日 · 1 分钟阅读

选择用于抓取的代理,其实是关于目标网站的问题,而不是关于代理本身的问题。没有防护的网站和处于DataDome防护之下的网站需要完全不同的配置,对前者使用住宅代理的价位是浪费钱,对后者使用数据中心IP则是浪费时间。

本指南将介绍哪种代理类型适合哪种抓取任务,如何运行它们而不被封锁,以及在什么情况下抓取API比原始代理更合适。

四种类型,针对抓取场景

类型IP来源速度封锁率成本最适合的抓取任务
数据中心主机托管商最快在有防护的网站上较高最低无防护网站、API、批量抓取
住宅消费者ISP,真实家庭中等中等,按GB计费零售、旅游、搜索,以及任何有防护的场景
ISP消费者ISP,数据中心托管低到中等按IP按月计费已登录会话、长时间运行的任务
移动移动运营商中等到较慢最低最高最难攻克的目标、应用API

有一点需要纠正,因为相反的说法被广泛传播,本文之前也重复过这个错误:数据中心IP并不是由ISP分配的。它们注册在主机托管商和云服务商名下,根本不会经过消费者互联网服务商。这正是它们容易被识别的原因:其IP段是公开的,网站可以一眼就将其归类。

ISP代理和移动代理对抓取来说都很重要,但通常在这类对比中被忽略。只要抓取涉及登录,ISP代理就是答案,因为其地址保持不变。移动代理则是在其他方法都失效时的最后手段,用于对付最难攻克的目标。

轮换与会话处理

在保持不被封锁方面,轮换策略比代理类型更重要。

按请求轮换为每次请求提供一个新IP。这是收集独立页面(如商品列表、搜索结果、目录条目)时的正确默认选择。没有任何单一地址会积累可疑的模式。

粘性会话在设定的时长内(通常为1到30分钟)保持同一个IP。当请求之间相互依赖时应使用此方式:携带游标的分页、登录后的操作、多步骤的结账流程。如果会话在进行中途更换IP,看起来就像账号被盗,从而触发验证挑战。

实用规则是:除非流程中某个环节需要连续性,否则按请求轮换;如果需要连续性,则保持能覆盖该环节的最短粘性窗口。

请求速率与并发数

大多数封锁是由速率而非代理类型引起的。一个住宅IP每秒请求网站20次,比一个数据中心IP每10秒请求一次更明显是自动化行为。

  • 单IP速率。 在有防护的网站上,让每个地址保持大约每2到5秒一次请求。在无防护的网站上,你可以更激进得多。
  • 并发数。 总吞吐量等于并发地址数乘以单IP速率。要安全地达到每秒10次请求,你需要大约30到50个地址同时运作,而不是让10个地址速度提高三倍。
  • 随机化。 固定的间隔本身就是一种特征标志。加入抖动,使间隔时间产生变化。
  • 失败时退避。 当错误率上升时,应放慢速度而不是加大重试力度。在被封锁的情况下继续重试,正是软性速率限制演变为硬性封禁的原因。

请求头与指纹

IP能让你到达门口。但请求本身也必须在到达后看起来正常。

  • 发送完整、连贯的请求头集合。 真实浏览器会以一致的组合方式发送AcceptAccept-LanguageAccept-EncodingUser-AgentSec-Ch-Ua。在一个几乎空白的请求中只有一个User-Agent,是一个明显的机器人特征。
  • 保持请求头信息与IP的一致性。 一个德国IP发送Accept-Language: en-US,在你进行地理定位时,这是一个值得避免的不匹配。
  • 让TLS和HTTP行为与你声称的客户端相匹配。 高级系统会对TLS握手和HTTP/2帧顺序进行指纹识别,因此一个自称是Chrome的Python客户端无论请求头如何设置都会被检测出来。
  • 在页面需要时使用真实浏览器。 通过JavaScript渲染内容的网站需要无头浏览器,而无头浏览器本身也有需要管理的指纹特征。

现代反机器人系统

Cloudflare、DataDome、PerimeterX和Akamai并非简单的IP黑名单。它们会综合评分地址信誉、请求指纹、行为模式以及JavaScript验证挑战的结果。

这带来了两个后果。仅仅轮换IP并不能击败它们,因为你的指纹并未改变。而住宅IP是必要但不充分的条件:它消除了最容易被识别的信号,但留下了更难处理的部分。

当你遇到这种情况时:

  1. 认真解读响应内容。 带有验证挑战页面的403与429速率限制是不同的,需要不同的解决方法。要检查响应正文,而不仅仅是状态码。
  2. 先放慢速度。 速率是最容易调整的因素,往往也是真正的原因。
  3. 沿信任阶梯向上移动。 从数据中心到住宅,从住宅到移动。
  4. 渲染验证挑战。 如果网站需要执行JavaScript,那么无论使用哪种IP,纯HTTP客户端都永远无法通过。
  5. 重新考虑方案。 如果某个目标在重试上花费的成本超过了数据本身的价值,托管API会比继续硬扛更划算。

成本、量级以及何时使用API

估算一个项目要从页面大小开始。典型的HTML页面为0.5到2 MB,因此100,000个页面大约相当于50到200 GB。渲染JavaScript会使这个数字增加数倍,因为你还要拉取脚本、样式表和图片。

真正决定账单金额的是封锁率。一个失败率为40%并进行重试的配置,会为该带宽支付两次费用。失败率高的廉价代理,其每个成功页面的成本往往比昂贵代理更高。

当你能够掌控抓取器、了解目标网站,并希望获得最低的单位成本时,原始代理是正确的选择。当目标网站强力反制、或者你原本需要维护浏览器指纹和验证挑战求解器、又或者工程时间比资金更稀缺时,托管API是更好的选择。

Shifter的Web Scraping API在单一请求背后处理代理轮换、JavaScript渲染和验证挑战,而SERP API专门为搜索结果提供同样的功能,搜索结果原本是维护起来较为棘手的目标之一。对于原始代理而言,住宅代理ISP代理分别覆盖了会话问题的两端,当前费率可查看定价页面

简要决策框架

  • 目标没有反机器人防护,且你需要低成本获取大量数据:数据中心代理。
  • 目标进行速率限制或验证挑战,不涉及登录:轮换住宅代理。
  • 抓取需要已登录的会话,或必须保持同一身份:ISP代理。
  • 目标能够击败住宅代理,或你需要应用层级的访问权限:移动代理。
  • 目标的维护成本超过数据本身的价值:抓取API。

大多数实际项目会混合使用这些方式。数据收集运行在轮换住宅代理上,少数需要身份验证的仪表盘运行在ISP代理上,而那个难以攻克的目标则通过API来处理。

结论

用于抓取的代理没有单一的最佳选择。要根据目标的防护强度来匹配代理类型,根据请求之间是否相互依赖来匹配轮换方式,并且当出现封锁时,把请求速率作为首先要调整的因素。

关于更广泛的分类,请参阅代理类型;关于该用例的完整介绍,请参阅网页抓取概览。

常见问题

什么是网页抓取代理,它们是如何工作的?

网页抓取代理会使用不同的IP地址转发你的抓取程序的请求,因此目标网站看到的是代理的地址,而不是你服务器的地址。将请求分散到许多地址上,可以让每个地址的请求量都低于网站开始封锁的速率,这正是实现大规模数据采集的关键。

哪种类型的代理最适合网页抓取?

这取决于目标网站的防护强度。对于没有防护的网站,用数据中心代理抓取成本最低。有速率限制或机器人检测的网站,需要使用轮换住宅代理。需要登录的目标网站,需要ISP代理来保持会话稳定性,而最难对付的目标则需要移动代理。大多数项目会同时使用不止一种类型。

数据中心代理对抓取来说够用吗?

通常是够用的。如果目标网站没有机器人防护、公开了类似API的结构,或者根本不在意这些,数据中心代理抓取速度更快,而且比住宅代理便宜得多。但在运行Cloudflare、DataDome等防护的网站上,它们会失效,因为仅凭IP段本身就足以触发验证挑战。

一个网页抓取项目需要多少代理?

应根据请求速率而不是页面数量来估算。在有防护的网站上,安全的速率大致是每个IP每隔几秒发一次请求,因此如果要持续维持每秒10个请求,大约需要30到50个并发地址。使用轮换住宅代理池时,你不需要自己确定池的大小,只需控制并发数,由网关来分配。

抓取代理的费用是多少?

住宅流量的价格从大批量使用时每GB约1美元,到入门套餐每GB五六美元不等,而一个典型的HTML页面大小为0.5到2MB。数据中心代理便宜得多,移动代理则贵得多。对大多数项目来说,决定性因素不是每GB的价格,而是有多少请求被封锁并需要重试。

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.75/GB。

立即开始