Skip to content
Intermediate / 6 min read

Cara Menggunakan Proxy Residensial Berotasi IPRoyal dengan Selenium di Python untuk Web Scraping

Panduan praktis untuk mengintegrasikan proxy residensial IPRoyal dengan Selenium WebDriver di Python, termasuk autentikasi, rotasi, dan pemecahan masalah.

SOCKS5 HTTP(S) Web Scraping

Ringkasan

Selenium adalah alat populer untuk otomatisasi browser, tetapi scraping dalam skala besar sering kali memerlukan rotasi alamat IP untuk menghindari blokir. Jaringan proxy residensial IPRoyal menyediakan kumpulan IP yang besar dengan opsi rotasi yang fleksibel. Tutorial ini menunjukkan cara menghubungkan Selenium ke proxy residensial IPRoyal menggunakan Python, menangani autentikasi, dan merotasi IP di antara permintaan.

Karena Selenium tidak mendukung autentikasi proxy secara native di semua driver, kami akan menggunakan paket selenium-wire, yang memperluas Selenium dan menangani kredensial proxy dengan bersih. Contoh di bawah ini menggunakan Chrome, tetapi pendekatan yang sama berfungsi dengan browser lain yang didukung oleh Selenium.

Prasyarat

  • Python 3.8 atau lebih baru
  • Akun IPRoyal dengan kredensial proxy residensial
  • Pemahaman dasar tentang Python dan Selenium
  • Browser Chrome dan ChromeDriver terpasang (atau driver browser alternatif)

Langkah 1: Kumpulkan Kredensial Proxy IPRoyal Anda

Masuk ke dasbor IPRoyal Anda dan temukan detail endpoint proxy residensial. Anda akan memerlukan:

  • Host proxy (mis., geo.iproyal.com atau host yang ditampilkan di dasbor Anda)
  • Nomor port
  • Nama pengguna
  • Kata sandi

Proxy residensial IPRoyal biasanya menawarkan sesi rotasi dan sticky. Untuk sesi rotasi, setiap permintaan (atau setiap sesi browser baru) dapat menggunakan IP yang berbeda. Untuk sesi sticky, Anda dapat mempertahankan IP yang sama selama periode tertentu dengan menggunakan pengenal sesi di nama pengguna. Periksa dasbor Anda untuk format yang tepat—sering kali Anda menambahkan ID sesi ke nama pengguna, seperti yourusername-session-abc123.

Langkah 2: Pasang Selenium dan selenium-wire

Pasang paket yang diperlukan menggunakan pip:

pip install selenium selenium-wire

Pastikan versi ChromeDriver cocok dengan versi Chrome yang terpasang. Anda dapat mengunduh ChromeDriver dari halaman Chrome for Testing atau menggunakan manajer seperti webdriver-manager.

Langkah 3: Konfigurasikan Selenium dengan Autentikasi Proxy IPRoyal

Buat skrip Python yang menyiapkan driver Selenium Wire dengan kredensial proxy IPRoyal Anda. Ganti placeholder dengan nilai aktual Anda.

from seleniumwire import webdriver

# Ganti dengan detail proxy IPRoyal Anda
proxy_user = "your_username"
proxy_pass = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"

# Bangun URL proxy
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"

# Konfigurasikan opsi proxy Selenium Wire
proxy_options = {
    'proxy': {
        'http': proxy_url,
        'https': proxy_url,
        'no_proxy': 'localhost,127.0.0.1'
    }
}

# Luncurkan Chrome dengan Selenium Wire
driver = webdriver.Chrome(seleniumwire_options=proxy_options)

try:
    driver.get("https://httpbin.org/ip")
    print(driver.find_element("tag name", "body").text)
finally:
    driver.quit()

Jalankan skrip. Jika proxy berfungsi, Anda akan melihat alamat IP yang termasuk dalam jaringan IPRoyal, bukan IP asli Anda.

Langkah 4: Rotasi IP di Antara Permintaan

Ada dua cara umum untuk merotasi IP dengan proxy residensial IPRoyal:

  1. Endpoint rotasi: Gunakan host dan port yang sama untuk setiap permintaan. Proxy secara otomatis menetapkan IP baru untuk setiap koneksi. Ini adalah metode paling sederhana untuk scraping stateless.
  2. Sesi sticky dengan ID sesi: Tambahkan ID sesi unik ke nama pengguna Anda (mis., yourusername-session-abc123). Semua permintaan yang menggunakan ID sesi tersebut akan menggunakan IP yang sama sampai sesi berakhir atau Anda mengubah ID. Ini berguna untuk alur multi-langkah seperti masuk lalu scraping data.

