图书馆

如何使用 SOCKS5H 代理修复 Puppeteer 中的 ERR_NO_SUPPORTED_PROXIES 错误

'puppeteer' 'err_no_supported_proxies' 'socks5h'

Puppeteer 是用于浏览器自动化的强大 Node.js 库,用户在使用 Puppeteer 时,可能会在尝试配置代理设置时遇到各种错误。其中一个比较特殊的错误是 Er_noo_supported_proxies尤其是在使用 socks5h 协议时。本博客旨在分析该错误,解释其原因,并提供解决问题的方法。

什么是 Puppeteer?

木偶师 被广泛用于浏览器自动化、网络搜索和网络应用程序测试。它提供了一个无头版本的 Chrome 浏览器(或 Chromium),允许用户在浏览器环境中使用 JavaScript 编写操作脚本。它的主要功能之一包括配置网络设置(包括代理),这使它成为那些希望在代理后自动执行搜刮任务的用户的首选。

什么是 SOCKS5 和 SOCKS5H?

在深入研究错误之前,了解 SOCKS5 和 SOCKS5H 之间的区别非常重要:

  • SOCKS5 是一种多功能代理协议,可通过 TCP 连接传输数据。它支持多种应用,包括浏览、电子邮件和 P2P 传输。
  • SOCKS5H (SOCKS5 with hostname resolution)扩展了 SOCKS5,在代理服务器上而不是本地机器上解析 DNS 查询。这一新增的隐私层可确保 DNS 请求不会泄漏,因此,socks5h 成为某些有安全意识的用户的首选。

为什么会出现 ERR_NO_SUPPORTED_PROXIES 错误?

当 Puppeteer 无法正确配置和连接指定的代理时,会出现 ERR_NO_SUPPORTED_PROXIES 错误。当用户尝试使用 Puppeteer 的 socks5h 协议时,经常会发生这种情况。

导致这一错误的因素有几个:

不支持的代理协议:Puppeteer 本机支持某些类型的代理,但对其他代理(如 socks5h)可能有问题。如果不支持代理协议,Puppeteer 将抛出 ERR_NO_SUPPORTED_PROXIES 错误。

错误配置的代理设置:代理配置设置不正确或提供无效的代理 URL 可能会导致此错误。

DNS 解析冲突:由于 socks5h 在代理服务器上解析 DNS 查询,因此 DNS 解析或代理服务器本身的任何问题都可能引发错误。

过时的 "傀儡廻 "版本:旧版本的 Puppeteer 可能不完全支持高级代理配置,包括 SOCKS5 或 SOCKS5H。

如何修复 Puppeteer 中的 "ERR_NO_SUPPORTED_PROXIES

以下是如何排除和解决此错误的分步指南:

步骤 1.验证代理协议支持

虽然 socks5h 提供 DNS 泄露保护,但 Puppeteer 本身并不支持 socks5h 协议,但它支持 socks5。 你可以先查看 Puppeteer 文档,了解代理支持情况。在大多数情况下,切换到 SOCKS5 可以解决 "puppeteer""err_no_supported_proxies""socks5h "的问题。下面是一个如何使用 SOCKS5 代理设置 Puppeteer 的示例:

const browser = await puppeteer.launch({
    args: ['--proxy-server=socks5://'proxy-host':'proxy-port'']; }.
});

如果你的项目由于 DNS 解析问题而需要使用 socks5h,你可以考虑使用代理管理插件(下一步将解释)。

步骤 2.将 Puppeteer 升级到最新版本

确保你使用的 Puppeteer 版本是最新的。新版本通常会引入修正和新功能,包括改进代理支持。更新 Puppeteer:

npm install puppeteer@latest

步骤 3.使用带有代理插件的 Puppeteer Extra

如果您的项目必须使用 socks5h,请考虑使用 puppeteer-extra-plugin-proxy 插件。该插件扩展了 Puppeteer 的代理功能,支持更高级的代理配置,包括 socks5h。

npm install puppeteer-extra puppeteer-extra-plugin-proxy

然后,在你的 Puppeteer 脚本中

const puppeteer = require('puppeteer-extra');
const pluginProxy = require('puppeteer-extra-plugin-proxy');

puppeteer.use(pluginProxy({
    proxyUrl:'socks5h://'proxy-host':'proxy-port'
}));

puppeteer.launch().then(async browser => {
    const page = await browser.newPage();
    await page.goto('https://example.com');
    await browser.close();
});

这种设置允许 Puppeteer 使用 socks5h 协议,同时绕过 ERR_NO_SUPPORTED_PROXIES。

步骤 4.检查代理服务器设置

最后,必须验证代理服务器设置的正确性。确保代理服务器支持 socks5h,并且没有可能阻止 Puppeteer 连接的限制。

第 5 步选择支持 DNS 解析的代理服务器

在使用 Puppeteer 和代理服务器时,代理服务器提供商的选择对避免 ERR_NO_SUPPORTED_PROXIES 等错误至关重要。如果对 socks5h 没有严格要求,但需要防止 DNS 泄露,那么可以考虑使用能安全处理 DNS 解析的高质量代理服务。为此,OkeyProxy 提供了强大的代理解决方案,可处理 SOCKS5 协议,是 Puppeteer 项目的理想选择。

OkeyProxy用户可从中受益:

  • 高速稳定:可靠的代理连接可确保网络搜索或自动化任务顺利进行,不会出现中断。
  • 支持 SOCKS5:OkeyProxy 完全支持 SOCKS5 协议,使其与 Puppeteer 配置完美契合。
  • 全球覆盖:OkeyProxy 拥有遍布全球的庞大代理服务器网络,无论身处何地,都能确保最佳性能。
okeyproxy

对于那些寻求性能、隐私和兼容性平衡的用户来说,OkeyProxy 是将代理与 Puppeteer 集成的顶级选择。DNS 解析和高级代理选项的附加优势可确保安全、匿名的网页浏览或自动化。

注册联系 OkeyProxy 团队 获得 1GB 免费试用!

结论

Puppeteer 中的 ERR_NO_SUPPORTED_PROXIES 错误通常源于使用了不支持的代理协议(如 socks5h)。通过验证代理设置,将 Puppeteer 更新到最新版本,或使用 puppeteer-extra-plugin-proxy 等插件,可以有效解决这一问题。此外,选择像 OkeyProxy 这样可靠的代理提供商,可以确保使用 Puppeteer 的浏览器自动化工作流程顺畅安全。

掌握这些故障排除技巧,Puppeteer 用户就能绕过与代理相关的错误,在自动化项目中取得成功。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部
翻译 >>