Інтеграція · початківця

Як використовувати проксії в Node.js з fetch, undici, axios і отримав

На підтримувані випуски Node.js, NODE USE ENV PROXY=1 дозволяє HTTP PROXY, HTTPS PROXY і NO PROXY для вбудованої fetch; --use-env-proxy доступна в Node.js 22.21+ і 24.5+. Відвертий undici ProxyAgent або EnvHttpProxyAgent є альтернативою. Бібліотеки з власними транспортними засобами або користувальницьких агентів потребують окремої конфігурації, тому тестуйте кожен інструмент, замість того, як припустимо весь процес покривається.

2 хв читати 6 секцій Перевірено Редакція Proxy Cyber

Вбудований фехт і ундици#

Новен fetch - undici. Подаруйте їй ProxyAgent за запитом dispatcher або встановити його по всьому світу setGlobalDispatcher.

ундици
import { fetch, ProxyAgent, setGlobalDispatcher } from "undici";

const proxy = new ProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");

// Per request
const res = await fetch("https://api.ipify.org", { dispatcher: proxy });
console.log(await res.text());

// Or globally, for every fetch in the process
setGlobalDispatcher(proxy);

A ProxyAgent З'єднання басейнів, тому послідовні запити можуть повторно використовувати один з'єднання і тому один вихід. Для свіжого виходу за запитом створити агент з pipelining: 0 і connections: 1, або просто використовувати різні -sid- за логічну секцію.

аксіос#

есоксиос proxy варіант не тунельний HTTPS надійно; стандартний підхід є агентом з https-proxy-agent і proxy: false.

аксіос
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000");
const client = axios.create({ httpsAgent: agent, httpAgent: agent, proxy: false, timeout: 30000 });

const { data } = await client.get("https://api.ipify.org");
console.log(data);

У#

У
import got from "got";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
const body = await got("https://api.ipify.org", { agent: { https: agent, http: agent }, timeout: { request: 30000 } }).text();
console.log(body);

СОЦІ5#

шкарпетки-proxy-agent
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new SocksProxyAgent(process.env.PROXY_URL);
const response = await fetch("https://api.ipify.org", { agent });
console.log(await response.text());

Внутрішнє середовище#

не прочитане HTTPS_PROXY за замовчуванням. Останні undici версії корабель EnvHttpProxyAgent, який робить; встановити його як глобальний диспетчер і весь процес, включаючи сторонні бібліотеки, побудовані на fetch, йде через проксі.

ЭнВХттпПроксиАгент
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
// HTTPS_PROXY=http://USER-cc-us:PASS@res.proxy-cyber.com:9000 NO_PROXY=localhost node app.js
setGlobalDispatcher(new EnvHttpProxyAgent());

Конваптовалюта і обертання#

  • Молода ProxyAgent за липкі сеанси (різак) -sid-), поділений усіма запитами цієї сесії.
  • Для широкого обертання, зберігайте один агент, але відключіть з'єднання, або запустіть N агенти з N сеансом, і закругліть їх.
  • Зручності UND_ERR_SOCKET і ECONNRESET: відійшов житловий виїзд; птиця один раз, наступний з'єднання підбирає ще одну.

Питання, які говорять#

Чому axios ігнорувати мій проксі для HTTPS?

Його вбудована проксі-підтримка обмежена для тунелів CONNECT. Використовуйте HTTPS-проксі-агент, як httpsАгент і встановити проксі: помилково так аксіос не намагається впоратися з ним самостійно.

Чи можу я проксіювати лише деякі запити?

Так. Пройдіть відправник або агент на прохання, які це потрібно, і залиште інших доручених; нічого не є глобальним, якщо ви зателефонуєте setGlobalDispatcher.

Ваш рахунок

Керуйте проксі в одному акаунті

Порівняти мережі, розмістити замовлення та дотримуйтесь ваших запитів на баланс та підтримку з однієї панелі інструментів. Наші відгуки про оплату та надає деталі з'єднання після доставки.

Створити акаунт