So richten Sie einen Proxy in Axios ein: Vollständige Anleitung

Erfahren Sie, wie Sie Proxys in Axios einrichten, und lesen Sie mehr über Bright Data-Proxys, die mit Axios kompatibel sind.
9 min read
How To Set a Proxy in Axios

Dieser Axios-Proxy-Leitfaden behandelt die folgenden Themen:

  • Warum Sie Proxys in Axios verwenden sollten.
  • Wie man HTTP-, HTTPS- oder SOCKS-Proxy in Axios einrichtet.
  • Wie man mit Authentifizierung und Proxy-Rotation umgeht.

Was ist Axios und warum benötigen Sie einen Proxy?

Axios ist einer der am häufigsten verwendeten HTTP-Clients im JavaScript-Ökosystem. Er bietet eine Promise-basierte, einfach zu bedienende, intuitive API für die Ausführung von HTTP-Anfragen und den Umgang mit benutzerdefinierten Headern, Konfigurationen und Cookies.

Warum benötigen Sie einen Proxy in Axios? Ganz einfach! Indem Sie Ihre Anfragen über einen Proxy weiterleiten, können Sie Ihre IP-Adresse maskieren, was es für den Zielserver schwieriger macht, Sie zu identifizieren und zu blockieren. Diese zusätzliche Datenschutzebene trägt dazu bei, die Integrität Ihrer Anwendung aufrechtzuerhalten und IP-Sperren oder -Einschränkungen zu vermeiden. Sie können mit Fetch dasselbe Ergebnis erzielen, wie in unserem Node-FetchProxy-Handbuch beschrieben.

Einen Proxy in Axios verwenden

In diesem Axios-Proxy-Abschnitt erfahren Sie, wie Sie einen HTTP-, HTTPS- oder SOCKS-Proxy in Axios einrichten.

Voraussetzungen

Zuerst müssen Sie sicherstellen, dass das axios-npm-Paket installiert ist. Fügen Sie es zu den Abhängigkeiten Ihres Projekts hinzu mit:

npm install axios 

In Node.js unterstützt Axios nativ HTTP- und HTTPS-Proxys über die Proxy-Konfiguration. Wenn Sie also HTTP/HTTPS-Proxys mit Axios in einer Node.js-Anwendung verwenden möchten, können Sie loslegen!

Wenn Sie stattdessen einen Nicht-HTTP/S-Proxy verwenden möchten, müssen Sie sich auf das Projekt Proxy Agents verlassen. Diesesd bietet http.Agent-Implementierungen zur Integration von Axios mit Proxys in verschiedenen Protokollen. Im Detail sind die verschiedenen npm-Bibliotheken, die das durch das Protokoll kategorisierte Projekt verfügbar macht:

Fantastisch! Sie sind bereit, Proxys in Axios einzurichten!

HTTP/HTTPS-Proxys

So sollte die URL Ihres HTTP/HTTPS-Proxys aussehen:

"<PROXY_PROTOCOL>://<PROXY_HOST>:<PROXY_PORT>" 

ist „http“ für HTTP-Proxys und „https“ für HTTPS-Proxys. ist im Allgemeinen eine Roh-IP, während es sich bei um den Port handelt, den der Proxyserver abfragt.

Angenommen, dies ist die URL Ihres HTTP-Proxys:

"http://47.88.62.42:80"

Sie können diesen Proxy in Axios wie folgt einrichten:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "48.88.62.42",

        port: "80"

    }

})

Wie Sie sehen können, läuft alles darauf hinaus, die Proxy-URL in zwei Teile aufzuteilen und diese in der Proxy-Konfiguration korrekt anzugeben. Axios stellt nun die Anfrage an die URL, die als Parameter über den angegebenen HTTP-Proxyserver übergeben wurde.

Lassen Sie uns überprüfen, ob der obige Axios-Proxy-Ansatz funktioniert! 

Rufen Sie die URL eines HTTP- oder HTTPS-Proxyservers kostenlos online ab. Schauen Sie sich zum Beispiel das hier an:

