Gunakan IP proxy dengan Undici di Node
Pasang Undici ProxyAgent pada satu permintaan fetch dan pisahkan pool koneksinya dari lalu lintas Node lain.
Undici merutekan permintaan melalui dispatcher. Buat ProxyAgent untuk proxy HTTP pilihan dan berikan ke pemanggilan fetch, alih-alih mengubah dispatcher global seluruh proses.
npm install [email protected]
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent('http://203.0.113.10:8080');
try {
const response = await fetch('https://example.com/', {
dispatcher,
signal: AbortSignal.timeout(15000),
});
console.log(response.status);
console.log(await response.text());
} finally {
await dispatcher.close();
}
Simpan program sebagai berkas .mjs atau gunakan proyek modul ES. Ganti IP dokumentasi dengan proxy HTTP dari daftar proxy HTTP. Impor sengaja memakai implementasi fetch Undici, sehingga opsi dispatcher milik klien pada contoh ini.
Periksa kompatibilitas Node sebelum menyalahkan IP
Versi Node yang didukung Undici bergantung pada rilis paket. Contoh ini memakai Undici 8.12.3 yang memerlukan Node 22.19.0 atau lebih baru. Kesalahan pemuatan modul atau versi engine terjadi sebelum permintaan mencapai proxy. Periksa persyaratan paket terpasang, jangan menganggap semua Node menjalankan Undici terbaru.
Satu agent dapat melayani permintaan berulang
Program singkat menutup dispatcher setelah selesai. Jika aplikasi aktif mengirim beberapa permintaan lewat endpoint sama, simpan agent untuk beban itu dan tutup saat pekerjaannya selesai. Membuat dan menutup agent untuk setiap URL mencegah penggunaan ulang koneksi yang berguna.
Dispatcher global sesuai hanya jika perubahan luas memang diinginkan. Memberikannya secara eksplisit memudahkan pengujian IP proxy tanpa mengubah permintaan keluar komponen lain.
Lihat respons dan tahap kegagalan
fetch tidak menganggap setiap status HTTP kesalahan sebagai Promise yang ditolak. 403 atau 429 dapat merupakan respons situs sebenarnya yang dibawa proxy. Kesalahan koneksi atau terowongan justru dapat menolak permintaan sebelum ada objek respons. Baca status terpisah dari kesalahan yang dilempar pemanggilan.
Jika autentikasi diperlukan, ProxyAgent Undici menyediakan opsi pada konstruktor. Jangan tambahkan header otorisasi proxy ke header permintaan situs; agent menangani hop koneksi yang berbeda.