返回博客
网络爬虫技术
Raluca PenciucLast updated on Mar 31, 20262 min read

轮换代理:您需要了解的一切

轮换代理:您需要了解的一切

当你刚开始学习网络爬虫的基础知识时,是否曾有过“天哪,这得用代理才行”的顿悟时刻?那么,请做好再次经历这种顿悟的准备吧,因为轮换代理是网络爬虫功能的进阶之选。

不相信吗?让我们先看看不轮换代理时它们能带来的好处,再看看轮换后能获得的额外优势。以下是固定IP带来的效果:

  • 初始IP被封禁后,你可以重试抓取该页面/网站。
  • 你可以手动切换地址,绕过那些使用地理定位限制内容的网站。
  • 不会暴露您的真实位置。
  • 通过添加请求延迟,您可以从采取了反爬虫措施的网站中提取数据。

这些功能固然不错,但让我们看看当您加入新的“旋转”机制(双关语)后会发生什么:

  • 爬虫会持续发送请求,直到成功获取您所需的信息。
  • 只要您在任何国家/地区拥有代理,就能轻松访问受地理限制的内容。
  • 网站甚至不会察觉到有机器人正在访问它们。
  • 无需降低请求速度,即可从任何网站获取数据。

以上只是简要概述了这些差异,但效果相当惊人,不是吗?那么让我们深入探讨,了解这些优势是如何实现的!

什么是轮换代理?

所谓轮换代理,是指每次发送请求时自动在不同 IP 之间切换的过程。理论上这可以手动操作,但这意味着您无法将待抓取的 URL 列表排入队列。相反,您必须先分配一个代理,发送请求,再分配另一个代理,发送另一个请求,如此循环往复。相信您能看出这种方式效率有多低。

要实现自动代理轮换,你需要一个新的中间环节——换句话说,就是“代理的代理”。这个新“中间人”是一台能够访问你整个代理池的服务器。因此,无需你亲自翻阅 IP 列表,服务器会代劳。你只需下达指令即可。

以下是使用代理轮换程序进行数据抓取的详细流程:

  • 用户向代理管理服务器发送请求。
  • 服务器随机选择一个代理(除非另有指定),并将请求发送至该代理。
  • 代理随后将请求转发至最终目标——即包含待提取数据的网页。
  • 响应数据沿相同路径返回给用户。

这四个步骤将不断重复,直到用户获取到所需的所有信息。每次请求都会通过一个新的代理,从而模拟出众多不同用户同时访问该网站的效果。

因此,本质上,轮换代理无需您额外操作。这正是其妙处所在。对于本就旨在无需用户费力即可收集海量信息的工具而言,这进一步增强了自动化程度。

当然,要实现IP轮换,首先必须拥有一个代理池。但鉴于代理质量参差不齐,您还需要筛选出合适的IP地址。以下是两种主流选择:

数据中心代理 vs. 住宅代理

代理的分类方式多种多样。您可以依据匿名性、访问权限或来源进行区分。对于网页抓取项目而言,后者是最关键的因素。从这个角度来看,代理通常分为数据中心代理和住宅代理两类。让我们分别探讨一下。

轮换数据中心代理

数据中心之所以得名,源于其在在线存储和共享信息方面无与伦比的能力。所谓“存储在云端”,其实只是“存储在数据中心,只要有互联网连接就能访问”这一表述的更简洁说法。简短的表述显然更顺口。

数据中心本质上是由大量互联服务器组成的庞大集合,拥有巨大的总存储容量以及维持其运行的基础设施。正如您可能猜到的,数据中心代理正是托管于这些架构之中。要获取代理,您必须创建一台虚拟服务器,在其上安装操作系统,然后安装专用软件来将IP地址配置为代理。

高效数据中心代理的关键在于找到服务器与IP地址之间的平衡点。一台服务器可以承载多个IP地址,但每个IP都会增加额外开销。到一定程度时,单台服务器的收益将递减,不得不创建新的服务器。管理服务器和IP地址非常耗时,因此大多数开发者更倾向于直接从专业公司租用或购买这些代理。

这些 IP 地址并不隶属于互联网服务提供商(ISP)。相反,您需要与数据中心所有者或第三方合作,这些机构利用存储空间搭建代理并将其分发给客户。

