Jak skonfigurować proxy w Axios dla Node.js (tak, także dla HTTPS)

Ostatnia aktualizacja: August 11, 2026
Axios request travelling through a CONNECT proxy tunnel to an HTTPS origin
Podsumowanie AI
  • Skonfiguruj proxy w Axios dla Node.js z użyciem jawnej konfiguracji proxy, zmiennych środowiskowych oraz własnych agentów HTTP/HTTPS tam, gdzie Axios nie obsługuje tego automatycznie.
  • Zrozum tunelowanie CONNECT dla HTTPS, różnicę między URL-em proxy a URL-em celu oraz to, dlaczego proxy SOCKS wymagają agenta zamiast standardowej opcji proxy.
  • Wdrażaj pule proxy z ograniczonym retry, wyborem round-robin, scoringiem zdrowia, cooldownami i timeoutami per żądanie, bez wywoływania lawiny ponowień.
  • Diagnozuj problemy ECONNRESET, ETIMEDOUT, 407, TLS, DNS oraz priorytetu zmiennych środowiskowych, stosując celowane testy na warstwie transportu, proxy i źródła.
  • Trzymaj dane uwierzytelniające poza kodem źródłowym i spraw, by wymagany routing proxy w automatyzacjach produkcyjnych działał w trybie fail-closed.

Gdzieś na Stack Overflow akurat ktoś jest przekonany, że Axios „po cichu psuje się” przy proxy HTTPS. To jedno z najczęściej powtarzanych twierdzeń w poradnikach o proxy w Node.js i nie opisuje ono aktualnej wersji testowanej w tym przewodniku. Uruchomiłem lokalne środowisko testowe z prawdziwymi źródłami HTTP i HTTPS za dwoma proxy i Axios 1.19.0 poprowadził żądanie HTTPS przez poprawne zapytanie CONNECT, zamiast omijać proxy.

