Використання IP проксі з Undici у Node
Передайте Undici ProxyAgent одному запиту fetch і відокремте пул з’єднань від іншого трафіку Node.
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 має параметри в конструкторі. Не додавайте заголовок авторизації проксі до заголовків запиту до сайту: агент обробляє іншу ділянку з’єднання.