Як наладзіць проксі ў Node.js (Axios і ўбудаваны Fetch)
Updated:
Убудаваная опцыя proxy: { host, port } у Axios не працуе з мэтамі https://, бо яна не стварае тунэль HTTP CONNECT. Каб карэктна накіроўваць запыты Node.js і TypeScript праз аўтэнтыфікаваныя HTTP(S)-проксі VinaProxy, перадайце HttpsProxyAgent (https-proxy-agent) у Axios або дыспетчар undici.ProxyAgent ва ўбудаваны Node fetch().
new HttpsProxyAgent('http://user:pass@ip:port')- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
Канфігурацыя проксі: Axios супраць убудаванага fetch() у Node.js
Абедзве бібліятэкі прымаюць стандартныя URL-адрасы выгляду http://user:pass@ip:port з вашай панэлі кіравання VinaProxy:
| HTTP-кліент | Пакет | Рэкамендаваны фрагмент коду |
|---|---|---|
| Axios | npm i https-proxy-agent | axios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false }) |
Убудаваны fetch (Node 18+) | npm i undici | fetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') }) |
| Got | npm i hpagent | got(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } }) |
Пулінг злучэнняў і таймаўты ў Node.js: найлепшыя практыкі
- Заўсёды ўказвайце
proxy: falseразам зhttpsAgentу Axios, каб Axios ігнараваў канфліктныя сістэмныя зменныя асяроддзяHTTP_PROXY - Стварайце асобнік
HttpsProxyAgentабоProxyAgentадзін раз на кожны IP-адрас проксі па-за межамі цыкла, каб паўторна выкарыстоўваць пастаянныя сокеты keep-alive - Экспартуйце спіс проксі VinaProxy непасрэдна ў выглядзе масіва JSON праз наш Канвертар фарматаў проксі
Крок за крокам
- 1
Усталюйце https-proxy-agent (або undici)
Выканайце
npm install axios https-proxy-agentу вашым праекце Node.js. - 2
Стварыце асобнік HttpsProxyAgent
Ініцыялізуйце
const agent = new HttpsProxyAgent('http://user:pass@ip:port');, выкарыстоўваючы свае ўліковыя даныя VinaProxy. - 3
Перадайце httpsAgent і proxy: false у Axios
Выклічце
const res = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 });. - 4
Праверце выходны IP-адрас
Выведзіце ў лог
res.data, каб пераканацца, што адказ прыйшоў праз ваш выдзелены IP-адрас проксі.
Частыя пытанні
Чаму стандартны `proxy: { host, port, auth }` у Axios дае збой на HTTPS-адрасах?
Убудаваная канфігурацыя проксі ў Axios адпраўляе просты HTTP-запыт замест адкрыцця TLS-тунэля праз HTTP CONNECT. Выкарыстанне httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port') разам з proxy: false выпраўляе гэтую праблему.
Як выкарыстоўваць проксі з убудаваным `fetch()` у Node.js 18/20/22?
Імпартуйце ProxyAgent з undici і перадайце { dispatcher: new ProxyAgent('http://user:pass@ip:port') } у аб'ект опцый fetch().
Ці магу я пераўтварыць свой спіс проксі ў JSON для Node.js?
Так — укапіруйце радкі ip:port:user:pass у наш бясплатны Канвертар фарматаў проксі і абярыце фармат вываду JSON.
Узмацніце свае бэкенды і скраперы на Node.js статычнымі IP
Імгненныя безлімітныя выдзеленыя IPv4 і статычныя ISP-проксі ў 7 краінах.
Купіць проксі для Node.js