简而言之:Node-Fetch 没有内置的代理开关,因此你需要通过其 agent 选项将 HTTP、HTTPS 或 SOCKS5 代理集成到请求中。本指南将详细介绍如何在 Node-Fetch 中端到端地使用代理:包括需要身份验证的 HTTP 和 HTTPS 代理、SOCKS5、代理轮换、重试、TLS 特殊情况、故障排除,以及适用于 Node 18+ 原生 fetch 的现代 undici 方案。如果你曾盯着来自某个目标的 403 错误页面发呆——而你以前还能愉快地抓取该目标——那么你已经知道这篇文章存在的意义了。 掌握在 Node-Fetch 中使用代理的技巧,意味着你的脚本不仅能在笔记本电脑上运行,还能在 CI 环境中——使用不同 IP、位于不同国家、面对真实的反机器人防护体系——依然稳健运行。好消息是:Node-Fetch 的代理使用方法归根结底只需掌握一小部分 API 接口,其余的只是操作层面的衔接。
Node-Fetch 是一款广受欢迎的 Node.js HTTP 客户端,它将浏览器的 window.fetch 风格带到了服务器端。它体积小巧、异步运行且使用体验良好,但它有意不提供 proxy 选项。取而代之的是,它提供了一个 agent 插槽,供您接入外部代理代理。这一设计决策正是下面所有示例背后的核心机制。
本指南不依赖特定提供商,且以代码为先。您将配置 HTTP/HTTPS 代理,发送首个通过代理的请求,安全地添加凭据,切换至 SOCKS5,轮询代理池,添加超时和重试机制,并验证流量是否确实通过代理发送。我们还将介绍使用 undici 的 ProxyAgent的 Node 18+ 替代方案,并提供一份针对入门首日可能遇到的错误的故障排除对照表。