它们之所以成为网络爬虫的热门选择,是因为:

  • 由于采用大规模部署模式,其成本远低于住宅IP;
  • 其卓越的速度意味着您能在更短时间内收集更多数据;
  • 得益于数据中心稳固的基础设施,其可靠性极高;
  • 可以轻松从同一服务器群中批量购买或租赁。

当然,万事皆有两面性。对于数据中心代理而言,其缺点包括:

  • 其IP地址更容易被警惕的网站识别;
  • 来自同一数据中心的所有代理共享子网标识符,因此更容易遭到全面封禁。
  • 由于数据中心数量有限,构建包含各国IP的代理池难度较大。

通过使用轮换的数据中心代理,您可以成功访问并抓取大多数网站。由于每次新请求都来自不同的IP,因此追踪和封禁抓取工具相对困难。

但对于先进且热门的网站,情况则截然不同。亚马逊、谷歌等知名网站每天都要应对爬虫和其他机器人。因此,被察觉的可能性要大得多。此外,由于同一数据中心的所有IP都共享子网,数据中心代理始终存在已被封禁的风险。

最关键的是您选择哪家代理服务提供商,以及他们如何管理IP资源。例如,WebScrapingAPI的数据中心代理属于私有代理,几乎不会被列入黑名单。

轮换式住宅代理

如果说数据中心是新兴的高科技替代方案,那么住宅IP便是久经考验的可靠选择。住宅IP是通过互联网服务提供商(ISP)连接到网络的真实设备。这些代理与普通用户几乎无法区分,因为从某种意义上说,它们本身就是普通用户。

搭建数据中心代理池需要一定的计算机科学知识、资金以及合适的软件。另一方面,收集住宅IP则要复杂得多。首先,您必须说服用户允许您在其设备上安装专用软件,以便您远程访问。其次,用户必须始终保持设备开机状态,否则代理有时将无法使用。

鉴于这种方式带来的不便以及所需的信任度,开发者从专业服务商处租用住宅代理显然要简单得多。

与数据中心代理相比,住宅IP具有以下几个关键优势:

  • 住宅IP由互联网服务提供商(ISP)支持,在浏览网页时表现得如同普通用户,从而使爬虫更难被检测到;
  • 每个IP地址都是唯一的,因此即使其中一个代理被识别并封锁,其余代理仍可正常使用;
  • 更容易构建覆盖广泛地理位置的代理池,从而更轻松地访问受地理限制的内容。

尽管这些显著优势使住宅代理在效果上堪称首屈一指,但它们也存在一些缺点:

  • 其成本通常较高;
  • 受地理位置和设备网络连接影响,不同IP的请求速度存在差异,通常比数据中心代理更慢;
  • 您必须谨慎选择住宅代理服务商,确保其提供充足的IP数量,并且在您项目所需的国家/地区拥有代理资源。

住宅代理若结合 IP 轮换系统和循环请求头(尤其是 User-Agent)的脚本,能提供最佳的伪装效果。借助这些手段,您的网页爬虫即可在不受 IP 封禁或 CAPTCHA 等障碍影响的情况下收集数据。

由于其真实性,住宅代理常被用于抓取更复杂的网站,如搜索引擎、大型电商网站或社交媒体平台。但是,如果您登录这些网站,请关闭代理轮换功能,确保所有请求都来自同一IP。否则,这将看起来像是同一个用户在几秒钟内从世界各地发送请求,从而暴露其机器人身份。

为何应使用轮换代理进行网页抓取

某些网站往往是网络爬虫的热门目标,例如谷歌、亚马逊和脸书。这些平台预见到爬虫的存在,因此采取了各种措施来减缓或阻止它们。随着网络爬虫的日益普及,越来越多的网站开始采用这些反制措施。

在此背景下,轮换IP地址变得至关重要。否则,您将面临持续遭遇IP封禁和验证码的风险,且代理池将逐渐失效。

绕过请求限流

请求限流是网站用来降低机器人浏览速度的一种技术。简而言之,它限制了访问者在指定时间内可发出的请求数量。

一旦达到限制,机器人会被重定向到验证码页面。如果您的网页抓取工具不具备破解验证码的能力,或者破解失败,该IP就无法继续抓取该网站。

关键要点在于:网站会监控每个IP发送的请求数量。若请求来自多个地址,负载将由这些地址分担。举例说明:

