# Autentikasi proxy Puppeteer dengan IP proxy residensial dan proxy seluler 4G

> Autentikasi proxy Puppeteer: --proxy-server ditambah page.authenticate(), satu sesi per konteks browser, intersepsi permintaan untuk menghemat traffic.

- URL: https://crawlrelay.com/id/docs/puppeteer/
- Terakhir diperbarui: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Chrome mengambil alamat proxy dari flag peluncuran dan kredensial dari page.authenticate(). Gunakan satu konteks browser per sesi agar kredensial tidak bocor antar pekerjaan.

**Jawaban cepat — Bagaimana cara menggunakan proxy yang diautentikasi di Puppeteer?**

Luncurkan Chrome dengan `--proxy-server=http://gw.crawlrelay.com:7777`, lalu panggil `page.authenticate({ username, password })` sebelum `goto` pertama. Chrome mengabaikan kredensial yang ditulis di dalam flag. **CrawlRelay** proxy residensial membaca negara dan sesi lengket dari username, sehingga setiap halaman atau konteks bisa memiliki exit-nya sendiri. Biaya traffic US$0,50/GB mulai dari 50 GB. Dibayar dengan crypto, tanpa KYC.

## Pengaturan Puppeteer secara singkat

| Atribut | Nilai |
| --- | --- |
| Alamat proxy | `--proxy-server=http://gw.crawlrelay.com:7777` di `args`, atau `proxyServer` pada konteks browser |
| Kredensial | `await page.authenticate({ username, password })` sebelum navigasi |
| Sesi terpisah | `browser.createBrowserContext({ proxyServer })`: satu konteks per sesi |
| SOCKS5 | Tidak dengan autentikasi di Chrome: gunakan port HTTP |
| Menghemat traffic | `page.setRequestInterception(true)` dan batalkan gambar, font, dan media |

## Bagaimana cara saya mengatur satu proxy yang diautentikasi?

Ini pola minimal. Blok `try … finally` menutup Chrome meskipun navigasi gagal, penting di server di mana browser yatim menumpuk.

*Node.js (modul ES): satu browser, satu exit*

```javascript
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
  const page = await browser.newPage();
  await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
  await page.setRequestInterception(true);
  page.on("request", (req) =>
    ["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
  );
  const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
  console.log(res.status(), await page.title());
} finally {
  await browser.close();
}
```

## Bagaimana cara menjalankan beberapa sesi atau negara dalam satu browser?

Buat satu konteks browser per sesi. Sebuah konteks adalah profil terisolasi dengan cookie, cache, dan status jaringan sendiri, jadi kredensial yang Anda berikan pada satu konteks tidak bocor ke yang lain. Beri setiap konteks username dengan negara atau ID sesi sendiri.

*Node.js: satu konteks per sesi lengket*

```javascript
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";

const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();

async function visit(country, url) {
  const session = randomUUID().replaceAll("-", "").slice(0, 10);
  const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
  try {
    const page = await context.newPage();
    await page.authenticate({
      username: `USERNAME-country-${country}-session-${session}-ttl-20`,
      password: "PASSWORD",
    });
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
    return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
  } finally {
    await context.close();
  }
}

try {
  const results = await Promise.all([
    visit("us", "https://api.ipify.org"),
    visit("gb", "https://api.ipify.org"),
  ]);
  console.table(results);
} finally {
  await browser.close();
}
```

## Kenapa Puppeteer menunjukkan 407 atau ERR_TUNNEL_CONNECTION_FAILED?

Karena Chrome tidak mengirim kredensial, atau salah. Periksa tiga hal:

