HTTP- und SOCKS-Proxys in Axios für Node.js
Einen HTTP-Proxy im Node-HTTP-Adapter von Axios konfigurieren oder für einen SOCKS-Endpunkt einen SOCKS-Agent verwenden.
Der Node-HTTP-Adapter von Axios akzeptiert ein HTTP-Proxyobjekt mit Host und numerischem Port:
import axios from 'axios';
const response = await axios.get('https://example.com/', {
adapter: 'http',
proxy: {
protocol: 'http',
host: '203.0.113.10',
port: 8080,
},
timeout: 15000,
});
console.log(response.status);
Ersetzen Sie den Dokumentationsendpunkt durch einen HTTP-Eintrag Ihres Dienstes oder aus der HTTP-Proxy-Liste. Diese Beispiele verwenden Node; Axios im Browser kann mit diesen Optionen nicht den Netzwerkproxy des Browsers wählen. Das Feld host erwartet die Adresse ohne URL-Schema.
Das Feld protocol des Proxyobjekts beschreibt dessen Listener. In Axios 1.21.0 nutzt der Node-HTTP-Adapter CONNECT für ein HTTPS-Ziel und handelt anschließend TLS mit dem Ursprungsserver durch den Tunnel aus. Ältere Versionen nutzten andere Proxywege, daher ist die installierte Version wichtig.
Eine SOCKS-URL braucht einen SOCKS-Agent
Das HTTP-Proxyobjekt wählt kein SOCKS. Verwenden Sie stattdessen einen kompatiblen Agent:
npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';
const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');
try {
const response = await axios.get('https://example.com/', {
adapter: 'http',
httpAgent: agent,
httpsAgent: agent,
proxy: false,
timeout: 15000,
});
console.log(response.status);
} finally {
agent.destroy();
}
proxy: false deaktiviert die HTTP-Proxyverarbeitung von Axios für den vom SOCKS-Agent bereitgestellten Weg. Wird der Agent für HTTP- und HTTPS-Ziele angegeben, deckt das beide Schemas ab. Hier überlässt socks5h die DNS-Auflösung des Ziels der SOCKS-Seite; der gewählte Server muss dieses Protokoll unterstützen.
Fehler auswerten
Ein Axios-Fehler kann eine Antwort enthalten, wenn die Website einen erfolglosen Status zurückgibt. Fehlt sie, prüfen Sie Fehlercode und Verbindungsdetails. Ein fehlendes Modul, ein nicht unterstütztes Protokoll oder eine inkompatible Node-Version kann scheitern, bevor eine Anfrage den Endpunkt erreicht.
Für authentifizierte HTTP-Proxys verwenden Sie das Feld auth des Proxyobjekts mit den Zugangsdaten des Betreibers. Die Authentifizierungseinstellungen des Ziels gelten einer anderen Gegenstelle.