Skip to content
Beginner / 6 min read

Proxy Rotasi Selenium: Rotasi IP di Selenium WebDriver (Panduan Pemula)

Panduan ramah pemula untuk merotasi proxy di Selenium WebDriver. Siapkan daftar proxy, tangani autentikasi, verifikasi perubahan IP, dan ketahui kapan gateway WireGuard khusus dari NordLayer adalah pilihan yang lebih cerdas.

SOCKS5 WireGuard Web Scraping Privasi/Anonimitas

Ringkasan

Selenium WebDriver tidak merotasi proxy dengan sendirinya. Saat Anda melakukan scraping atau pengujian dalam skala besar, satu alamat IP dengan cepat terkena batas laju, pemblokiran geografis, atau CAPTCHA. Tutorial ini menunjukkan cara menetapkan proxy ke Selenium, melakukan rotasi melalui daftar proxy, memverifikasi bahwa IP benar-benar berubah, dan menentukan kapan gateway WireGuard khusus (seperti NordLayer) lebih cocok daripada kumpulan proxy rotasi.

Mengapa merotasi proxy di Selenium?

  • Hindari batas laju berbasis IP dan pemblokiran sementara.
  • Akses konten yang hanya tersedia di wilayah tertentu.
  • Uji bagaimana situs atau aplikasi Anda berperilaku dari berbagai lokasi.
  • Distribusikan permintaan agar satu IP tidak terlihat seperti bot.

Strategi rotasi

Pilih strategi berdasarkan berapa banyak permintaan yang Anda butuhkan dan berapa lama setiap sesi harus tetap aktif.

  • Rotasi berbasis daftar — bergiliran melalui daftar proxy tetap. Sederhana dan gratis, tetapi setiap proxy digunakan kembali.
  • Rotasi acak — pilih proxy acak untuk setiap sesi. Mengurangi pola yang dapat diprediksi.
  • Round-robin — gunakan proxy secara berurutan. Baik untuk distribusi yang merata.
  • Sticky session — pertahankan proxy yang sama untuk alur login atau checkout, lalu ganti.
  • Gateway rotasi — satu endpoint yang merotasi IP untuk Anda di sisi penyedia. Kode lebih sedikit, tetapi kontrol lebih sedikit.

Untuk banyak proyek kecil, pilihan acak dari daftar sudah cukup. Untuk scraping produksi, pertimbangkan layanan proxy rotasi terkelola atau gateway WireGuard khusus untuk akses stabil dan non-rotasi.

Prasyarat

  • Python 3.8 atau lebih baru.
  • Google Chrome atau Mozilla Firefox terpasang.
  • Daftar proxy (HTTP, HTTPS, atau SOCKS5) atau langganan proxy rotasi.
  • Keakraban dasar dalam menjalankan skrip Python.

