Първият 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 използва друг транспортен интерфейс.

Подобни статии