Proksi HTTP dan SOCKS di Axios untuk Node.js
Konfigurasikan proksi HTTP pada adapter Node HTTP Axios, atau gunakan agen SOCKS jika IP yang dipilih adalah endpoint SOCKS.
Adapter Node HTTP Axios menerima objek proksi HTTP dengan host dan porta numerik:
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);
Ganti endpoint dokumentasi dengan entri HTTP dari layanan Anda atau daftar proksi HTTP. Contoh ini menggunakan Node; Axios dalam browser tidak dapat memilih proksi jaringan browser melalui opsi ini. Kolom host menerima alamat tanpa skema URL.
Kolom protocol pada objek proksi menjelaskan listener-nya. Dalam Axios 1.21.0, adapter Node HTTP memakai CONNECT untuk target HTTPS, lalu menegosiasikan TLS dengan origin melalui terowongan. Rilis lama menggunakan jalur proksi berbeda, sehingga versi yang terpasang penting.
URL SOCKS membutuhkan agen SOCKS
Objek proksi HTTP tidak memilih SOCKS. Gunakan agen yang kompatibel:
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 menonaktifkan penanganan proksi HTTP Axios untuk rute yang disediakan agen SOCKS. Memberikan agen untuk tujuan HTTP dan HTTPS mencakup kedua skema. Di sini socks5h menyerahkan DNS tujuan kepada sisi SOCKS; server pilihan harus mendukung protokol itu.
Membaca kegagalan
Kesalahan Axios dapat memuat respons jika situs mengembalikan status yang tidak berhasil. Tanpa respons, periksa kode kesalahan dan detail koneksi. Modul yang hilang, protokol yang tidak didukung, atau versi Node yang tidak kompatibel dapat gagal sebelum permintaan mencapai endpoint.
Untuk proksi HTTP yang memerlukan autentikasi, gunakan kolom auth objek proksi dengan kredensial dari operator. Pengaturan autentikasi tujuan melayani pihak yang berbeda.