Langkah-langkah

  1. Pasang Selenium dan pengelola WebDriver.

    Pasang Selenium dan helper yang mengunduh driver browser yang benar secara otomatis.

    pip install selenium webdriver-manager
    
  2. Siapkan daftar proxy Anda.

    Buat daftar proxy di Python. Gunakan skema lengkap agar Selenium tahu cara terhubung.

    PROXIES = [
        'http://user:[email protected]:8080',
        'http://proxy2.example.com:8080',
        'socks5://proxy3.example.com:1080',
    ]
    

    Jika proxy Anda memerlukan nama pengguna dan kata sandi, lihat Langkah 4 sebelum melanjutkan.

  3. Konfigurasikan satu proxy di Selenium (Chrome).

    Berikan proxy ke Chrome dengan argumen --proxy-server.

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.service import Service
    
    proxy = 'http://proxy2.example.com:8080'
    
    options = Options()
    options.add_argument(f'--proxy-server={proxy}')
    options.add_argument('--headless=new')
    
    driver = webdriver.Chrome(
        service=Service(ChromeDriverManager().install()),
        options=options
    )
    driver.get('https://api.ipify.org?format=json')
    print(driver.page_source)
    driver.quit()
    

    Chrome tidak menerima kredensial di dalam string --proxy-server. Jika proxy Anda memerlukan autentikasi, gunakan whitelist IP atau beralih ke Firefox (Langkah 4).

  4. Tangani autentikasi proxy.

    Profil Firefox dapat mengirim kredensial proxy. Ini berguna untuk penyiapan ramah pemula tanpa pustaka tambahan.

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    
    proxy_host = 'proxy2.example.com'
    proxy_port = 8080
    
    options = Options()
    options.set_preference('network.proxy.type', 1)
    options.set_preference('network.proxy.http', proxy_host)
    options.set_preference('network.proxy.http_port', proxy_port)
    options.set_preference('network.proxy.ssl', proxy_host)
    options.set_preference('network.proxy.ssl_port', proxy_port)
    
    driver = webdriver.Firefox(options=options)
    driver.get('https://api.ipify.org?format=json')
    print(driver.page_source)
    driver.quit()
    

    Untuk SOCKS5 dengan autentikasi, jalur pemula paling sederhana adalah meminta akses whitelist IP kepada penyedia proxy Anda. Dengan begitu Anda tidak perlu menyematkan kata sandi di skrip Anda.

  5. Rotasi proxy per sesi.

    Buat WebDriver baru dengan proxy yang dipilih secara acak untuk setiap URL atau tugas. Selalu tutup driver setelah selesai.

    import random
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.service import Service
    
    PROXIES = [
        'http://proxy1.example.com:8080',
        'http://proxy2.example.com:8080',
        'socks5://proxy3.example.com:1080',
    ]
    
    def get_driver():
        proxy = random.choice(PROXIES)
        options = Options()
        options.add_argument(f'--proxy-server={proxy}')
        options.add_argument('--headless=new')
        return webdriver.Chrome(
            service=Service(ChromeDriverManager().install()),
            options=options
        )
    
    urls = [
        'https://example.com/page-1',
        'https://example.com/page-2',
    ]
    
    for url in urls:
        driver = get_driver()
        try:
            driver.get(url)
            print(driver.title)
        finally:
            driver.quit()
    

    Pola ini mudah dibaca, tetapi memulai browser baru untuk setiap permintaan itu lambat. Untuk tugas yang lebih besar, jalankan beberapa driver secara paralel atau gunakan endpoint gateway rotasi. Jika Anda memerlukan IP yang stabil dan non-rotasi untuk login atau panel admin, lompat ke Langkah 7.

  6. Verifikasi bahwa alamat IP berubah.

    Jangan pernah mengasumsikan proxy berhasil. Periksa IP keluar (egress) sebelum Anda melakukan scraping.

    import json
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument('--proxy-server=http://proxy2.example.com:8080')
    options.add_argument('--headless=new')
    
    driver = webdriver.Chrome(options=options)
    driver.get('https://api.ipify.org?format=json')
    body = driver.find_element('tag name', 'body').text
    ip_info = json.loads(body)
    print(ip_info['ip'])
    driver.quit()
    

    Jika IP yang dicetak cocok dengan IP asli Anda, proxy tidak digunakan. Periksa format proxy dan autentikasi.

  7. Pilih antara proxy rotasi dan gateway WireGuard khusus.

    Proxy rotasi ideal untuk permintaan anonim bervolume tinggi. Tetapi beberapa tugas memerlukan kebalikannya: IP stabil kelas bisnis yang tetap sama untuk setiap permintaan.

    Gunakan gateway WireGuard khusus, seperti NordLayer, saat Anda memerlukan:

    • IP keluar yang konsisten untuk anggota tim atau tugas otomatis.
    • Tunnel terenkripsi alih-alih pengaturan proxy per aplikasi.
    • Onboarding cepat untuk tim kecil tanpa memelihara daftar proxy.
    • Jalur jaringan terpisah untuk alat internal, situs staging, atau pelacakan peringkat dari satu wilayah.

    NordLayer menyediakan tunnel VPN WireGuard kelas bisnis dengan gateway khusus dan penagihan bulanan tetap. Ini bukan kumpulan proxy rotasi, jadi gunakan untuk sesi yang harus tetap pada satu IP. Gunakan proxy rotasi saat setiap permintaan harus berasal dari alamat yang berbeda.

Pemecahan masalah

Gejala Kemungkinan penyebab Perbaikan
Koneksi proxy ditolak Host, port, atau skema salah Verifikasi string proxy menyertakan http:// atau socks5://
407 Proxy Authentication Required Kredensial tidak ada Gunakan whitelist IP atau profil Firefox dengan autentikasi
Sesi WebDriver tidak dibuat Ketidakcocokan versi browser/driver Perbarui Selenium dan webdriver-manager
Permintaan masih menunjukkan IP asli Anda Proxy tidak diterapkan Pastikan --proxy-server diatur sebelum driver.get()
CAPTCHA atau halaman blokir Terlalu banyak permintaan atau proxy ditandai Perlambat, rotasi dengan lebih hati-hati, atau gunakan IP residensial/ISP
Proxy SOCKS5 gagal di Chrome Chrome tidak mendukung autentikasi proxy untuk SOCKS5 dalam argumen Gunakan Firefox atau tunnel korporat terautentikasi seperti NordLayer

Ringkasan

  • Selenium tidak merotasi proxy secara otomatis; Anda menetapkan satu proxy per sesi browser.
  • Untuk pemula, mulailah dengan daftar proxy kecil, pemilihan acak, dan driver baru per tugas.
  • Profil Firefox menangani autentikasi proxy lebih mudah daripada Chrome.
  • Selalu verifikasi IP keluar dengan layanan seperti ipify sebelum memercayai proxy.
  • Proxy rotasi paling baik untuk scraping anonim yang terdistribusi.
  • Gateway WireGuard khusus seperti NordLayer lebih baik saat Anda memerlukan IP kelas bisnis yang stabil dan terenkripsi untuk tim dan sesi berdurasi panjang.