Skip to content
Intermediate / 4 min read

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.

Windows macOS Linux Web Scraping

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, 8000 untuk HTTP, 1080 untuk 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-chain di 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.