Cara Menggunakan Proxy Residensial ProxyScrape dengan Puppeteer untuk Web Scraping di Node.js
Panduan langkah demi langkah untuk mengintegrasikan proxy residensial dan datacenter ProxyScrape dengan Puppeteer di Node.js. Pelajari konfigurasi proxy HTTP, autentikasi, rotasi, dan jembatan SOCKS5 untuk scraping tingkat lanjut.
Ringkasan
ProxyScrape menawarkan proxy residensial, datacenter, dan seluler dengan dukungan HTTP dan SOCKS5. Bila dikombinasikan dengan Puppeteer, browser Chrome headless untuk Node.js, Anda dapat mengotomatiskan web scraping dalam skala besar sambil merutekan lalu lintas melalui kumpulan 97 juta+ IP. Tutorial ini menunjukkan cara mengonfigurasi proxy ProxyScrape di Puppeteer, melakukan autentikasi, merotasi IP, dan menangani error umum.
Prasyarat
- Node.js 16 atau lebih baru telah terpasang. Anda dapat mengunduhnya dari situs web resmi Node.js.
- Akun ProxyScrape dengan proxy residensial atau datacenter. Uji coba gratis atau paket berbayar bisa digunakan.
- Familiaritas dasar dengan JavaScript dan command line.
Langkah 1: Buat Proyek Node.js Baru
Buka terminal Anda dan jalankan:
mkdir puppeteer-proxyscrape
cd puppeteer-proxyscrape
npm init -y
npm install puppeteer
Ini membuat folder proyek dan menginstal Puppeteer. Perhatikan bahwa Puppeteer mengunduh build Chromium yang kompatibel secara otomatis.
Langkah 2: Dapatkan Detail Proxy ProxyScrape Anda
Masuk ke dasbor ProxyScrape Anda. Navigasikan ke bagian daftar proxy. Anda akan melihat detail koneksi untuk setiap jenis proxy:
- Proxy residensial: Sesi berotasi atau sticky, dengan autentikasi nama pengguna/kata sandi.
- Proxy datacenter: IP statis, juga dengan autentikasi.
Catat hal berikut untuk proxy yang Anda pilih:
- Host (misalnya,
gateway.proxyscrape.com— periksa dasbor Anda untuk host yang tepat) - Port (misalnya,
8000untuk HTTP,1080untuk SOCKS5 — sekali lagi, konfirmasi di dasbor) - Nama pengguna
- Kata sandi
ProxyScrape biasanya menyediakan endpoint HTTP dan SOCKS5. Untuk tutorial ini, kita akan mulai dengan HTTP.
Langkah 3: Luncurkan Puppeteer dengan Proxy HTTP
Buat file bernama scrape.js dan tambahkan kode berikut. Ganti placeholder dengan detail proxy Anda yang sebenarnya.
const puppeteer = require('puppeteer');
(async () => {
const proxyHost = 'gateway.proxyscrape.com';
const proxyPort = '8000';
const proxyUser = 'your_username';
const proxyPass = 'your_password';
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=http://${proxyHost}:${proxyPort}`
]
});
const page = await browser.newPage();
// Autentikasi dengan proxy
await page.authenticate({
username: proxyUser,
password: proxyPass
});
// Verifikasi IP proxy
await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
const content = await page.content();
console.log(content);
await browser.close();
})();
Jalankan skrip:
node scrape.js
Anda akan melihat alamat IP yang digunakan oleh proxy, bukan IP asli Anda.
Langkah 4: Rotasi Proxy dengan Daftar
Proxy residensial ProxyScrape sering mendukung sesi berotasi dengan menggunakan nama pengguna atau ID sesi yang berbeda. Pola umum adalah melakukan siklus melalui daftar endpoint proxy. Berikut contoh yang merotasi antara dua proxy.
const proxies = [
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user1', pass: 'pass1' },
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user2', pass: 'pass2' }
];
(async () => {
for (const proxy of proxies) {
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
});
const page = await browser.newPage();
await page.authenticate({ username: proxy.user, password: proxy.pass });
await page.goto('https://httpbin.org/ip');
const ip = await page.evaluate(() => document.body.innerText);
console.log(`Proxy IP: ${ip}`);
await browser.close();
}
})();
Untuk rotasi skala besar, pertimbangkan menggunakan manajer proxy atau pustaka seperti proxy-chain untuk menangani autentikasi dan rotasi secara terpusat.
Langkah 5: Gunakan Proxy SOCKS5 dengan Puppeteer (Lanjutan)
Chromium, browser di balik Puppeteer, tidak mendukung proxy SOCKS5 yang diautentikasi secara native. Jika Anda harus menggunakan endpoint SOCKS5 ProxyScrape, Anda dapat menjalankan proxy HTTP lokal yang meneruskan ke SOCKS5. Salah satu opsinya adalah menggunakan paket npm proxy-chain.
Instal:
npm install proxy-chain
Lalu buat server proxy lokal:
const ProxyChain = require('proxy-chain');
(async () => {
const socksUrl = 'socks5://username:[email protected]:1080';
const localHttpProxy = await ProxyChain.anonymizeProxy(socksUrl);
console.log(`Local HTTP proxy: ${localHttpProxy}`);
// Berikan localHttpProxy sebagai --proxy-server di Puppeteer
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=${localHttpProxy}`]
});
const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.content());
await browser.close();
})();
Ini menjembatani SOCKS5 yang diautentikasi ke proxy HTTP lokal tanpa autentikasi yang dapat digunakan Chromium.
Pemecahan Masalah
- ERR_PROXY_CONNECTION_FAILED: Periksa host dan port. Pastikan IP Anda masuk daftar putih jika Anda menggunakan autentikasi berbasis IP. ProxyScrape menggunakan nama pengguna/kata sandi secara default, tetapi periksa kembali dasbor Anda.
- Popup autentikasi / error 407: Pastikan Anda memanggil
page.authenticate()sebelum menavigasi. - Respons lambat: Coba proxy datacenter untuk kecepatan atau proxy residensial untuk siluman. Sesuaikan timeout di Puppeteer.
- SOCKS5 tidak berfungsi: Ingat bahwa Chromium tidak mendukung autentikasi SOCKS5 secara langsung. Gunakan solusi
proxy-chaindi atas.
Ringkasan
Anda telah mempelajari cara mengonfigurasi proxy residensial dan datacenter ProxyScrape dengan Puppeteer di Node.js. Kami membahas penyiapan proxy HTTP, autentikasi, rotasi, dan jembatan SOCKS5 untuk kasus penggunaan lanjutan. Untuk infrastruktur yang andal, kumpulan 97 juta+ IP ProxyScrape dan uptime yang stabil menjadikannya pilihan yang solid untuk proyek web scraping.