Перша URL-адреса може бути HTTPS, а адреса після переспрямування — 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,
});

Замініть адресу API та кінцеву точку проксі. Для публічного API, дозволеного через публічного посередника, список HTTP-проксі надає кандидатів для proxyUrl. Обидва агенти можуть використовувати той самий слухач HTTP-проксі; їхні назви стосуються запиту до адреси призначення.

URL-адреса, передана селекторуВибраний агент
https://…httpsAgent
http://…httpAgent

Тому функція й далі вибирає відповідний агент, якщо переспрямування змінює протокол призначення. proxyUrl і далі описує посередника незалежно від цього рішення.

Створіть агенти один раз для навантаження й використовуйте повторно. Обробіть повернутий статус і прочитайте тіло відповіді в коді, що викликає. Цей інтерфейс агента належить node-fetch; вбудований fetch у Node використовує інший транспортний інтерфейс.

Схожі статті