Дозвольте node-fetch вибрати проксі-агент після переспрямування
Передайте функцію агента для адрес HTTP і HTTPS, щоб після переспрямування вибирався відповідний проксі-агент.
Перша 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 використовує інший транспортний інтерфейс.