如果某个网站设置为每发送10次请求后,第11次请求将触发验证码,这意味着您可以在被迫暂停并手动更换IP之前爬取10个页面。如果您正在收集价格情报,与您想要爬取的总页面数相比,这可能只是九牛一毛。

通过轮换代理,您无需再手动干预。您能够抓取的页面数量将达到现有代理数量的十倍。此时,唯一的限制就是代理池的大小,每个 IP 地址都将被充分利用。

最棒的是,请求限流功能会限制特定时间段内的访问次数。只要代理池足够大,你之前用过的代理在过期前就不会被再次调用,这为你提供了几乎无限的抓取能力。

在代理池中均匀分配请求

基于前一点的逻辑,代理轮换可确保您不会过度使用同一批 IP,而让其他 IP 闲置。简而言之,您正在尽可能高效地利用资源。结果是——您可能只需更少的 IP 数量就能获得相同的效果。

如果不进行代理轮换,您将一直使用同一个 IP 直到它被封禁,而其他所有代理却闲置不用。当一个代理停止工作时,您才切换到下一个。这种方法会让代理看起来像是一种用于收集数据的有限资源。其实并非如此。

只要地理位置分布合理,且数据中心与住宅IP比例均衡,一个优质的代理池在进行IP轮换时可以无限期地持续使用。您只需确保没有单个代理过于突出,从而面临被封禁的风险。

同理,代理轮换还能成倍加快抓取速度。关键在于并发请求。大多数网络抓取API都能同时发送多个请求,具体数量取决于你选择的套餐。

如果同时向同一个网站发送 50 个请求,肯定会引起警觉。事实上,这种行为与正常用户的行为相去甚远,你很可能会被立即封禁。你大概能猜到这会带来什么后果。轮换代理是必须的,因为它让你能够将爬虫推向极限,同时避免被封禁。

帮助爬虫规避检测

既然提到被封禁,轮换代理的最大优势之一就是它能确保匿名性。让我们详细说明一下!

网站并不欢迎机器人访问。它们可能是为了阻止你收集数据,也可能是为了确保没有恶意程序试图崩溃其服务器。这就是为什么它们会采取多种对策来检测和封禁机器人。由于网络爬虫浏览互联网的速度比普通用户更快,因此它们显得格外显眼。 回想一下那个50个并发请求的例子。根据ContentSquare的2020年数字体验基准报告,普通用户在单个页面上停留的时间平均为62秒。这种行为差异显而易见。

通过轮换代理,您会不断切换IP地址,从而避免从单一地址发送大量请求。结果是——网站会将您产生的流量视为一群互不关联的独立访客。

访问受地理限制的内容

代理轮换工具不应仅随机切换IP地址。虽然有时这已足够,但您应寻找更高级的功能——即能够轮换特定区域的代理。

当您试图收集与特定地区相关的数据时,此功能至关重要。根据请求的地理来源,某些网站可能会:

  • 显示与该IP来源地相关的数据
  • 因请求来自被封锁国家而限制访问

因此,通过轮换多样化的代理池,既能规避这些弊端,又能充分利用其优势。结合前文所述,这意味着:

  • 通过获取多个国家的特定数据,更全面地了解海外市场;
  • 提取原本因某些国家被网站屏蔽而无法获取的信息。

务必保持警惕,留意网站是否根据请求来源定制内容。此类网站可能提供关于某国数据的宝贵洞察。但若您未意识到自己接收的是定制信息,最终数据可能会出现重大偏差。

如何使用轮换代理

与网络爬虫类似,您可以完全自主构建、管理和使用代理轮换器。为此,您需要具备编程知识(Python是理想选择,因其拥有众多有价值的框架和活跃的社区)、一些基础的计算机科学知识、一份代理列表,以及极大的耐心。

最基础的形式是一个脚本,它接收包含代理列表的变量,并为每次请求分配随机 IP。例如,你可以使用 random.sample() 函数每次完全随机地挑选一个 IP,但这意味着同一个代理可能会被连续使用多次。 在这种情况下,你可以设计成:某个 IP 地址被使用后,将其从代理列表中移除,这样直到其他所有地址都被用完之前,它都不会被再次使用。

以下是一个简短的 Python 示例:

import random
import requests

