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.
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
-
Pasang Selenium dan pengelola WebDriver.
Pasang Selenium dan helper yang mengunduh driver browser yang benar secara otomatis.
pip install selenium webdriver-manager -
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.
-
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). -
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.
-
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.
-
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.
-
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.