Оставете node-fetch да избере прокси агента след пренасочване
Използвайте функция за агент за HTTP и HTTPS дестинации, за да може пренасочването да избере подходящия прокси агент.
Първият URL може да е HTTPS, а URL след пренасочване — HTTP. Избирайте агента според дестинацията на всяка заявка, вместо да обвързвате един агент с първия URL.
За импортирания пакет node-fetch в ESM приложение подайте функция:
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
const proxyUrl = 'http://proxy.example:8080';
const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);
const response = await fetch('https://api.example/', {
agent: url => url.protocol === 'http:' ? httpAgent : httpsAgent,
});Заменете URL на API и крайната точка на проксито. За публичен API, разрешен през публичен посредник, списъкът с HTTP проксита предоставя кандидати за proxyUrl. Двата агента могат да ползват един и същ HTTP прокси слушател; имената им се отнасят до заявката към дестинацията.
| URL, подаден на селектора | Избран агент |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Затова функцията продължава да избира подходящия агент, дори пренасочването да смени протокола на дестинацията. proxyUrl продължава да описва посредника независимо от това решение.
Създайте агентите веднъж за натоварването и ги използвайте повторно. Обработете върнатия статус и прочетете тялото на отговора в извикващия код. Този интерфейс за агенти е на node-fetch; вграденият fetch на Node използва друг транспортен интерфейс.