Protocol: HTTP; IP Address: 52.117.157.155; Port: 8002

Die vollständige Proxy-URL lautet „http://52.117.157.155:8002.“

Um zu überprüfen, ob der Proxy wie erwartet funktioniert, können Sie den /ip-Endpunkt aus dem HTTPBin-Projekt als Ziel verwenden. Diese öffentliche API gibt die IP der eingehenden Anfrage zurück, daher sollte sie die IP des Proxyservers zurückgeben. 

Das Snippet des Skripts Node.js wird wie folgt aussehen:

import axios from "axios"

async function testProxy() {

    // perform the desired request through the HTTP proxy

    const response = axios.get("https://httpbin.io/ip", {

        proxy: { 

            protocol: "http", 

            host: "52.117.157.155",

            port: "8002" 

        }

    })

    // print the result

    console.log(response.data)

}

testProxy()

Führen Sie das Script aus und es sollte Folgendes protokollieren:

{ "origin": "52.117.157.155" }

Dies ist dieselbe IP wie der Proxyserver, was bedeutet, dass der Proxyserver wie erwartet funktioniert und Ihre IP sicher ist! 

Leider erhalten Sie nicht das gleiche Ergebnis, wenn Sie das Skript ausführen. Genauer gesagt, wird dies mit einem Fehler enden. Aber warum? Weil kostenlose Proxys kurzlebig und unzuverlässig sind! Sie können sie zu Lernzwecken verwenden, sollten sich aber in einem realen Szenario nicht auf sie verlassen. 

Warnung: Kostenlose Proxy-Dienste sind unzuverlässig, langsam, fehleranfällig, datenhungrig und kurzlebig. Meiden Sie sie! 

Wie lautet die Lösung? Premium-Proxys von Bright Data, dem besten Anbieter auf dem Markt Abonnieren und testen Sie unsere zuverlässigen Proxys kostenlos.

SOCKS-Proxys

Wenn Sie versuchen, den String „socks“ im Protokollfeld des Proxy-Konfigurationsobjekts einzugeben, erhalten Sie den folgenden Fehler:

AssertionError [ERR_ASSERTION]: protocol mismatch

  // ...

 {

  generatedMessage: false,

  code: 'ERR_ASSERTION',

  actual: 'dada:',

  expected: 'http:',

  operator: '=='

}

Das liegt daran, dass Axios SOCKS-Proxys nicht nativ unterstützt. Daher benötigen Sie eine zusätzliche Abhängigkeit, um das gewünschte Ergebnis zu erzielen.

Fügen Sie die socks-proxy-agent npm-Bibliothek mit dem folgenden Befehl zu den Abhängigkeiten Ihres Projekts hinzu:

npm install socks-proxy-agent

Mit diesem Paket können Sie eine Verbindung zu einem SOCKS-Proxyserver herstellen, während Sie HTTP- oder HTTPS-Anfragen in Axios stellen.

Importieren Sie dann die SOCKS-Proxy-Agent-Implementierung aus der Bibliothek:

const SocksProxyAgent = require("socks-proxy-agent")

Oder wenn Sie ein ESM-Benutzer sind:

import { SocksProxyAgent } from "socks-proxy-agent"

Angenommen, dies ist die URL Ihres SOCKS-Proxys:

"socks://183.88.74.73:4153"

Beachten Sie, dass das Proxy-Protokoll einen der folgenden Werte haben kann: „socks“, „socks5″, „socks4″.

Speichern Sie sie in einer Variablen und übergebe sie an den SocksProxyAgent-Konstruktor:

const proxyURL = "socks://183.88.74.73:4153"

const proxyAgent = new SocksProxyAgent(proxyURL)

SocksProxyAgent() initialisiert eine http.Agent-Instanz, um HTTP/HTTPS-Anfragen über die Proxy-URL auszuführen.

Sie können jetzt einen SOCKS-Proxy mit Axios wie folgt verwenden:

