Undici направляет запрос через диспетчер. Создайте ProxyAgent для выбранного HTTP-прокси и передайте его вызову fetch вместо изменения глобального диспетчера всего процесса.

npm install [email protected]
import { fetch, ProxyAgent } from 'undici';

const dispatcher = new ProxyAgent('http://203.0.113.10:8080');

try {
  const response = await fetch('https://example.com/', {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });

  console.log(response.status);
  console.log(await response.text());
} finally {
  await dispatcher.close();
}

Сохраните программу как файл .mjs или используйте проект ES-модулей. Замените документационный IP HTTP-прокси из списка HTTP-прокси. Импорт намеренно использует реализацию fetch из Undici, поэтому параметр dispatcher относится к показанному клиенту.

Проверьте совместимость Node, прежде чем винить IP

Поддерживаемые Undici версии Node зависят от выпуска пакета. Пример использует Undici 8.12.3, которому требуется Node 22.19.0 или новее. Ошибка загрузки модуля или версии движка происходит до обращения к прокси. Проверьте требования установленного пакета, не предполагая, что любой Node запускает новейший Undici.

Один агент может обслуживать повторные запросы

Короткая программа закрывает диспетчер в конце. Если работающее приложение отправляет несколько запросов через один узел, сохраняйте агент на время этой нагрузки и закрывайте после её завершения. Создание и закрытие агента для каждого URL мешает полезному повторному использованию соединений.

Глобальный диспетчер уместен лишь при намеренном более широком изменении. Явная передача облегчает проверку IP прокси без изменения исходящих запросов другого компонента.

Смотрите на ответ и этап сбоя

Fetch не считает каждый ошибочный HTTP-статус отклонённым Promise. 403 или 429 может быть настоящим ответом сайта, переданным через прокси. Ошибка соединения или туннеля, напротив, может отклонить запрос до появления объекта ответа. Рассматривайте статус отдельно от ошибок, выбрасываемых вызовом.

Если нужна аутентификация, ProxyAgent Undici предоставляет параметры в конструкторе. Не добавляйте заголовок авторизации прокси в заголовки запроса к сайту: агент обслуживает другой участок соединения.

Похожие статьи