Proxy-uri HTTP și SOCKS în Axios pentru Node.js
Configurați un proxy HTTP în adaptorul Node HTTP al Axios sau folosiți un agent SOCKS dacă IP-ul ales este un punct final SOCKS.
Adaptorul Node HTTP al Axios acceptă un obiect proxy HTTP cu gazdă și port numeric:
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);
Înlocuiți punctul final de documentație cu o intrare HTTP de la serviciul propriu sau din lista de proxy-uri HTTP. Exemplele folosesc Node; Axios în browser nu poate selecta proxy-ul de rețea al browserului prin aceste opțiuni. Câmpul host primește adresa fără schemă URL.
Câmpul protocol al obiectului proxy descrie punctul său de ascultare. În Axios 1.21.0, adaptorul Node HTTP folosește CONNECT pentru o țintă HTTPS, apoi negociază TLS cu serverul de origine prin tunel. Versiunile vechi au folosit alte căi proxy, așadar versiunea instalată contează.
Un URL SOCKS necesită un agent SOCKS
Obiectul proxy HTTP nu selectează SOCKS. Folosiți un agent compatibil:
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 dezactivează gestionarea proxy-ului HTTP în Axios pentru ruta oferită de agentul SOCKS. Furnizarea agentului pentru destinații HTTP și HTTPS acoperă ambele scheme. Aici socks5h deleagă DNS-ul destinației către partea SOCKS; serverul ales trebuie să suporte acel protocol.
Interpretarea erorilor
O eroare Axios poate include un răspuns când site-ul returnează un statut nereușit. Fără răspuns, examinați codul erorii și detaliile conexiunii. Un modul lipsă, un protocol neacceptat sau o versiune Node incompatibilă poate eșua înainte ca cererea să ajungă la punctul final.
Pentru proxy-uri HTTP autentificate, folosiți câmpul auth al obiectului proxy cu datele furnizate de operator. Setările de autentificare ale destinației privesc altă parte.