如果您在Apify上运行代理以爬取Wildberries、Ozon、Amazon或Google Maps, 迟早会面临一个问题:是支付内置的Apify Proxy费用,还是连接自有的 IP地址池。在大规模的情况下,成本差异可能每月达到数万卢布。 在本文中,我们将讨论Apify中流量的定价是如何计算的,何时使用自有代理 更划算,以及如何将其技术上连接到代理——并附有代码示例。
什么是Apify代理,为什么需要代理
Apify是一个无需搭建自有基础设施即可运行现成爬虫(代理)的平台。 在Apify商店中,有数百个现成的代理:Amazon爬虫、Google Maps爬虫、Instagram爬虫、用于从Wildberries和Ozon收集商品卡片的代理。 其中大多数需要代理,因为目标网站在大量请求时会迅速封禁Apify数据中心的IP地址。
代理在代理中解决了三个问题:绕过地理限制(例如,需要收集Wildberries上“莫斯科”地区的价格),降低验证码和临时封禁的频率,并且 在多个IP之间分配负载,模拟普通用户的行为,而不是机器人的行为。没有代理,大多数用于爬取市场的代理要么根本无法启动, 要么在运行几分钟后就会出现数据收集错误。
Apify有一个内置解决方案——Apify Proxy,可以通过一行代码连接。 这对于启动很方便,但有一个细节:按GB计费流量,定期或大规模爬取时账单会迅速增加。 正因如此,平台的经验用户越来越多地将自有代理连接到代理,而不是使用内置的。
内置Apify Proxy的结构及其定价
Apify Proxy提供三种类型的IP:数据中心IP、住宅IP(通过合作池)和用于爬取搜索结果的Google SERP代理。
连接非常简单——只需在代理配置中指定参数 useApifyProxy: true
,平台将自动为每个请求或会话轮换IP。
问题在于支付模型:Apify内部的住宅代理流量按GB计费, 而内置解决方案的每GB价格通常高于直接代理供应商,因为 Apify会为集成和管理池增加自己的加价。对于小型测试启动 (每月几千个请求)这并不关键。但如果代理以监控模式运行—— 例如,每小时提取Wildberries上的5000个SKU的价格——流量消耗会 指数增长,内置代理会成为项目预算中最昂贵的部分, 超过甚至Apify计划本身的费用。
另一个细节是:Apify的内置池是所有平台客户共享的。这意味着, IP地址可能已被其他用户“曝光”,他们正在爬取相同的网站。 这增加了在具有严格反机器人保护的市场(如Ozon和Avito)上遇到验证码和封禁的风险。
何时自有代理更便宜:数字计算
为了理解何时切换到自有代理是合理的,需要比较两个变量:Apify Proxy的流量成本和直接代理供应商的相同量的成本, 以及集成和维护自有池的时间成本。
实践表明有三种情景:
- 一次性爬取(每月不超过1GB流量)——内置Apify Proxy更划算: 没必要花时间设置自己的池来进行小规模的一次性数据收集。
- 定期监控(每月5-50GB)——转折点。在这里就需要计算: 如果代理每天工作并从Wildberries或Ozon收集商品卡片,使用内置代理的流量消耗增长速度 会比自有池以固定IP费用或无限制套餐的方式更快。
- 工业级爬取(每月超过50GB,多个代理,多个来源)—— 自有池几乎总是更便宜,因为可以与供应商直接协商流量或IP数量的价格,而无需中介平台的加价。
一个简单的计算示例:如果代理每天处理10,000个商品卡片,每个页面的平均大小为300KB(考虑到图像和脚本, 不进行资源加载优化),一个月的流量大约为90GB。根据Apify Proxy的住宅流量套餐, 最终金额通常超过相同量的第三方代理供应商的费用1.5到2倍。如果代理设置为阻止图像和 外部脚本的加载(通过Puppeteer/Playwright配置轻松实现),实际流量的重量会大幅降低, 切换到自有代理的节省会更加明显。
连接代理到代理的类型
代理类型的选择直接取决于代理正在爬取的网站以及其对机器人流量的敏感程度。
| 代理类型 | 何时在Apify中使用 | 封禁风险 |
|---|---|---|
| 数据中心代理 | 爬取没有严格反机器人保护的网站、API类来源、静态目录 | 在有保护的市场上高风险 |
| 住宅代理 | Wildberries、Ozon、Amazon、Google Maps爬虫——检测数据中心IP的网站 | 在正确轮换时低风险 |
| 移动代理 | 通过Apify代理爬取社交媒体(Instagram、TikTok),需要最大“干净”IP | 最低风险 |
对于像Wildberries和Ozon这样的市场爬取,最佳选择是 住宅代理, 因为它们使用真实的家庭ISP提供的IP,且很少受到严格的反机器人过滤。 对于不太受保护的来源(RSS、开放目录、企业网站), 数据中心IP就足够了——它们更便宜且更快。
如何将自有代理连接到代理:代码和设置
大多数Apify代理基于Crawlee(前身为Apify SDK),并支持通过参数 proxyConfiguration
传递自有代理列表。
代替内置池,指定您的代理地址数组。
import { Actor } from 'apify';
import { CheerioCrawler, ProxyConfiguration } from 'crawlee';
await Actor.init();
// 传递自有代理列表代替useApifyProxy
const proxyConfiguration = new ProxyConfiguration({
proxyUrls: [
'http://user:[email protected]:12345',
'http://user:[email protected]:12345',
'http://user:[email protected]:12345',
],
});
const crawler = new CheerioCrawler({
proxyConfiguration,
maxRequestsPerCrawl: 5000,
async requestHandler({ request, $, log }) {
const title = $('title').text();
log.info(`收集的页面:${title}`);
await Actor.pushData({ url: request.url, title });
},
});
await crawler.run(['https://www.wildberries.ru/catalog/...']);
await Actor.exit();
如果您的代理池支持在提供商端轮换(大多数住宅服务都是如此,包括按会话或按请求轮换的池),只需在URL中指定一个端点及会话参数—— 这样IP的轮换将自动进行,无需手动列出数百个地址。
对于Python上的代理(例如,如果您通过Apify SDK为Python运行自定义脚本),连接看起来类似:
import requests
proxies = {
"http": "http://user:[email protected]:12345",
"https": "http://user:[email protected]:12345",
}
response = requests.get(
"https://www.ozon.ru/category/...",
proxies=proxies,
headers={"User-Agent": "Mozilla/5.0"},
timeout=15
)
print(response.status_code)
print(response.text[:500])
重要一点:切换到自有代理时,务必手动设置会话轮换和请求之间的延迟—— 内置的Apify Proxy会自动执行此操作,而连接外部池时,需要在代理代码或爬虫配置中编写逻辑。
比较表:内置代理 vs 自有代理
| 标准 | Apify Proxy(内置) | 自有代理池 |
|---|---|---|
| 连接速度 | 一行代码,无需设置 | 需要15-30分钟进行集成 |
| 小规模流量成本 | 更划算 | 对于稀疏启动来说过于冗余 |
| 每月10-50GB的成本 | 与流量成正比增长 | 更划算,通常是固定模型 |
| IP池的“干净”程度 | 共享池,可能与其他客户重叠 | 为您的任务提供专用或轮换池 |
| 地理定位灵活性 | 有限的国家/地区选择 | 为市场选择特定城市/地区 |
| 轮换控制 | 自动,无需设置 | 根据所需模式手动设置 |
案例:实际爬取市场的实践
监控Wildberries上的价格。 卖家每天多次跟踪3000-10000个SKU的竞争对手价格,通常从内置的Apify Proxy开始, 但在第一个月后由于流量账单过高而转向与地区绑定的住宅代理。 这不仅可以降低费用,还可以看到特定城市的买家所看到的价格—— 这至关重要,因为Wildberries根据仓库和交付地区显示不同的价格。
在Ozon上收集商品卡片。 Ozon积极使用行为分析,并迅速在请求模式单一时封禁IP。 通过Apify Proxy的共享池工作的代理更频繁地遇到验证码,正是因为其他用户同时使用相同的IP进行类似任务。 切换到具有自有轮换逻辑和请求之间随机延迟的专用住宅代理池可将验证码的频率降低几倍。
爬取Google Maps和评论。 对于不需要地理特定性的任务(例如,收集全国公司的联系信息), 通常只需使用数据中心代理—— 如果目标网站不使用激进的反机器人保护,它们比住宅代理更快且在大规模时显著更便宜。
Apify项目选择代理的检查清单
- 计算代理每月的实际流量(请求 × 页面平均大小)
- 将此流量与内置Apify Proxy的套餐进行比较——如果经常超过5-10GB,请考虑替代方案
- 确定目标网站对机器人的敏感程度——像Ozon这样的市场需要住宅IP
- 检查是否需要特定地区的地理绑定(适用于Wildberries和Ozon)
- 切换到外部池时手动设置会话轮换和请求之间的延迟
- 在代理中禁用不必要的资源加载(图像、字体、跟踪器)——这将减少流量消耗,无论代理类型如何
- 在将所有代理切换到新配置之前,先在小规模上测试池
结论
内置的Apify Proxy是一次性任务和小型测试启动的便捷起点, 但在定期或工业级爬取市场时,其成本迅速超过自有代理池的费用。 切换需要在开始时进行更多设置——在代理代码中编写轮换、会话和代理配置—— 但在流量达到10-50GB时,第一月就能收回成本。
如果您的代理从Wildberries、Ozon或Amazon收集数据,请考虑使用 住宅代理—— 它们提供低封禁风险,并允许设置所需地区以正确显示价格。 对于没有严格反机器人的不太受保护的来源,预算更低的 数据中心代理就足够了, 而对于通过Apify代理爬取移动应用和社交媒体,值得考虑 移动代理—— 它们在最低风险下提供最大“干净”IP。