To nie znaczy, że opisywane problemy są wymyślone. Starsze wersje Axios miały realne błędy (zobacz issue #3384 i issue #4531), a nowsze wydania Node dodają drugi tor obsługi proxy z poziomu środowiska, który wymaga ostrożnej konfiguracji. Ten poradnik pokazuje, co naprawdę działa w Axios 1.19.0 dziś, wszystkie sposoby podpięcia proxy do żądań, wzorzec rotacji z interceptorami, którego prawie nikt nie pokazuje, oraz pełną tabelę błędów i poprawek na wypadek, gdyby coś jednak poszło nie tak.

Czym jest proxy w Axios i dlaczego ma znaczenie w Node.js?

Proxy w kontekście Axios to po prostu serwer pośredniczący stojący między Twoim procesem Node a docelową stroną. Żądanie trafia najpierw do proxy, proxy przekazuje je dalej, a strona docelowa widzi adres IP proxy zamiast Twojego. I to cała sztuka.

Programiści sięgają po to z kilku powodów: scrapowanie stron, które ograniczają liczbę żądań lub blokują po IP, testowanie działania aplikacji z innej lokalizacji geograficznej, kierowanie ruchu przez firmowy punkt wyjścia albo po prostu ukrycie własnego adresu IP przed logami dostępu po drugiej stronie. Oficjalna konfiguracja żądań Axios udostępnia wbudowaną opcję proxy z polami host, port, protocol i auth — jest tam od lat i to właśnie ona jako pierwsza pojawia się w każdym poradniku, w tym w tym.

Jest jednak istotny szczegół, który często się pomija: opcja proxy zachowuje się inaczej w zależności od tego, czy łączysz się z celem HTTP czy HTTPS, a także od wersji Axios, z której korzystasz. I właśnie dlatego powstał ten przewodnik.

Konfiguracja Node.js i Axios (szybka baza)

Pomiń ten krok, jeśli projekt już istnieje. Jeśli nie, zajmie to około dwóch minut.

mkdir axios-proxy-demo && cd axios-proxy-demo
npm init -y
npm install axios

Dodaj "type": "module" do package.json, jeśli chcesz używać importów ESM (ja wolę to rozwiązanie — CommonJS require() w demo proxy wygląda już trochę staro). Aktualna wersja Node LTS to v24.18.0, choć testy uruchomiłem konkretnie na v22.22.3, żeby wyniki nie zależały od najnowszych niuansów runtime.

Wklej to do app.js i uruchom node app.js:

import axios from 'axios';

const res = await axios.get('https://httpbin.org/ip');
console.log(res.data);

W odpowiedzi powinien pojawić się Twój prawdziwy adres IP. To punkt odniesienia — gdy proxy zacznie działać, to samo żądanie powinno zwrócić adres IP proxy.

Zapisz tę odpowiedź przed włączeniem proxy; dzięki temu będziesz mieć konkretny punkt porównania dla żądania przez proxy w następnym kroku.

Czy Axios naprawdę obsługuje proxy HTTPS? Ustalmy fakty

Krótka odpowiedź: tak, w aktualnym stabilnym wydaniu. Axios 1.19.0 opisuje tunelowanie CONNECT dla celów HTTPS za proxy HTTP. API pobrań npm odnotowało 117 890 039 pobrań Axios w okresie od 31 lipca do 6 sierpnia 2026, co pokazuje skalę użycia tej biblioteki. Gdy łączysz się z adresem HTTPS przez proxy, aktualny Axios wysyła żądanie CONNECT, aby utworzyć tunel, a uścisk TLS odbywa się bezpośrednio z rzeczywistym serwerem źródłowym. Sprawdziłem to sam: lokalny proxy HTTP, lokalne źródło HTTPS z certyfikatem self-signed i licznik CONNECT na proxy zwiększał się dokładnie tak, jak powinien.

Skąd więc niemal w każdym wątku na forum bierze się hasło „Axios HTTPS proxy broken”? Kilka powodów — i wszystkie są realne:

  • Stare wersje Axios. Linkowane przez ludzi zgłoszenia na GitHubie często mają kilka lat i opisują zachowanie zależne od wersji oraz konfiguracji, którego nie należy uogólniać na aktualny Axios.
  • Serwery proxy bez obsługi CONNECT. W takiej konfiguracji tunel się nie zestawi, a Axios powinien pokazać błąd; zanim uznasz, że proxy jest omijane, sprawdź faktyczną ścieżkę i błąd.
  • Mylenie opcji proxy z czymś, czym nie jest. Opcja proxy to instrukcja dla forward proxy, a nie uniwersalny przełącznik „przepuść cały ruch przez ten agent bez względu na wszystko”.

Chromium podał w 2023 roku, że ponad 90% nawigacji Chrome na głównych platformach korzystało z HTTPS. To dane historyczne z Chrome, a nie pełny spis całej sieci, ale dobrze pokazują, dlaczego zachowanie dla celów HTTPS jest centralnym punktem tego poradnika. Jeśli używasz starego wydania Axios, odtwórz problem na aktualnej linii, zanim założysz, że historyczny błąd nadal opisuje obecne zachowanie; przetestuj aktualizację we własnej aplikacji przed wdrożeniem.

Kiedy nadal warto użyć jawnego agenta

Wbudowana konfiguracja proxy jest w porządku przy jednym statycznym, klasycznym proxy. Ale przestaje wystarczać, gdy potrzebujesz kontroli per żądanie, rotacji proxy albo wsparcia dla SOCKS — wbudowana opcja Axios po prostu nie została do tego zaprojektowana. I tu przydaje się HttpsProxyAgent, który opisuję niżej. Traktuj natywną opcję jako „wystarczająco dobre dla jednego proxy i jednego zastosowania”, a podejście oparte na agencie jako „to, czego naprawdę chcesz w produkcji”.

Tor proxy środowiskowego w Node v24 i v22.21+

Nowsze wydania Node mają wbudowany tryb proxy z poziomu środowiska, aktywowany przez NODE_USE_ENV_PROXY=1 albo flagę --use-env-proxy. Zgodnie z dokumentacją CLI Node funkcja ta pojawiła się w v24.0.0 i została przeniesiona do v22.21.0 — więc powiedzenie „Node 22+” jest technicznie nieprecyzyjne; chodzi konkretnie o v22.21.0 i nowsze w tej gałęzi. Jeśli masz wcześniejszy patch Node 22, ta flaga po prostu nie istnieje.

Aktualny Axios i tak odczytuje HTTP_PROXY, HTTPS_PROXY oraz NO_PROXY przez zależność proxy-from-env, więc global-agent nie jest potrzebny na tym aktualnym torze Axios. Jeśli jednocześnie działa natywny tryb proxy środowiskowego w Node, w decyzji o routingu mogą brać udział dwie warstwy.

Dokumentacja Axios zauważa, że w wersjach Node, w których agent ma właściwość proxyEnv, Axios oddaje rozwiązywanie proxy Node zamiast robić to samemu. W praktyce oznacza to, że powinieneś wybrać jeden system i się go trzymać:

  • Niech zarządza tym Node: ustaw flagę, nie ustawiaj proxy w Axios i pozwól, by robotę wykonały zmienne środowiskowe.
  • Niech zarządza tym Axios: nie ustawiaj flagi Node i pozwól, by zadziałało wbudowane rozwiązywanie proxy z env.
  • Pełna kontrola ręczna: ustaw jawnie proxy: false i przekaż własny httpsAgent — to omija oba systemy automatyczne, co polecam, gdy potrzebujesz rotacji albo logiki per żądanie.

Sprawdziłem to po stronie Axios: ustawienie HTTP_PROXY w środowisku procesu potomnego skierowało żądanie przez mój lokalny proxy, a dopisanie odpowiedniego NO_PROXY sprawiło, że kolejne żądanie go ominęło. Czyli ścieżka przez zmienne środowiskowe naprawdę działa od ręki — uważać trzeba dopiero na scenariusz z dwoma trybami naraz.

5 sposobów podpięcia proxy do Axios (porównanie)

Zanim przejdziemy do kodu, warto zobaczyć cały obraz. Zbudowałem i przetestowałem każdą z tych metod na prawdziwym lokalnym środowisku proxy, a nie tylko na podstawie dokumentacji.

MetodaObsługa HTTPSObsługa autoryzacjiKontrola per żądaniePrzyjazna rotacjiZłożoność
Wbudowana opcja proxy✅ (aktualny Axios)Niska
Domyślne ustawienia axios.create()✅ (aktualny Axios)❌ (na cały egzemplarz)Niska
Zmienne środowiskowe (HTTP_PROXY/HTTPS_PROXY)Niska
httpsAgent + HttpsProxyAgent⚠️ (ręcznie)Średnia
Interceptor żądań + pula agentówŚrednio-wysoka

Użyj wbudowanej opcji, jeśli piszesz szybki skrypt i korzystasz z jednego proxy. Sięgnij po axios.create(), gdy wszystkie żądania w danym module mają iść przez to samo proxy bez powtarzania konfiguracji. Korzystaj ze zmiennych środowiskowych, gdy infrastruktura już centralnie zarządza routingiem proxy i chcesz po prostu to odziedziczyć. Wybierz jawnego agenta, gdy potrzebujesz możliwości, których natywna konfiguracja nie daje — a po interceptor sięgnij w momencie, gdy „kontrola” zaczyna oznaczać „rotację”.

Trzy metody routingu proxy Axios zbiegające się do docelowego HTTPS

Krok po kroku: podstawowa konfiguracja proxy w Axios

Najprostsze ustawienie używa wbudowanego obiektu proxy bezpośrednio przy żądaniu:

import axios from 'axios';

const res = await axios.get('https://httpbin.org/ip', {
  proxy: {
    host: '203.0.113.10',
    port: 8080,
    protocol: 'http',
  },
});

console.log(res.data);

Uruchom to, a w odpowiedzi powinien pojawić się adres IP proxy zamiast Twojego. Jeśli testujesz lokalnie z prawdziwym proxy, zwykle zajmuje to znacznie mniej niż sekundę — zwłaszcza w porównaniu z ręcznym ustawianiem systemowego proxy tylko po to, by sprawdzić jedno żądanie, co potrafi zjadać kwadrans, którego nie masz.

Porównaj tę odpowiedź z bazową. Udany test powinien pokazać publiczny adres IP proxy, a nie adres źródłowy zapisany wcześniej.

Korzystanie z axios.create() dla domyślnych ustawień na poziomie instancji

Jeśli każde żądanie w danym module ma iść przez to samo proxy, osadź konfigurację w instancji zamiast powtarzać ją za każdym razem:

const client = axios.create({
  proxy: {
    host: '203.0.113.10',
    port: 8080,
  },
  timeout: 15_000,
});

const res = await client.get('https://httpbin.org/ip');

Sprawdziłem, że ustawienie proxy: false na pojedynczym żądaniu poprawnie omija domyślną konfigurację instancji — przydatne, jeśli 95% wywołań ma iść przez proxy, ale kilka, na przykład ping kontrolny, nie powinno.

Ustawianie proxy przez zmienne środowiskowe

Przy centralnie zarządzanym routingu — pomyśl o kontenerach Docker albo środowiskach CI, gdzie zespół ops już ustawia zmienne proxy — nie musisz w ogóle dotykać konfiguracji Axios:

export HTTP_PROXY=http://203.0.113.10:8080
export HTTPS_PROXY=http://203.0.113.10:8080
export NO_PROXY=localhost,127.0.0.1

Aktualny Axios odczytuje te zmienne bez global-agent. Pamiętaj tylko o granicy wersji Node wspomnianej wyżej: jeśli działa też NODE_USE_ENV_PROXY, jasno określ właściciela routingu i przetestuj zachowanie NO_PROXY w docelowym runtime.

Krok po kroku: konfiguracja proxy HTTPS z httpsAgent (dla pełnej kontroli)

To jest konfiguracja, którą faktycznie polecam, gdy potrzebujesz czegoś więcej niż „jedno proxy na zawsze”. Zainstaluj aktualny pakiet agenta:

npm install https-proxy-agent

https-proxy-agent 9.1.0 wymaga Node 20 lub nowszego i wysyła do proxy poprawne żądanie CONNECT, zanim przetuneluje przez nie połączenie do celu.

import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent('http://203.0.113.10:8080');

const client = axios.create({
  proxy: false,        // zatrzymaj natywne rozwiązywanie Axios, żeby nie wtrącało się dodatkowo
  httpsAgent: agent,
  timeout: 15_000,
});

const res = await client.get('https://httpbin.org/ip');
console.log(res.data);

Ustaw proxy: false, gdy routingiem zarządza jawny agent. Dzięki temu konfiguracja jest jednoznaczna i Axios ani jego logika środowiskowa nie będą konkurować z przekazanym agentem.

Dodawanie uwierzytelniania do proxy

Wstaw dane logowania bezpośrednio w URL proxy:

const agent = new HttpsProxyAgent('http://myuser:mypassword@203.0.113.10:8080');

Jeśli hasło zawiera znaki specjalne — @, : i # to najczęstsze kłopotliwe przypadki — zakoduj je procentowo przed zbudowaniem URL albo sklejaj ciąg z encodeURIComponent() dla każdej składowej. Surowe @ w haśle zostanie odczytane jako początek części hosta i dostaniesz błąd połączenia, który na pierwszy rzut oka w ogóle nie wygląda na problem z kodowaniem.

Korzystanie z proxy SOCKS5 w Axios

Proxy SOCKS nie są zgodne z HttpsProxyAgent — do tego protokołu potrzebny jest inny agent:

npm install socks-proxy-agent
import { SocksProxyAgent } from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5://myuser:mypass@203.0.113.10:1080');

const client = axios.create({
  proxy: false,
  httpsAgent: agent,
});

socks-proxy-agent 10.1.0 również wymaga Node 20+. SOCKS5 warto wybrać wtedy, gdy pracujesz w sieciach firmowych, które udostępniają tylko bramę SOCKS, albo gdy dostawca proxy oferuje większą elastyczność protokołów niż zwykły HTTP proxy.

Rotacja proxy w Axios z użyciem interceptorów żądań

Losowy wybór proxy w kodzie wywołującym działa przy jednorazowym skrypcie. Rozsypuje się, gdy wysyłasz setki żądań, bo nie ma centralnego miejsca śledzącego martwe proxy, nie ma logiki ponawiania, a kod wyboru proxy kończy się skopiowany w wielu miejscach. System interceptorów Axios daje takiej logice jedno, testowalne miejsce; żaden z pięciu konkurencyjnych poradników, które sprawdzałem w SERP, nie używał tego wzorca.

Żądania GET Axios rotujące między trzema proxy z jednym ograniczonym ponowieniem

Budowa puli proxy

import axios, { AxiosError, InternalAxiosRequestConfig } from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';

class ProxyPool {
  private agents: HttpsProxyAgent<string>[];
  private index = 0;

  constructor(proxyUrls: string[]) {
    this.agents = proxyUrls.map((url) => new HttpsProxyAgent(url));
  }

  next(): HttpsProxyAgent<string> {
    const agent = this.agents[this.index];
    this.index = (this.index + 1) % this.agents.length;
    return agent;
  }
}

const pool = new ProxyPool([
  'http://user:pass@proxy1.example.com:8080',
  'http://user:pass@proxy2.example.com:8080',
]);

const client = axios.create({ timeout: 15_000 });

client.interceptors.request.use((config: InternalAxiosRequestConfig) => {
  config.proxy = false;
  config.httpsAgent = pool.next();
  return config;
});

Przetestowałem to na dwóch lokalnych proxy i potwierdziłem, że żądania przełączały się naprzemiennie — proxy A, potem proxy B, potem z powrotem A. Pamiętaj, że Axios wykonuje interceptory żądań w kolejności LIFO, więc jeśli masz inne interceptory (nagłówki autoryzacji, logowanie), kolejność ma większe znaczenie, niż się wydaje.

Dodanie interceptora odpowiedzi z zabezpieczeniem retry

To właśnie tutaj większość domowych skryptów rotujących robi się niestaranna. Ślepe ponawianie każdego błędu na nieograniczonej puli może zamienić jedno wadliwe żądanie w kaskadowy bałagan — szczególnie w przypadku metod nieidempotentnych, takich jak POST, gdzie ponowienie może duplikować efekt uboczny, którego naprawdę nie chcesz powielać.

type RetryableConfig = InternalAxiosRequestConfig & {
  __proxyRetryCount?: number;
};

client.interceptors.response.use(
  undefined,
  async (error: AxiosError) => {
    const config = error.config as RetryableConfig | undefined;
    if (!config) throw error;

    const method = String(config.method ?? 'get').toUpperCase();
    config.__proxyRetryCount ??= 0;
    if (method !== 'GET' || config.__proxyRetryCount >= 1) throw error;

    config.__proxyRetryCount += 1;
    config.proxy = false;
    config.httpsAgent = pool.next();
    return client.request(config);
  }
);

Przetestowałem to na celowo uszkodzonym proxy i potwierdziłem, że uruchamia się dokładnie jedno ponowienie na alternatywnym agencie — bez nieskończonej pętli, bez retry dla POST. To właśnie taki limit jest potrzebny: polityka retry, która jasno mówi, które żądania można bezpiecznie odtworzyć, a nie sztuczka „po prostu spróbuj jeszcze raz, aż zadziała”.

Rozwiązywanie problemów z proxy Axios przez cURL, 407 i sprawdzenia timeoutu

Tabela diagnostyczna błędów: mapowanie problemu na poprawkę

Dodaj tę sekcję do zakładek. To są błędy, które naprawdę pojawiają się w issue na GitHubie Axios i na Stack Overflow, a nie hipotetyczne przypadki.

Błąd / objawPrawdopodobna przyczynaNaprawa
ECONNREFUSEDZły host/port albo serwer proxy nie działaZweryfikuj połączenie przez curl -x http://host:port target-url zanim ruszysz kod Axios
407 Proxy Authentication RequiredBrak lub zły login/hasłoDodaj auth: { username, password } do konfiguracji proxy albo wstaw dane do URL HttpsProxyAgent
403 ForbiddenSerwer docelowy albo WAF odrzucił żądanie lub IP proxySprawdź politykę dostępu strony, uwierzytelnienie i tempo żądań; nie traktuj innego nagłówka ani innego IP jako prawa do obejścia ograniczeń
Odpowiedź pokazuje Twój prawdziwy IPNO_PROXY, proxy:false, jawny bezpośredni agent albo konfiguracja historyczna/specyficzna dla wersji może omijać proxySprawdź, która warstwa odpowiada za routing; zweryfikuj ścieżkę na kontrolowanym endpointcie IP i w razie potrzeby użyj jawnego agenta
ETIMEDOUTCzas połączenia lub odpowiedzi przekroczył ustawiony timeoutSprawdź, gdzie znika czas; zwiększ timeout tylko jeśli uzasadnia to charakter zadania, w przeciwnym razie wymień lub schłodź wadliwą trasę
ECONNRESET w trakcie odpowiedziProxy, sieć lub serwer docelowy zamknął połączenieZapisz, na którym hopie wystąpił błąd; ponawiaj tylko żądania bezpieczne do powtórzenia i z ograniczonym budżetem retry
502 Bad Gateway za NginxŹle skonfigurowany proxy_pass w Nginx albo timeout Axios nie pasuje do NginxSprawdź proxy_connect_timeout i proxy_read_timeout (oba domyślnie 60 s) i dopasuj je do timeoutu w Axios
ERR_TLS_CERT_ALTNAME_INVALIDZły typ agenta dla danego celu albo certyfikat self-signedUpewnij się, że używasz właściwego agenta dla protokołu; ustaw rejectUnauthorized: false tylko do testów lokalnych — nigdy w produkcji

Szybka lista kontrolna debugowania

Gdy coś przestaje działać i nie wiesz dlaczego, przejdź przez to po kolei:

  1. Przetestuj proxy bezpośrednio przez curl -x http://host:port https://your-target.com. Jeśli nie działa, sprawdź łączność z proxy, uwierzytelnienie i sam cel, zanim zmienisz cokolwiek w Axios. Jeśli działa, ścieżka Axios nadal wymaga osobnej weryfikacji.
  2. Potwierdź, jakich wersji Axios i Node faktycznie używasz, i porównuj historyczne zgłoszenia z tą samą wersją oraz konfiguracją, zanim zastosujesz ich poprawki.
  3. Ustal, który system rozwiązuje proxy — natywna konfiguracja Axios, rozwiązywanie proxy z env w Axios, wbudowany tryb Node dla env proxy czy jawny agent. Nigdy nie pozwól, żeby więcej niż jeden system zarządzał tym samym żądaniem.
  4. Sprawdź NO_PROXY, czy przypadkiem nie dopasowuje hosta, którego nie chciałeś wykluczyć.
  5. Jeśli używasz jawnego agenta, upewnij się, że ustawiono proxy: false, żeby Axios nie próbował obsługiwać tego podwójnie.

Kiedy całkiem odpuścić własną infrastrukturę proxy

Wszystko powyższe jest naprawdę przydatne, jeśli Twoim celem jest routowanie dowolnego ruchu — testy sieci firmowej, testy geograficzne aplikacji albo kontrolowany wychodzący ruch sieciowy. Ale wielu programistów trafia do tematu „jak ustawić proxy w Axios”, bo tak naprawdę chcą danych ze strony internetowej, a proxy jest tylko środkiem do celu.

Jeśli to Twój przypadek, warto zadać sobie pytanie, czy naprawdę potrzebujesz proxy, czy raczej API do scrapowania, które przejmie infrastrukturę za Ciebie. Open API Thunderbit przyjmuje URL i schemat, a zwraca ustrukturyzowany JSON — bez parsowania surowego HTML, bez bibliotek agentów i bez pilnowania puli proxy. Endpoint /extract obsługuje strony renderowane przez JS, zabezpieczenia anty-bot i CAPTCHA po stronie serwera, a lżejszy endpoint /distill po prostu zamienia stronę na czysty Markdown, jeśli tylko tego potrzebujesz. Jest też serwer MCP udostępniający narzędzia takie jak thunderbit_extract i thunderbit_suggest_fields, dzięki czemu asystenci kodowania, tacy jak Claude czy Cursor, mogą pobierać dane strukturalne w trakcie pracy bez dotykania konfiguracji proxy, a także CLI do terminala i workflow CI.

ObszarWłasne Axios + proxyThunderbit API/MCP/CLI
Pozyskiwanie i rotacja proxyZarządzasz samObsługiwane po stronie serwera
Trudności związane z przeglądarką i dostępemObsługujesz warstwę przeglądarki/sieciZarządzane przez usługę w granicach opisanych możliwości
Strony renderowane przez JSPotrzebna przeglądarka headlessrenderMode: full
Format wyjściowySurowy HTML → sam parsujeszUstrukturyzowany JSON na podstawie schematu
Utrzymanie, gdy strony się zmieniająUtrzymujesz parsowanie/selektoryZarządzana warstwa ekstrakcji ogranicza część utrzymania po stronie aplikacji

Uczciwe ujęcie sprawy: jeśli potrzebujesz routingu ruchu do testów albo w środowisku firmowym, nic z tego nie zastępuje Axios i konfiguracji proxy. Jeśli Twoim rezultatem mają być ustrukturyzowane dane z sieci, podejście API-first może zmniejszyć ilość kodu dotyczącego proxy, przeglądarki i parsowania, który utrzymuje Twoja aplikacja. Przy pobraniu z 7 sierpnia 2026 dokumentacja limitów API Thunderbit podawała, że plan Free ma limit 10 żądań na minutę i 2 równoczesne żądania. Traktuj to jako limit czasowy i sprawdź stronę ponownie, zanim oprzesz na tym produkcję.

Podsumowanie

Główna lekcja jest trochę sprzeczna z tym, co mówią starsze poradniki: aktualny Axios dokumentuje i w lokalnym teście poprawnie użył tunelowania CONNECT dla celu HTTPS. Historyczne błędy nadal mają znaczenie, ale wymagają kontekstu wersji i konfiguracji. Natywna konfiguracja to dobry, prosty punkt startowy; gdy potrzebujesz kontroli per żądanie, wsparcia SOCKS albo rotacji, jawny HttpsProxyAgent (lub SocksProxyAgent) połączony z proxy: false daje jaśniejszy podział odpowiedzialności. A jeśli rotujesz przez pulę w produkcji, interceptory żądań i odpowiedzi zapewniają centralne, testowalne miejsce do realizacji tego zadania — tylko pamiętaj, by logika retry miała zabezpieczenie przed pętlą i odtwarzała wyłącznie żądania, które naprawdę są bezpieczne do powtórzenia.

Zapisz sobie tabelę diagnostyczną na kolejną noc, gdy konfiguracja proxy rzuci w Ciebie enigmatycznym błędem o 2:00 w nocy. A jeśli zauważysz, że więcej czasu spędzasz na debugowaniu samego proxy niż na korzystaniu z danych, które próbujesz pobrać, warto sprawdzić, czy narzędzie do ekstrakcji oparte na API nie rozwiąże rzeczywistego problemu szybciej niż cała infrastruktura.

FAQ

Czy Axios natywnie obsługuje proxy HTTPS?
Tak, w aktualnym Axios dla klasycznego proxy HTTP: bieżąca dokumentacja opisuje tunelowanie CONNECT dla celów HTTPS, a Axios 1.19.0 przeszedł tę trasę w lokalnym teście. Historyczne wydania i konkretne konfiguracje proxy powodowały realne błędy, więc sprawdzaj dokładną wersję i typ proxy, zamiast zakładać powszechny sukces albo powszechną awarię.

Jak rotować proxy w Axios?
Użyj interceptora żądań, aby przed każdym wysłaniem przypisywać inne httpsAgent z puli proxy, a do tego dodaj interceptor odpowiedzi, który ponawia nieudane żądanie przez inne proxy. Ogranicz retry do jednego i tylko dla metod idempotentnych, takich jak GET, żeby przypadkiem nie odtworzyć żądania, którego nie powinno się powtarzać.

Dlaczego Axios pokazuje mój prawdziwy IP, mimo że używam proxy?
Sprawdź, czy NO_PROXY, proxy:false, jawny bezpośredni agent albo routowanie specyficzne dla środowiska wdrożeniowego nie omija proxy. Zapisz wersje Axios i Node oraz przetestuj proxy niezależnie przez cURL. Jeśli potrzebujesz jednoznacznego routingu per żądanie, użyj HttpsProxyAgent z proxy:false i zweryfikuj obserwowany IP na kontrolowanym endpointcie.

Czy mogę używać proxy SOCKS5 z Axios?
Tak, przez pakiet socks-proxy-agent. Utwórz instancję SocksProxyAgent z adresem SOCKS i przekaż ją jako httpsAgent w konfiguracji Axios — tylko upewnij się, że nie podajesz też HttpsProxyAgent, bo oba protokoły wymagają różnych typów agentów.

Jaka jest różnica między opcją proxy a httpsAgent w Axios?
Opcja proxy to wbudowana konfiguracja Axios dla pojedynczego, statycznego proxy i dobrze działa w prostych przypadkach w aktualnych wersjach. httpsAgent przyjmuje własny agent Node.js — taki jak HttpsProxyAgent albo SocksProxyAgent — dając Ci bezpośrednią kontrolę per żądanie nad routingiem, uwierzytelnianiem i rotacją, do czego natywna opcja nigdy nie była projektowana.

Dowiedz się więcej

Ke
Ke
CTO w Thunderbit | Starszy data scientist i ekspert ML Dzięki prawie dziesięciu latom doświadczenia w uczeniu maszynowym i data science, Ke Shen jest absolwentem Columbia University i byłym starszym data scientistą w Walmart Labs. Dysponując dogłębną, uznaną przez branżowych ekspertów wiedzą w zakresie Python, R, Java i statystyki, dzieli się sprawdzonymi w boju spostrzeżeniami na temat wdrażania złożonych algorytmów AI — od teorii po architekturę gotową do produkcji.
Topics
Proxy AxiosProxy Node.jsProxy HTTPS
Spis treści
Thunderbit · Agent AI do danych z sieci

Wyodrębnij dane z dowolnej strony w 1 klik

Zaufało nam ponad 250 000 użytkowników
dostępny darmowy plan
Od strony WWW do arkusza
Opisz, czego potrzebujesz — agent AI Thunderbit to zeskrapuje i wyeksportuje do Excel, Google Sheets, Airtable lub Notion. Start jest darmowy.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week