Untuk merotasi IP secara manual di Selenium, Anda dapat membuat instance driver baru dengan ID sesi berbeda untuk setiap tugas scraping. Berikut adalah contoh yang melakukan siklus melalui daftar ID sesi:

import time
from seleniumwire import webdriver

base_username = "your_username"
base_password = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"

session_ids = ["session1", "session2", "session3"]

for session_id in session_ids:
    # Bangun nama pengguna dengan ID sesi (sesuaikan sintaks sesuai dokumen IPRoyal)
    username = f"{base_username}-session-{session_id}"
    proxy_url = f"http://{username}:{base_password}@{proxy_host}:{proxy_port}"

    proxy_options = {
        'proxy': {
            'http': proxy_url,
            'https': proxy_url,
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    driver = webdriver.Chrome(seleniumwire_options=proxy_options)
    try:
        driver.get("https://httpbin.org/ip")
        print(f"Sesi {session_id}:", driver.find_element("tag name", "body").text)
    finally:
        driver.quit()
    time.sleep(1)

Jika IPRoyal menyediakan endpoint rotasi yang mengubah IP per permintaan, Anda dapat melewati logika ID sesi dan menggunakan kembali kredensial yang sama. Verifikasi perilakunya di dasbor Anda.

Langkah 5: Tangani Penargetan Geo dan Sesi Sticky

Proxy residensial IPRoyal mendukung penargetan negara dan kota. Anda biasanya dapat menentukan lokasi dengan menambahkan kode negara ke nama pengguna atau dengan menggunakan endpoint khusus. Misalnya, banyak penyedia menggunakan format nama pengguna seperti yourusername-country-us. Periksa dasbor IPRoyal Anda untuk sintaks yang tepat.

Untuk mempertahankan sesi sticky untuk scraping multi-langkah (mis., tambahkan ke keranjang, lalu checkout), gunakan satu ID sesi di semua tindakan dan biarkan instance driver yang sama tetap terbuka. Mengubah driver atau ID sesi akan menghasilkan IP yang berbeda.

Langkah 6: Verifikasi Proxy dan Tangani Kesalahan

Selalu verifikasi bahwa permintaan Anda melewati proxy. Pemeriksaan sederhana adalah dengan mengunjungi https://httpbin.org/ip atau https://ipinfo.io/ip dan pastikan IP-nya bukan milik Anda. Jika Anda perlu memeriksa header, Selenium Wire memungkinkan Anda mengakses objek permintaan dan respons:

for request in driver.requests:
    if request.response:
        print(request.url, request.response.status_code)

Pemecahan Masalah

Masalah Kemungkinan Penyebab Perbaikan
407 Proxy Authentication Required Nama pengguna/kata sandi salah atau karakter khusus tidak di-URL-encode URL-encode karakter khusus di nama pengguna/kata sandi (mis., @ menjadi %40). Verifikasi kredensial di dasbor IPRoyal Anda.
Connection timeout Host/port salah atau firewall memblokir Periksa kembali host dan port. Coba port berbeda jika IPRoyal menyediakan alternatif. Pastikan firewall Anda mengizinkan koneksi keluar.
IP tidak berubah Menggunakan ID sesi sticky atau koneksi cache Gunakan endpoint rotasi atau ubah ID sesi. Tutup driver dan buka yang baru.
Kesalahan WebDriver saat diluncurkan Versi ChromeDriver tidak cocok Perbarui ChromeDriver agar cocok dengan versi Chrome Anda.
Kesalahan SSL Proxy tidak menangani HTTPS dengan benar Pastikan Anda menggunakan http:// di URL proxy bahkan untuk situs HTTPS (proxy meneruskan HTTPS).

Ringkasan

Dalam tutorial ini, Anda mempelajari cara mengintegrasikan proxy residensial IPRoyal dengan Selenium di Python menggunakan selenium-wire untuk autentikasi. Anda mengonfigurasi satu proxy, menerapkan rotasi melalui ID sesi sticky, dan memverifikasi penyiapannya. Ingatlah untuk menggunakan endpoint rotasi untuk scraping bervolume tinggi dan sesi sticky untuk alur kerja multi-langkah. Selalu uji koneksi proxy Anda sebelum menjalankan tugas besar, dan lihat dasbor IPRoyal Anda untuk format endpoint yang tepat dan parameter sesi.