de
English
Español
中國人
Tiếng Việt
Українська
Português
Français
भारतीय
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia
Polski Axios ist eine JavaScript-Bibliothek zum Senden von HTTP-Anfragen, die asynchrone Datenverarbeitung, Antwort- und Fehlerbehandlung unterstützt und sich sowohl in Client-Anwendungen als auch in Node.js-basierte Server leicht integrieren lässt. In vielen praktischen Szenarien, insbesondere bei einer großen Anzahl von Anfragen oder wenn der Zugriff auf Inhalte begrenzt ist, wird es oft notwendig, einen Proxy in Axios zu setzen. Zwischengeschaltete Server ermöglichen es, die IP-Adresse des Clients zu ändern und die Anfragen über einen zwischengeschalteten Knoten zu leiten. Da die Verwendung eines Axios-Proxys eine genaue Konfiguration und ein Verständnis der Verbindungsarchitektur erfordert, werden in diesem Handbuch Methoden für die Verbindung von HTTP(S)- und SOCKS-Protokollen, Details zur Authentifizierung, Agentenkonfiguration sowie häufige Fehler und deren Behebung vorgestellt.
Sie wird in den folgenden Szenarien angewendet:
Die Verwendung von Axios mit richtig konfigurierten Zwischenknoten ermöglicht die Umsetzung dieser Szenarien. Es ist jedoch wichtig zu verstehen, dass die Bibliothek selbst nur ein Werkzeug zum Senden von HTTP-Anfragen ist. Die Fähigkeit, Sperren zu umgehen, auf geobeschränkte Inhalte zuzugreifen und den Datenverkehr zu verwalten, hängt davon ab:
Axios unterstützt je nach Protokoll die folgenden Typen:
Für die Integration müssen Sie:
Wichtig: Die Bibliothek unterstützt nicht SSH, FTP, Shadowsocks oder ähnliche Protokolle. Um sie zu verwenden, müssen separate Tools verwendet werden, oder das Tunneling sollte auf Betriebssystemebene konfiguriert werden.
Vor der Einrichtung müssen mehrere technische Aspekte berücksichtigt werden: welches Protokoll verwendet wird, ob eine Authentifizierung erforderlich ist und ob eine Rotation notwendig ist. Im Folgenden finden Sie eine schrittweise Anleitung für verschiedene Verbindungsmethoden.
Bevor Sie den Axios HTTP-Proxy konfigurieren, müssen Sie die Arbeitsumgebung entsprechend vorbereiten.
Hinweis: Die Befehle sollten im Terminal des Betriebssystems (CMD, PowerShell, bash) oder im integrierten Terminal einer IDE wie Visual Studio Code ausgeführt werden. Die korrekte Ausführung setzt voraus, dass das aktuelle Arbeitsverzeichnis mit dem Stammverzeichnis des Projekts übereinstimmt.
mkdir proxy-setup-axios
cd proxy-setup-axios npm init -y npm install axios echo>app.js "scripts": {
"start": "node app.js"
}
Wichtig: Die Datei package.json kann mit einem beliebigen Code-Editor oder sogar mit Notepad geöffnet werden. Beachten Sie bei der Bearbeitung sorgfältig die Syntaxregeln: Entfernen oder ändern Sie keine Anführungszeichen, Klammern oder Doppelpunkte, da dies zu Ausführungsfehlern führt.
npm start Wenn alle Schritte korrekt ausgeführt werden, wird die Anwendung auch mit einer leeren Konfigurationsdatei erfolgreich gestartet. In diesem Fall wird das Programm einfach geschlossen, ohne weitere Ausgaben zu zeigen. Dieses Verhalten ist zu erwarten und zeigt an, dass die Datei noch keinen ausführbaren Code enthält, die Umgebung aber korrekt eingerichtet ist.
Bei der Verwendung einer statischen Lösung werden alle Anfragen über dieselbe IP-Adresse geleitet. Dieser Ansatz ist anwendbar, wenn keine Rotation erforderlich ist.
Um einen Axios HTTPS-Proxy zu verbinden, verwenden Sie die folgende Konfiguration:
axios.get(URL, {
proxy: {
protocol: 'http',
host: '82.211.7.97',
port: 59100
}
})
Wenn der Zwischenserver eine Authentifizierung erfordert, fügen Sie einen Authentifizierungsblock hinzu:
auth: {
username: 'proxyUser',
password: 'proxyPass'
}
Ein vollständiges Beispiel mit der Bearbeitung von Anfragen an den httpbin.org-Dienst:
const axios = require('axios');
async function requestThroughProxy() {
try {
const response = await axios.get('https://httpbin.org/ip', {
proxy: {
protocol: 'http',
host: '82.211.7.97',
port: 59100,
auth: {
username: 'proxyUser',
password: 'proxyPass'
}
}
});
console.log('Proxy IP:', response.data);
} catch (error) {
console.error('Request failed:', error.message);
}
}
requestThroughProxy();
Der try/catch-Block wird verwendet, um mögliche Fehler während der Anfrage zu behandeln. In diesem Beispiel wird die Anfrage an https://httpbin.org/ip gesendet, das die aktuelle IP-Adresse des Clients zurückgibt. Wenn der Proxy nicht verfügbar ist oder die Anfrage fehlschlägt, fängt der catch-Block die Ausnahme ab und zeigt eine Fehlermeldung an.
Wenn mehrere Anfragen über dieselbe IP-Adresse laufen, steigt das Risiko, von der Zielressource blockiert zu werden. Um dies zu vermeiden, werden häufig Residential Proxies mit Unterstützung für IP-Rotation eingesetzt. Solche Lösungen bieten ein höheres Maß an Maskierung und ermöglichen eine gleichmäßige Verteilung der Last. In der Praxis wird dies durch die Erstellung eines vorkonfigurierten Pools von IP-Adressen und die Implementierung eines Mechanismus für die zufällige oder sequentielle Auswahl von Proxys im Code erreicht.
Hier ist ein Beispiel für die zufällige IP-Auswahl mit dem http-proxy-agent-Paket:
const axios = require('axios');
const HttpProxyAgent = require('http-proxy-agent');
// Proxy-Liste mit Authentifizierung
const proxyList = [
'http://user1:pass1@82.211.7.97:59100',
'http://user2:pass2@82.211.7.97:59101',
'http://user3:pass3@82.211.7.97:59102'
];
// Funktion zur zufälligen Auswahl eines Proxys
function getRandomProxy() {
const index = Math.floor(Math.random() * proxyList.length);
return proxyList[index];
}
// Versenden mehrerer Anfragen mit IP-Rotation
(async () => {
for (let i = 0; i < 5; i++) {
const proxy = getRandomProxy();
const agent = new HttpProxyAgent(proxy);
try {
const response = await axios.get('https://api.ipify.org?format=json', {
httpAgent: agent,
httpsAgent: agent,
timeout: 3000
});
console.log(`Used proxy ${proxy} -- IP:`, response.data.ip);
} catch (err) {
console.error(`Proxy ${proxy} failed:`, err.message);
}
}
})();
In diesem Beispiel verwendet jede Anfrage an Axios eine zufällig ausgewählte Proxy-Adresse aus der angegebenen Liste. Der Dienst https://api.ipify.org?format=json gibt die externe IP zurück, so dass überprüft werden kann, ob die Verbindung korrekt hergestellt wurde. Im Falle eines Fehlers (z. B. ein nicht verfügbarer Server oder falsche Authentifizierungsdaten) fängt der Catch-Block die Ausnahme ab und zeigt eine Fehlermeldung an.
Die Verwendung von SOCKS5 ist gerechtfertigt, wenn Netzwerkfilter umgangen werden sollen, wenn mit eingeschränkten APIs gearbeitet wird und in Szenarien, die die Übertragung von nicht standardmäßigem Datenverkehr, einschließlich DNS-Anfragen, erfordern.
Um mit dem Axios Socks5-Proxy zu arbeiten, wird empfohlen, das Paket socks-proxy-agent zu verwenden. Dieses Paket ermöglicht die Unterstützung für diese Art von Vermittler durch einen Proxy-Agenten, der sich nahtlos in die Bibliothek integriert.
Installation des Axios-Proxy-Agenten:
npm install axios socks-proxy-agent
Axios Proxy-Konfiguration:
const axios = require('axios');
const { SocksProxyAgent } = require('socks-proxy-agent');
// Parameter des Zwischenservers
const proxy = {
host: '45.192.135.68',// IP-Adresse
port: 50101,// Hafen
username: 'Username',// Benutzername (falls erforderlich)
password: 'Password'// Passwort (falls erforderlich)
};
// Proxy-URL mit Authentifizierung erstellen
const proxyUrl = `socks5://${proxy.username}:${proxy.password}@${proxy.host}:${proxy.port}`;
// SOCKS5-Agent erstellen
const agent = new SocksProxyAgent(proxyUrl);
// Anfrage über Proxy in Axios
axios.get('https://api.ipify.org/?format=json', { httpsAgent: agent })
.then(response => {
console.log('Your IP:', response.data);
})
.catch(error => {
console.error('Connection error:', error.message);
});
Wichtig: Wenn der Vermittler keine Authentifizierung verlangt, sollten Sie die ProxyUrl ohne Benutzernamen und Passwort erstellen:
const proxyUrl = `socks5://${proxy.host}:${proxy.port}`;
Um zu überprüfen, ob alles korrekt funktioniert, können Sie eine Anfrage an einen Dienst senden, der z. B. die externe IP-Adresse zurückgibt:
axios.get('https://api.ipify.org?format=json', { httpsAgent: agent })
.then(response => {
console.log('Your IP:', response.data.ip);
})
.catch(error => {
console.error('Connection error:', error.message);
});
So können Sie sich vergewissern, dass die Anfragen ordnungsgemäß weitergeleitet werden.
Der effektive Einsatz von Axios bei Vermittlern erfordert eine durchdachte Konfiguration unter Berücksichtigung der folgenden Schlüsselaspekte:
Die Befolgung dieser Empfehlungen gewährleistet einen stabilen Betrieb des Axios-Proxys, auch bei starker Belastung.
Axios-Proxys können aus verschiedenen Gründen fehlschlagen, hauptsächlich aufgrund der Besonderheiten der Arbeit mit Proxys in Node.js, wo die richtige Konfiguration und Protokollkompatibilität entscheidend ist.
Ursache: Es wurde eine falsche IP-Adresse oder ein falscher Port angegeben, der Proxy-Server ist nicht verfügbar, oder die Verbindung wird auf Netzwerkebene durch eine Firewall oder das Hostsystem blockiert.
Lösung:
curl -x http://username:password@proxy-host:port https://api.ipify.org try {
await axios.get(url, { httpAgent });
} catch (err) {
if (err.code === 'ECONNREFUSED') {
// Zu einer anderen IP wechseln
}
} Ursache: Der Zwischenserver gibt eine ungültige Antwort von der Zielressource zurück, weil:
Lösung:
Ursache: Der Zwischenserver verwendet SOCKS5, während die Verbindung über einen HTTP- oder HTTPS-Agenten hergestellt wird. Axios unterstützt Proxys nicht direkt, daher ist das Schlüsselelement der Konfiguration die Auswahl des richtigen Agenten.
Lösung:
Verbinden Sie den entsprechenden Agenten (http-proxy-agent, https-proxy-agent, socks-proxy-agent) je nach verwendetem Protokolltyp.
const HttpsProxyAgent = require('https-proxy-agent');
const agent = new HttpsProxyAgent('http://user:pass@ip:port');
Für SOCKS5:
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5://user:pass@ip:port');
Ursache: Ungültiger Benutzername oder Passwort, fehlender Proxy-Authorization-Header oder falsches Format der Verbindungszeichenfolge.
Lösung:
Überprüfen Sie die Syntax der Verbindungszeichenfolge: http://user:pass@ip:port. Stellen Sie sicher, dass der Agent die Authentifizierungsparameter korrekt übergibt.
const HttpsProxyAgent = require('https-proxy-agent');
const proxyUrl = 'http://username:password@82.211.9.160:50100';
const agent = new HttpsProxyAgent(proxyUrl);
Die Konfiguration des Axios-Proxys ist ein wesentlicher Schritt für die Arbeit mit Anonymität, Lastausgleich und die Umgehung von Beschränkungen. Die Zuverlässigkeit der Anfragen wird durch die richtige Konfiguration des Proxy-Agenten, die Auswahl kompatibler Protokolle und eine gut durchdachte Fehlerbehandlung gewährleistet. Gleichzeitig wirkt sich die Qualität des Proxyservers direkt auf die Effizienz des Tools aus. Kostenlose Proxys sind in der Regel instabil, werden oft blockiert und werden schnell zur Ursache von Fehlern.
Für den produktiven Einsatz empfiehlt es sich, auf kostenpflichtige Lösungen von vertrauenswürdigen Anbietern zurückzugreifen, die große IP-Pools, Rotationssupport und eine hohe Betriebszeit bieten.
Ja, Axios kann in der Tat global für die Verwendung eines Proxyservers mit Umgebungsvariablen konfiguriert werden: HTTP_PROXY, HTTPS_PROXY und NO_PROXY. Diese Variablen können über die Systemeigenschaften eingestellt werden. Öffnen Sie dazu Systemeigenschaften → Umgebungsvariablen, erstellen Sie eine neue Variable (z. B. HTTP_PROXY) und geben Sie die Adresse des Proxyservers als Wert an.
Axios unterscheidet nicht zwischen verschiedenen Arten von Proxys: privat, mobil oder Rechenzentrum - die Authentifizierungseinrichtung ist die gleiche. Die wichtigste Voraussetzung ist das korrekte URL-Format oder ein richtig definierter proxy.auth-Block.
Die wichtigsten Alternativen zur Verwendung von Axios-Proxys in Node.js sind node-fetch und Got. Beide Bibliotheken unterstützen HTTP/HTTPS-Proxys durch Umgebungsvariablen sowie durch explizite Konfiguration im Code. Wo möglich, bietet Got flexiblere Optionen für Timeouts, Wiederholungen und die Anpassung von Anfragen, während node-fetch eine Syntax hat, die Frontend-Entwicklern vertrauter ist. Die Wahl hängt von Ihren spezifischen Bedürfnissen und Ihrem Komfort ab.
Bemerkungen: 0