proxy_pool = ["191.5.0.79:53281", "202.166.202.29:58794", "51.210.106.217:443", "5103.240.161.109:6666"]
URL = 'https://httpbin.org/get'

while len(proxy_pool) >0:
	random_proxy_list = random.sample(proxy_pool, k=1)
	random_proxy = {
		'http': 'http://' + random_proxy_list[0],
	}
	response = requests.get(URL, proxies=random_proxy)
	print(response.json())
	proxy_pool.remove(random_proxy_list[0])

该代码仅对代理池循环一次,且仅针对单个 URL,但足以说明其工作原理。顺便提一下,这些 IP 地址是从 https://free-proxy-list.net/ 获取的。不出所料,它们无法正常工作。

事实上,这正是自建轮换器面临的问题。你仍然需要优质的专用IP,或者至少是共享IP。既然已经到了购买代理的阶段,不妨直接寻找能自动为你轮换IP的解决方案。这样既省去了构建系统的额外时间,也避免了外包的额外开支。此外,你还能获得更多实用功能,例如:

  • 快速切换特定地区IP的选项;
  • 选择轮换代理类型(数据中心或住宅;常规或移动等);
  • 为需要登录验证的网页抓取设置静态IP;
  • 请求失败时自动使用新 IP 重试。

让我们以 WebScrapingAPI 为例,看看使用轮换代理抓取页面是多么简单。以下代码直接摘自文档,其中还有许多类似的代码片段:

import requests

url = "https://api.webscrapingapi.com/v1"

params = {
	"api_key":"XXXXXX",
	"url":"https://httpbin.org/get",
	"proxy_type":"datacenter",
	"country":"us"
}

response = requests.request("GET", url, params=params)

print(response.text)

这是使用美国数据中心代理抓取 URL 所需的全部代码。请注意,这里既没有待轮换的 IP 列表,也没有相关的参数。这是因为该 API 默认会自动切换代理。如果您希望在多个会话中使用相同的 IP,只需添加一个新参数:

import requests

url = "https://api.webscrapingapi.com/v1"

params = {
 "api_key":"XXXXXX",
 "url":"https://httpbin.org/get",
 "proxy_type":"datacenter",
 "country":"us",
 "session":"100"
}

response = requests.request("GET", url, params=params)

print(response.text)

只需将“session”参数设置为相同的整数,即可在任何 URL 上使用相同的静态 IP。

最佳轮换代理提供商

既然您已了解轮换代理如何优化网页抓取流程,下一步便是选择符合您需求和预算的代理服务商。我根据价格、代理位置以及数据中心代理和住宅代理的数量等不同因素,整理了一份我最推荐的服务商列表:

1. WebScrapingAPI

请问:还有什么比获得快速、高效且价格实惠的代理来连接您的网络爬虫更好的选择吗?

答案是——获取一个能为您全权处理这一切的、快速、高效且价格实惠的网页抓取API。关于WebScrapingAPI的数据提取功能,我可以说上很久,但现在让我们先聚焦于IP地址。其代理池总计拥有超过1亿个遍布全球的IP地址。

您无需关注带宽使用情况,只需选择包含特定API调用次数的套餐即可。每次API调用即代表一次网页抓取,且每次都会通过不同的IP地址进行——正如我之前提到的,代理轮换功能默认开启。

共有五种套餐可供选择,其中包括一个免费选项,每月提供 1,000 次 API 调用(除免费试用外),供您体验并评估产品。价格从 20 美元起(含 200,000 次 API 调用),套餐规模越大,单价越优惠。针对特殊用例,我们可以为您量身定制满足需求的专属方案。

若您希望通过特定地理位置的代理提取数据,可选方案相当丰富。数据中心代理池分布于7个国家,而住宅IP则可从40个不同区域中选择。若这些还不够,您还可以选择定制套餐,将另外195个位置加入您的列表。

2. Oxylabs

Oxylabs 在 IP 轮换方面采取了一种独特的方法。通常,当您选择套餐时,需要自行轮换 IP,但您也可以选择购买他们的代理轮换器作为附加组件。

虽然某些应用场景可能不太依赖代理轮换,但在数据提取中这是必不可少的,因此若选择 Oxylabs 代理,务必同时购买轮换器。

