返回博客
网络抓取科学
拉卢卡·彭丘克2023年1月8日阅读时间:20分钟

旋转代理:你需要知道的一切

旋转代理:你需要知道的一切

什么是轮换代理?

所谓“轮换代理”,是指在发送每次请求时自动切换至另一个 IP 地址的过程。理论上,这可以手动完成,但这意味着您无法将待抓取的 URL 列表放入队列中。相反,您必须先分配一个代理,发送一个请求,再分配另一个代理,发送另一个请求,如此循环往复。相信您能明白这种做法是多么低效。

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

以下是使用一个轮换代理的程序进行数据抓取过程的详细步骤:

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

这四个步骤会不断重复,直到用户获取到所需的所有信息。每次请求都会经过一个新的代理服务器,从而模拟出众多不同用户连接到该网站的情况。

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

当然,要实现IP轮换,首先需要一个代理池。不过,由于并非所有代理都一样,你还需要筛选出合适的IP地址。以下是两个主要的候选方案:

数据中心与住宅

代理服务器有多种分类方式。可以按匿名性、访问权限或来源进行分类。对于网页抓取项目而言,后者是最重要的因素。从这个角度来看,代理服务器通常分为数据中心代理和家庭代理两类。下面我们分别来看一下。

通过设备和服务器图标对比家庭代理与数据中心代理的示意图

轮换数据中心代理

数据中心之所以得名,正是因为它们拥有无与伦比的在线存储和共享信息的能力。所谓“存储在云端”,其实只是“存储在数据中心,只要有网络连接就能访问”这一说法的一种更简洁的表达。这种简短的说法听起来顺口多了。

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

高效数据中心代理的关键在于在服务器和IP地址之间找到恰当的平衡。一台服务器可以承载多个IP地址,但每个IP都会增加额外开销。到了某个临界点,服务器的收益将开始递减,届时就必须创建新的服务器。由于管理服务器和IP地址十分耗时费力,因此大多数开发者更倾向于直接从专业公司租用或购买这些代理。

这些 IP 地址并非隶属于互联网服务提供商。实际上,您打交道的对象是数据中心所有者,或是利用存储空间搭建代理服务器并将其分发给客户的第三方。

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

  • 由于它们是以批量方式部署的,因此与住宅IP相比价格更为低廉;
  • 凭借其卓越的速度,您可以在更短的时间内收集更多数据;
  • 得益于数据中心坚实的基础设施,它们非常可靠;
  • 从同一服务器群批量购买或租赁非常方便。

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

  • 这些IP地址更容易被警惕的网站发现;
  • 来自同一数据中心的所有代理都共享一个子网标识符,这使得它们更容易遭到全面封禁。
  • 由于数据中心数量有限,要构建一个包含来自每个国家/地区IP地址的代理池难度更大。

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

对于大型热门网站而言,情况则大不相同。亚马逊、谷歌等知名网站每天都要应对数据抓取工具和其他机器人。因此,此类行为被察觉的可能性要大得多。此外,数据中心代理始终存在已被封禁的风险,因为同一数据中心内的所有IP地址都共享同一个子网。

最重要的是你选择哪家代理服务提供商,以及他们如何管理自己的IP地址。例如,WebScrapingAPI的数据中心代理属于私有代理,几乎不会被列入黑名单。

轮换住宅代理

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

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

鉴于操作不便且需要一定的信任度,开发者从专业服务商处租用住宅代理要方便得多。

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

  • 住宅IP由互联网服务提供商(ISP)提供支持,在浏览网页时看起来就像普通访客,这使得爬虫更难被发现;
  • 每个 IP 地址都是唯一的,因此即使某个代理被识别并被封锁,其余的代理仍然可以使用;
  • 从广泛的地理位置构建代理池更为便捷,从而能更轻松地访问受地理限制的内容。

尽管住宅代理在效果方面具有这些显著优势,使其成为最优之选,但它们也存在一些缺点:

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

结合IP轮换系统和一个可循环更改请求头(尤其是User-Agent)的脚本,住宅代理能提供最佳的伪装效果。借助这些工具,您的网络爬虫便能畅通无阻地收集数据,避免遭遇IP封禁或验证码等障碍。

由于其真实性,住宅代理常被用于抓取更复杂的网站,例如搜索引擎、大型电商网站或社交媒体平台。不过,如果您在这些网站上登录,请关闭代理轮换功能,确保所有请求均来自同一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 地址被使用后,将其从代理列表中移除,这样直到其他所有地址都被使用过之后,该 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;
  • 当请求失败时,系统会自动使用新的 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

一张展示笔记本电脑模型的图片,其上显示着 WebScrapingAPI 的登录页面,用于代理服务对比

请问:还有什么比获得快速、高效且价格实惠的代理服务器来连接您的网页爬虫更好的呢?

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

与按带宽使用量计费不同,您可以选择包含一定数量API调用的套餐。每次API调用对应一次网页抓取,且每次都会通过不同的IP地址进行,因为如前所述,代理轮换功能默认处于开启状态。

共有五种套餐可供选择,其中包括一个免费选项,每月提供 1,000 次 API 调用(不包括免费试用),供您体验产品并形成自己的看法。价格从 20 美元起,包含 200,000 次 API 调用,套餐规模越大,单价越优惠。针对特殊使用场景,我们可以为您量身定制符合需求的专属方案。

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

2. Oxylabs

展示笔记本电脑模型及 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感兴趣,10个特殊反向连接代理的起价为每月250美元,这意味着由服务器自动处理代理轮换,您无需操心。

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

地理定位功能适用于全球任何国家,但有一点需要注意——您只能使用住宅IP地址。

4. SmartProxy

一张展示笔记本电脑模型的图片,上面显示着Smartproxy的登录页面以及一张世界地图连接示意图

除了拥有令人印象深刻的代理池外,SmartProxy 还提供了一系列实用的工具。其中包括代理地址生成器、Chrome 和 Firefox 扩展程序,以及一款可帮助您同时使用多个浏览器上网的程序。

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

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

价格方面,数据中心代理的套餐起价为50美元(100 GB流量),而住宅代理的套餐起价为75美元(5 GB流量)。不出所料,套餐规模越大,优惠力度也越大。

5.明亮数据

展示笔记本电脑模型及Bright Data数据采集基础设施登录页面的图示

Bright Data 提供了一个由数据中心代理、住宅代理和移动代理组成的庞大代理池。具体数据如下:

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

数量确实不少。不过,缺点是价格也相当高。虽然有一些固定价格的套餐,但最好还是使用价格计算器来为自己定制一个方案。通过这个计算器,您可以设定所需的IP地址数量和每月最大带宽,系统会立即显示确切的价格。

说到地理定位,Bright Data 在全球几乎每个国家都拥有 IP 地址。他们的网站上有一个页面,您可以查看这些 IP 的地理位置。如果您需要在特定地区获取某种类型的代理,该页面会非常有用。

如何选择代理服务提供商

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

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

因此,我能给你的最好建议就是多方了解,多看看,你一定能找到适合自己的那款。

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

如果您时间有限,这里有一条专为您准备的精简建议: 立即开始使用 WebScrapingAPI 的免费试用版,您就无需再尝试其他爬虫工具了!

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

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

开始构建

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

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