axios.get(targetURL, { 

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

httpAgent und httpsAgent definieren den benutzerdefinierten Agenten, der bei der Ausführung von HTTP- bzw. HTTPS-Anfragen verwendet werden soll. Mit anderen Worten, die von Axios gestellte HTTP- oder HTTPS-Anfrage durchläuft den angegebenen SOCKS-Proxy. Auf ähnliche Weise können Sie das https-proxy-agent npm-Paket als alternative Methode verwenden, um HTTP/HTTPS-Proxys in Axios festzulegen.

Alles zusammenfügen:

import axios from "axios"

import { SocksProxyAgent } from "socks-proxy-agent"

async function testProxy() {

    // replace with the URL of your SOCKS proxy 

    const proxyURL = "socks://183.88.74.73:4153"

    // define the HTTP/HTTPS proxy agent

    const proxyAgent = new SocksProxyAgent(proxyURL)

    // perform the request via the SOCKS proxy

    const response = await axios.get("https://httpbin.io/ip", { 

        httpAgent: proxyAgent,     

        httpsAgent: proxyAgent 

    })

    // print the result

    console.log(response.data) // { "origin": "183.88.74.73" }

}

testProxy()

Folgen Sie dem Link, um weitere Beispiele für die Konfiguration eines SOCKS-Proxys in Axios zu sehen.

Axios-Proxy: Erweiterte Anwendungsfälle

Jetzt, da Sie die Grundlagen der Axios-Proxy-Integration kennen, sind Sie bereit, sich mit komplexeren Techniken zu befassen.

Einen Proxy global einrichten

Sie können einen Proxy global einrichten, indem Sie ihn direkt in einer Axios-Instanz angeben:

const axiosInstance = axios.create({

    proxy: { 

        protocol: "<PROXY_PROTOCOL>", 

        host: "<PROXY_HOST>",

        port: "<PROXY_PORT>" 

    },

    // other configs...

})

Oder wenn Sie ein Proxy Agents-Benutzer sind:

// proxy Agent definition ...

const axiosInstance = axios.create({

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

Alle Anfragen, die mit axiosInstance gestellt wurden, werden jetzt automatisch über den angegebenen Proxy geleitet.

Umgang mit der Proxy-Authentifizierung in Axios

Um nur zahlenden Benutzern den Zugriff auf Premium-Proxys zu ermöglichen, schützen Proxy-Anbieter sie durch Authentifizierung. Der Versuch, eine Verbindung zu einem authentifizierten Proxy ohne Benutzernamen und Kennwort herzustellen, führt zu der Fehlermeldung 407 Proxy Authentication Required.

 Konkret lautet die Syntax der URL eines authentifizierten Proxys wie folgt:

[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]

Eine reale URL für die Verbindung zu einem authentifizierten Proxy könnte beispielsweise lauten:

http://admin:[email protected]:8391

In diesem Fall würde das Feld für die Proxy-URL lauten:

  • PROTOCOL>: HTTP
  • : 156.127.0.192
  • : 8391
  • : Admi 
  • >PASSWORD>: lK4w90MEe45YIkOpk

Um mit der Proxy-Authentifizierung in Axios umzugehen, müssen Sie nur den Benutzernamen und das Passwort im Feld auth von proxy angeben:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "156.127.0.192",

        port: "8381",

        auth: {

            username: "admin",

            password: "lK4w90MEe45YIkOpk"

        }

    }

})

Großartig! So einfach ist das.

Wenn Sie stattdessen ein Proxy Agents-Benutzer sind, haben Sie zwei Möglichkeiten, mit der Authentifizierung umzugehen:

  1. Fügen Sie die Anmeldedaten direkt in die Proxy-URL ein:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
  1. Legen Sie die Optionen für den Benutzernamen und das Passwort in einem URL-Objekt fest:
const proxyOpts = new URL("http://156.127.0.192:8391")

proxyOpts.username = "admin"

proxyOpts.password = "lK4w90MEe45YIkOpk"

const proxyAgent = new SocksProxyAgent(proxyOpts)

Die gleichen Ansätze funktionieren auch mit HttpsProxyAgent.

Proxys über Umgebungsvariablen einstellen

Eine weitere Möglichkeit, einen Proxy global in Axios zu konfigurieren, ist das Festlegen der folgenden Umgebungsvariablen:

  • HTTP_PROXY: Die URL des Proxyservers, der für HTTP-Anfragen verwendet werden soll.
  • HTTPS_PROXY: Die URL des Proxyservers, der für HTTPS-Anfragen verwendet werden soll.

Richten Sie sie beispielsweise unter Linux oder macOS mit den folgenden Befehlen ein:

export HTTP_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

export HTTPS_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

Wenn Axios diese Umgebungsvariablen erkennt, liest es aus ihnen die Proxy-Einstellungen, einschließlich der Anmeldeinformationen für die Authentifizierung. Setzen Sie das Feld proxy auf false, damit Axios diese Umgebungsvariablen ignoriert. Beachten Sie, dass Sie eine NO_PROXY-Umgebung auch als kommagetrennte Liste von Domains definieren können, die nicht als Proxy verwendet werden sollen.

Beachten Sie, dass derselbe Mechanismus auch funktioniert, wenn Proxys in cURL verwendet werden.

Implementierung rotierender Proxys

Wenn Sie denselben Proxyserver häufig verwenden, blockiert die Ziel-Website irgendwann ihre IP-Adresse. Um dies zu verhindern, müssen Sie unbedingt sicherstellen, dass jede von Ihnen ausgeführte Anfrage von einem anderen Proxyserver stammt. Eine einfache Methode, um dies zu erreichen, ist wie folgt:

  1. Definiert eine Liste von Objekten, von denen jedes die Informationen enthält, um eine Verbindung zu einem anderen Proxy herzustellen.
  2. Wählen Sie vor jeder Anfrage ein Proxy-Objekt nach dem Zufallsprinzip aus.
  3. Konfigurieren Sie den ausgewählten Proxy in Axios.

Der obige Ansatz setzt voraus, dass Sie Zugriff auf einen Pool zuverlässiger Proxyserver haben. Der Zugriff auf viele Server kann Sie viel Geld an Gebühren kosten. Außerdem kann die Integration dieser Logik in Ihren Code umständlich und formalgetreu sein.

Hier kommt Bright Data ins Spiel und bietet rotierende Proxys an, die automatisch die IP-Adressen für Sie wechseln! Sie erhalten Zugriff auf Proxys, die bei jeder Verbindung eine neue IP-Adresse bereitstellen. Diese Proxyserver sind in 195 Ländern zugänglich, haben eine außergewöhnliche Netzwerkverfügbarkeit und garantieren eine Erfolgsquote von 99,9 %. Probieren Sie die rotierenden Proxys von Bright Data aus!

Fazit

In diesem Axios-Proxy-Tutorial haben Sie gelernt, warum Sie Proxys in Axios einführen sollten und wie das geht. Sie wissen jetzt, wie Sie einen HTTP/HTTPS/SOCKS-Proxy in Axios einrichten können. Wie hier zu sehen, sind dafür nur ein paar Codezeilen erforderlich!

Sie haben auch erkannt, dass Sie keine kostenlosen Proxydienste verwenden sollten. Es bleibt also nur noch zu entscheiden, welcher Proxy-Anbieter gewählt werden soll. Sparen Sie Zeit und Energie und entscheiden Sie sich für den Besten auf dem Markt, Bright Data.

Bright Data betreibt die weltweit besten Proxy-Server und betreut Fortune-500-Unternehmen sowie mehr als 20.000 Kunden.

Insgesamt handelt es sich um eines der größten und zuverlässigsten Proxynetzwerke auf dem Markt. Wenden Sie sich an einen unserer Vertriebsmitarbeiter und finden Sie heraus, welches der Produkte von Bright Data Ihren Anforderungen am besten entspricht.