Вбудований фехт і ундици#
Новен 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#
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.