1. `page.authenticate()` dijalankan **sebelum** `goto` pertama pada halaman itu.
2. Flag `--proxy-server` atau `proxyServer` hanya berisi skema, host, dan port, tanpa bagian `user:pass@`.
3. Username tidak ada salah ketik pada bagian targetnya: coba dengan curl dulu, seperti pada halaman [407](https://crawlrelay.com/id/docs/errors/407-proxy-authentication-required/).

Jika curl berhasil dengan username dan password yang sama tapi Puppeteer gagal, baca [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/id/docs/errors/err-tunnel-connection-failed/).

## Berapa biaya traffic untuk sebuah halaman Puppeteer?

Semua yang diunduh Chrome dikenai biaya: HTML, skrip, gaya, gambar, font, dan panggilan API yang dilakukan halaman. HTTP Archive Web Almanac 2025 mengukur rata-rata bobot halaman 2.164 KB di mobile dan 2.412 KB di desktop. Memblokir gambar, font, dan media dengan intersepsi permintaan biasanya menurunkannya ke beberapa ratus kilobyte, dan mengembalikan respons cache untuk skrip berulang semakin menghemat. Gunakan [rotating proxy seluler 4G](https://crawlrelay.com/id/mobile-proxies/) hanya untuk halaman yang membutuhkannya: traffic seluler 4G biaya US$1,50/GB mulai 5 GB, proxy residensial US$0,50/GB mulai 50 GB.

## Puppeteer dan proxy: pertanyaan

### Bisakah saya mengisi username dan password dalam --proxy-server?

Tidak. Chrome mengabaikan kredensial dalam flag `--proxy-server`, dan permintaan HTTPS pertama kemudian gagal dengan 407 tersembunyi di balik `ERR_TUNNEL_CONNECTION_FAILED`. Masukkan hanya `http://host:port` di flag dan kirim kredensial dengan `page.authenticate()` di setiap halaman baru.

### Bagaimana cara saya merotasi IP antar halaman di Puppeteer?

Buka setiap halaman di konteks browser baru, atau beri setiap halaman username tanpa ID sesi. Konteks baru membuka koneksi baru, dan setiap koneksi biasanya mendapat exit proxy residensial berbeda. Dalam satu halaman, Chrome menggunakan ulang koneksi, jadi permintaan ke situs yang sama sering berbagi exit sampai koneksi ditutup.

### Apakah page.authenticate() bekerja dengan intersepsi permintaan?

Ya. Puppeteer menangani tantangan autentikasi proxy sendiri, dan handler intersepsi Anda hanya perlu memanggil `continue()` atau `abort()` pada setiap permintaan. Atur `authenticate()` terlebih dahulu, lalu aktifkan intersepsi, seperti contoh pertama.

### Haruskah saya menggunakan plugin stealth puppeteer-extra dengan proxy?

Kami tidak mendokumentasikan atau mendukung alat untuk menyembunyikan automasi atau mengalahkan deteksi bot. Tujuannya untuk melewati penyaringan pengunjung otomatis oleh situs, yang tidak diizinkan oleh [Acceptable Use Policy](https://crawlrelay.com/id/acceptable-use/) kami. Render halaman publik secara sopan dan gunakan API resmi bila tersedia.

### Chrome mana yang digunakan Puppeteer dengan proxy?

Versi Puppeteer terbaru mengunduh build Chrome for Testing yang cocok dan menggunakannya secara default. Flag proxy dan `page.authenticate()` bekerja sama seperti di Chrome biasa. Jika Anda mengarahkan Puppeteer ke Chrome Anda sendiri dengan `executablePath`, pastikan browser itu selalu diperbarui.

**Jalankan Puppeteer melalui IP proxy residensial** US$5,94 untuk 10 GB, US$0,50/GB dari 50 GB. [Lihat harga](https://crawlrelay.com/id/pricing/) · [Panduan Node.js](https://crawlrelay.com/id/docs/node/)

---

CrawlRelay: CrawlRelay adalah layanan proxy residensial dan proxy seluler 4G/5G yang berfokus pada pengembang untuk scraper dan pipeline data AI: trafik pay-as-you-go tanpa kedaluwarsa mulai dari US$0,50/GB, dibayar dengan crypto, tanpa perlu unggah ID. Tanpa KYC — tanpa ID, tanpa selfie, tanpa dokumen. Bayar dengan crypto.
