Выкарыстанне 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
Версіі Node, якія падтрымлівае Undici, залежаць ад выпуску пакета. Прыклад выкарыстоўвае Undici 8.12.3, якому патрэбны Node 22.19.0 або навейшы. Памылка загрузкі модуля ці версіі рухавіка адбываецца да звароту да проксі. Праверце патрабаванні ўсталяванага пакета, не мяркуючы, што кожны Node запускае найноўшы Undici.
Адзін агент можа абслугоўваць паўторныя запыты
Кароткая праграма закрывае дыспетчар у канцы. Калі праграма адпраўляе некалькі запытаў праз той самы вузел, захоўвайце агент для гэтай нагрузкі і закрывайце пасля яе завяршэння. Стварэнне і закрыццё агента для кожнага URL перашкаджае карыснаму паўторнаму выкарыстанню злучэнняў.
Глабальны дыспетчар дарэчны толькі пры наўмыснай больш шырокай змене. Яўная перадача палягчае праверку IP проксі без змены выходных запытаў іншага кампанента.
Глядзіце на адказ і этап збою
Fetch не лічыць кожны памылковы HTTP-статус адхіленым Promise. 403 ці 429 можа быць сапраўдным адказам сайта, перададзеным праз проксі. Памылка злучэння або тунэля можа адхіліць запыт да з’яўлення аб’екта адказу. Разглядайце статус асобна ад памылак, якія кідае выклік.
Калі патрэбна аўтэнтыфікацыя, ProxyAgent Undici мае параметры ў канструктары. Не дадавайце загаловак аўтарызацыі проксі да загалоўкаў запыту сайта: агент апрацоўвае іншы ўчастак злучэння.