该公司为住宅代理和数据中心代理提供独立的套餐。住宅IP的计费基于实际使用的带宽,最低套餐为每月300美元,包含20 GB流量。数据中心代理提供无限带宽,不同套餐的区别在于可获得的IP数量。这些套餐起价为每月160美元,您需在100个美国IP或60个非美国IP之间进行选择。

该公司总计拥有超过1亿个住宅代理和200万个数据中心代理。因此,您几乎不会遇到IP用尽的情况。

代理池覆盖范围极为广泛——遍布186个不同地区。虽然这些国家均提供住宅IP,但并非所有地区都配备数据中心代理。

3. Shifter

Shifter 充分利用了数据中心代理背后的尖端基础设施。因此,除了您所期待的专用 IP 选项外,他们还提供共享数据中心代理。

Shifter 的服务中,我们特别欣赏其丰富的套餐选择。例如,最基础的共享代理套餐每月仅需 30 美元,即可使用 10 个共享代理。而在高端套餐中,2000 美元即可获得 1000 个共享代理。简而言之,您拥有多种选择。

如预期所料,专用数据中心代理价格更高,最便宜的套餐起价为25美元,仅提供5个专属IP地址。

若您对住宅IP感兴趣,价格从每月250美元起,可获得10个特殊的反向连接代理,这意味着由服务器自动处理代理轮换,您无需操心。

其代理池包含超过3100万个IP地址,用户可在控制面板中查看确切数量。

全球任何国家均可使用地理定位功能,但有一点需要注意——该功能仅限住宅IP地址使用。

4. SmartProxy

除了令人印象深刻的代理池外,SmartProxy还提供了一系列实用的工具。包括代理地址生成器、Chrome和Firefox插件,以及一款支持您同时通过多个浏览器上网的程序。

但让我们回到代理服务本身。SmartProxy 为用户提供超过 4000 万个住宅 IP 以及 4 万个数据中心代理。除此之外,他们还提供专为搜索引擎爬虫设计的独特住宅代理。与其他两种方案(其价格取决于实际使用的带宽)不同,搜索引擎代理套餐设有固定的请求次数。

虽然大部分 IP 地址来自美国、英国、加拿大、德国、印度和日本,但他们拥有超过一百个地点,每个地点至少有 50 个 IP 地址。

价格方面,数据中心代理套餐起价为 50 美元(含 100 GB 流量),住宅代理套餐起价为 75 美元(含 5 GB 流量)。不出所料,更高级的套餐享有更优惠的条件。

5. Bright Data

Bright Data 提供了一个由数据中心代理、住宅代理和移动代理组成的令人印象深刻的代理池。具体数据如下:

  • 700,000+ 个数据中心 IP
  • 72,000,000+ 个住宅IP
  • 85,000+ 个静态住宅 IP
  • 7,500,000+ 个移动 IP

毫无疑问,这些数字相当可观。但缺点是价格也相当昂贵。虽然有部分固定价格的套餐,但最好还是使用价格计算器为自己定制专属方案。通过该计算器,您只需设定所需的 IP 数量和每月最大带宽,即可获得精确报价。

关于地理位置,Bright Data 的 IP 覆盖了全球几乎所有国家。其官网设有专门页面供用户查询位置。若您需要在特定区域获取特定类型的代理,该页面将非常实用。

如何选择代理服务提供商

总体而言,网络爬虫和代理服务的一大显著优势在于其丰富的选择。

由于大多数个人或企业都有明确的目标,选择服务商后才发现并不合适的情况并不少见。虽然这并非理想状况,但确实会发生。幸运的是,大多数公司都提供试用期、免费套餐,或者至少有退款政策。

因此,我能给您的最佳建议是:多方探索、货比三家,您一定能找到最适合自己的服务。

除了代理服务器,你还需要一个网页爬虫工具,对吧?在众多选择中,以下这10款数据提取产品值得你关注。

如果你没时间,这里有一条专为你准备的精简推荐:立即开始 WebScrapingAPI 的免费试用,你就不需要再尝试其他爬虫工具了!

关于作者
Raluca Penciuc, 全栈开发工程师 @ WebScrapingAPI
Raluca Penciuc全栈开发工程师

Raluca Penciuc 是 WebScrapingAPI 的全栈开发工程师,主要负责开发爬虫、优化规避机制,并探索可靠的方法以降低在目标网站上的被检测概率。

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网络数据。