Node Undici арқылы прокси IP қолданыңыз
Бір fetch сұрауына Undici ProxyAgent беріп, оның қосылым пулын басқа Node трафигінен бөліңіз.
Undici сұрауды dispatcher арқылы бағыттайды. Таңдалған HTTP проксиге ProxyAgent құрып, бүкіл процестің жаһандық dispatcher-ін өзгертпей 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 проксиге ауыстырыңыз. Импорт әдейі Undici fetch іске асыруын қолданады, сондықтан dispatcher опциясы мысалдағы клиентке жатады.
IP-ді кінәламас бұрын Node үйлесімділігін тексеріңіз
Undici қолдайтын Node нұсқалары пакет шығарылымына байланысты. Мысал Undici 8.12.3 қолданады, оған Node 22.19.0 не жаңасы керек. Модуль жүктеу немесе қозғалтқыш нұсқасының қатесі сұрау проксиге жетпей болады. Әр Node ең жаңа Undici-ді орындайды деп ойламай, орнатылған пакеттің талабын тексеріңіз.
Бір agent қайталанған сұрауларға қызмет ете алады
Қысқа бағдарлама соңында dispatcher-ін жабады. Жұмыс істеп тұрған қолданба бір нүкте арқылы бірнеше сұрау жіберсе, agent-ті сол жүктемеге сақтап, жұмыс біткенде жабыңыз. Әр URL үшін agent құрып жабу қосылымды пайдалы қайта қолдануға кедергі.
Жаһандық dispatcher тек кеңірек өзгерісті көздегенде сәйкес. Оны нақты беру өзге компоненттің шығыс сұрауларын өзгертпей прокси IP сынауды жеңілдетеді.
Жауап пен ақау кезеңіне қараңыз
Fetch әр HTTP қате күйін қабылданбаған Promise деп санамайды. 403 не 429 прокси тасымалдаған сайттың шынайы жауабы болуы мүмкін. Қосылым не туннель қатесі жауап нысаны болмай тұрып сұрауды қабылдамай қоюы мүмкін. Күйді шақыру тастайтын қателерден бөлек оқыңыз.
Аутентификация қажет болса, Undici ProxyAgent конструкторлық параметрлер береді. Прокси авторизациясының тақырыбын сайт сұрауының тақырыптарына қоспаңыз; agent басқа қосылым бөлігін басқарады.