如何降低代理带宽成本:将您的GB账单减少60-90%
在按GB计费的代理中,您的账单是以字节为单位,而不是请求——其中大多数字节是您从未解析的图像和字体。以下是如何剥离它们并将住宅GB账单减少一半以上的方法。
在按GB计费的代理中,您的账单是以字节为单位,而不是请求——令人不安的事实是,其中大多数字节是您从未解析的图像、字体和样式表。单个全分辨率产品照片可能为2.2 MB;一个页面的完整浏览器渲染为2-5 MB。您实际提取的精简HTML通常不到150 KB。剥离其余部分,住宅GB账单可减少60-90%。本指南是实用手册:阻止资产,跳过未更改的页面,压缩,并路由到JSON而不是HTML。
首先,了解您被收取的费用
住宅带宽是根据双向传输的数据总和来衡量的:请求头加请求体,以及响应头加响应体。这意味着每个页面拉取的资产——每个图像、字体和跟踪脚本——都会出现在您的账单上,即使它们没有为您的解析器提供任何数据。优化目标很简单:只下载您提取的字节。其他一切都是您支付的浪费。
在无头浏览器中阻止资产
如果您正在驱动浏览器,这是最大的杠杆。Playwright和Puppeteer都允许您拦截请求并中止不需要的资源类型。阻止图像、媒体、字体和样式表通常可以将页面重量减少大部分——DOM仍然构建,因此您的选择器和任何水合JSON仍然存在:
// Playwright: abort the resource types you never parse
await page.route('**/*', (route) => {
const type = route.request().resourceType();
if (['image', 'media', 'font', 'stylesheet'].includes(type)) {
return route.abort();
}
return route.continue();
});
await page.goto(url, { waitUntil: 'domcontentloaded' });
两个注意事项:不要阻止承载您所需数据的XHR/fetch调用,并测试页面是否仍然呈现您所需的内容——过度阻止可能会破坏网站自身的逻辑。如果您在浏览器和普通请求之间权衡,我们对渲染与HTTP请求成本的分析显示了10-50倍的差距,使得这个决定变得重要。

跳过未更改的页面
最便宜的字节是您不下载的字节。两种技术可以减少监控作业中的重新获取浪费。HEAD请求仅提取头以检查Content-Length或Last-Modified,然后再提交完整的GET。更好的是,条件GET发送上次的ETag或时间戳,当没有变化时,服务器以304 Not Modified和空体响应——您只需支付几个头字节,而不是整个页面:
import requests
# conditional GET: 304 = near-zero bytes when unchanged
headers = {"If-None-Match": last_etag,
"If-Modified-Since": last_seen}
r = requests.get(url, headers=headers, proxies=proxies, timeout=20)
if r.status_code == 304:
pass # unchanged, no body downloaded, no GB spent
else:
process(r.content)
last_etag = r.headers.get("ETag")
对于每天重新检查相同页面的抓取器,仅条件GET就可以显著减少带宽,因为大多数页面在运行之间不会更改。
始终接受压缩
文本压缩效果很好——HTML、JSON和CSS通过gzip或brotli可以缩小70-90%——您按实际跨线的压缩大小计费。在Python的requests中,这在默认情况下是开启的;在原始客户端中,请明确要求:
headers = {"Accept-Encoding": "gzip, deflate, br"}
r = requests.get(url, headers=headers, proxies=proxies, timeout=20)
# requests transparently decompresses; you're billed on the small size
路由到JSON,而不是HTML
最大的结构性胜利是完全跳过渲染页面。许多网站从JSON端点获取相同数据,只需很少的字节——产品的价格和库存作为10 KB的API响应,而不是3 MB的渲染页面。在浏览器的网络选项卡中找到XHR调用并直接访问它。Shopify商店是经典示例:products.json端点将整个目录交给您,没有任何HTML。当您可以读取API时,请这样做——这是每条记录从千字节到兆字节的区别。
让API为您计算字节
如果您不想为每个网站手动调整阻止规则,Scraper API仅在需要时渲染并返回解析的markdown或JSON,为您剥离资产——您收到的是提取的内容,而不是其来源的兆字节。在按GB计费的住宅代理中,节省是直接的:线上字节越少,账单上的美元越少,而您保留的数据没有任何损失。有关千兆字节实际购买的完整图景,请参阅我们对每GB定价的分析。

常见问题解答
代理带宽如何计算?
通过双向传输的总字节数:请求头加请求体,以及响应头加响应体。因此,每个页面加载的图像、字体和脚本都计入您的使用量,而不仅仅是您解析的HTML。这就是为什么阻止未使用的资产和跳过未更改的页面直接转化为按GB计费计划上的较低账单的原因。
阻止图像会破坏抓取吗?
如果您小心的话,不会。阻止图像、媒体、字体和样式表会保留DOM和JavaScript,因此您的选择器和任何水合JSON仍然有效——您只是跳过了视觉负载。风险在于过度阻止:绝不要中止承载您数据的XHR/fetch调用,并在大规模运行之前测试页面是否仍然生成您所需的内容。
最大的带宽节省是什么?
路由到JSON端点而不是渲染完整页面,这是存在的地方。10 KB的API响应可以替代3 MB的渲染以获得相同的记录——减少99%。在那之后,在无头浏览器中阻止资产和在重新抓取时使用条件GET是最大的胜利。压缩几乎是免费的,应该始终开启。
我可以实际节省多少?
阻止资产通常可以将渲染页面的重量减少一半以上;条件GET可以将不变页面的重新抓取带宽减少到接近零;从HTML切换到JSON路由通常可以减少每条记录90%以上。结合在一起,对住宅GB账单减少60-90%是大多数项目的现实目标。
这些都不会改变您提取的内容——它改变的是您为提取它所支付的费用。阻止您从未读取的资产,跳过未移动的页面,接受压缩,并优先选择JSON路由而不是完整渲染。在按GB计费的代理上,这四个习惯通常会将账单降低一半以上。有关如何在数百万页面上扩展的架构,请参阅我们的大规模抓取架构指南。