Proxy Selenium: autentikasi, sesi sticky, dan hemat kuota
Selenium tidak mendukung proxy user:password bawaan. Tiga cara memakai residential proxy di Selenium: selenium-wire, ekstensi, atau whitelist IP.
Selenium hebat untuk mengemudikan browser sungguhan, tapi begitu kamu ingin mengarahkan lalu lintasnya lewat residential proxy, ada satu kendala khas: Selenium tidak punya cara bawaan mengisi username dan password proxy. Opsi --proxy-server di Chrome hanya menerima host dan port, bukan kredensial. Panduan ini memberi kamu tiga cara memakai proxy WaroengProxy di Selenium, lengkap dengan sesi sticky, target lokasi, dan trik menghemat kuota.
Kenapa Selenium butuh langkah tambahan
Di tool seperti curl atau Python requests, kamu cukup menulis http://user:pass@host:port dan selesai. Selenium berbeda karena ia mengendalikan browser asli (Chrome atau Firefox), dan browser menanyakan kredensial proxy lewat dialog pop-up yang tidak bisa diisi dari skrip biasa. Jadi masalahnya bukan di WaroengProxy, melainkan di cara browser menangani autentikasi proxy.
Semua proxy WaroengProxy memakai satu endpoint, proxy.waroengproxy.com:8000, untuk HTTP, HTTPS, dan SOCKS5. Target lokasi ditulis di dalam username (misalnya -cc-ID untuk IP Indonesia), sedangkan host, port, dan password tidak berubah. Jadi yang perlu kamu selesaikan hanyalah cara menyuntikkan username dan password itu ke browser. Ada tiga jalan.
Cara 1: selenium-wire (paling mudah)
Paket selenium-wire memperluas Selenium dan menangani autentikasi proxy secara otomatis, jadi kamu cukup menuliskan kredensial seperti di library HTTP biasa. Ini cara paling cepat untuk mulai. Pasang dulu dengan pip install selenium-wire, lalu impor webdriver dari seleniumwire, bukan dari selenium.
# pip install selenium-wirefrom seleniumwire import webdriverUSERNAME = "USERNAME-cc-ID" # IP Indonesia; polos tanpa -cc- untuk acakPASSWORD = "PASSWORD"PROXY = f"http://{USERNAME}:{PASSWORD}@proxy.waroengproxy.com:8000"options = {"proxy": {"http": PROXY,"https": PROXY,"no_proxy": "localhost,127.0.0.1",}}driver = webdriver.Chrome(seleniumwire_options=options)driver.get("https://ipinfo.io/json")print(driver.find_element("tag name", "pre").text)driver.quit()
Jalankan, dan respons ipinfo.io akan menampilkan IP, kota, serta jaringan yang dilihat situs tujuan. Kalau kota yang muncul bukan Indonesia, periksa lagi parameter -cc- di username. Karena selenium-wire bekerja sebagai perantara lokal, ia juga memudahkanmu melihat request yang keluar saat men-debug.
Cara 2: ekstensi untuk autentikasi (tanpa dependensi tambahan)
Kalau kamu tidak mau menambah paket dan ingin tetap memakai Selenium standar, trik lama yang masih sering dipakai adalah memuat ekstensi Chrome kecil yang menjawab permintaan autentikasi proxy secara otomatis. Skrip di bawah membuat ekstensi itu di memori, lalu memuatnya ke Chrome.
import zipfilefrom selenium import webdriverfrom selenium.webdriver.chrome.options import OptionsHOST, PORT = "proxy.waroengproxy.com", 8000USER, PWD = "USERNAME-cc-ID", "PASSWORD"manifest = """{"name": "proxy-auth", "version": "1.0", "manifest_version": 2,"permissions": ["proxy", "webRequest", "webRequestBlocking", "<all_urls>"],"background": { "scripts": ["bg.js"] }}"""bg = """chrome.proxy.settings.set({value: {mode: "fixed_servers", rules: {singleProxy: {scheme: "http", host: "%s", port: %d}}}});chrome.webRequest.onAuthRequired.addListener(() => ({authCredentials: {username: "%s", password: "%s"}}),{urls: ["<all_urls>"]}, ["blocking"]);""" % (HOST, PORT, USER, PWD)with zipfile.ZipFile("proxy_auth.zip", "w") as z:z.writestr("manifest.json", manifest)z.writestr("bg.js", bg)opts = Options()opts.add_extension("proxy_auth.zip")driver = webdriver.Chrome(options=opts)driver.get("https://ipinfo.io/json")
Cara ini tidak butuh paket pihak ketiga, tapi bergantung pada ekstensi berformat lama (manifest v2) dan tidak jalan di mode headless lama Chrome. Kalau lingkunganmu menolak ekstensi v2, pakai Cara 1 atau Cara 3. Untuk Firefox, autentikasi proxy biasanya diselesaikan lewat preferensi profil atau add-on serupa.
Cara 3: whitelist IP (tanpa username dan password sama sekali)
Kalau Selenium berjalan di server atau VPS dengan IP publik tetap, cara paling bersih adalah melewati autentikasi sepenuhnya. Daftarkan IP server itu ke whitelist, lalu arahkan Chrome ke proxy tanpa kredensial.
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsopts = Options()opts.add_argument("--proxy-server=http://proxy.waroengproxy.com:8000")driver = webdriver.Chrome(options=opts)driver.get("https://ipinfo.io/json")
Buka Generator proxy di dashboard, lalu tambahkan hingga 3 alamat IPv4/IPv6 ke whitelist. Karena tanpa kredensial, target lokasi tidak bisa ditulis di username, jadi cara ini cocok untuk kebutuhan tanpa filter lokasi. Pahami juga risikonya, seperti IP bersama (CGNAT) atau IP dinamis, yang dibahas di Whitelist IP atau username/password?.
Sesi sticky dan target lokasi
Selenium sering dipakai untuk alur yang butuh IP tetap selama beberapa langkah: login, lalu beberapa klik berikutnya. Untuk itu pakai sesi sticky. Tambahkan -s- dengan label bebas dan -ttl- dengan durasi detik ke dalam username. Selama TTL berjalan, label yang sama keluar dari IP yang sama.
# rotating: IP baru tiap requestUSERNAME-cc-ID# sticky 10 menit dengan label login1USERNAME-cc-ID-s-login1-ttl-600# target lebih spesifik: Indonesia, kota SurabayaUSERNAME-cc-ID-ct-Surabaya-s-login1-ttl-600
TTL boleh 1 sampai 86400 detik (24 jam), bawaannya 60 detik. Tulis label dengan huruf dan angka saja, tanpa tanda minus, karena minus adalah pemisah di username. Satu sesi sticky bukan IP permanen: perangkat rumahan bisa offline sebelum TTL habis. Untuk alur penting, cek IP di awal tiap langkah dan ulangi kalau berubah. Perbandingan lengkap mode ada di Sticky atau rotating, dan semua parameter target di Target negara, kota, sampai ISP.
Hemat kuota di Selenium
WaroengProxy menagih per GB data yang lewat proxy, dengan harga dasar Rp 10.000 per GB. Browser yang dikendalikan Selenium memuat segalanya: gambar, font, video, dan skrip. Untuk scraping yang cuma butuh teks, ini pemborosan besar. Blokir sumber daya berat supaya tagihanmu turun drastis.
# selenium-wire: blokir gambar, font, dan mediadriver.scopes = [r'.*'] # tetap pantau semuadef interceptor(request):if request.path.endswith((".png", ".jpg", ".jpeg", ".gif",".webp", ".woff", ".woff2", ".mp4")):request.abort()driver.request_interceptor = interceptor
Alternatif tanpa selenium-wire: matikan gambar lewat preferensi Chrome (prefs dengan profile.managed_default_content_settings.images = 2). Cara menghitung kebutuhan GB dan trik hemat lainnya ada di Berapa GB yang sebenarnya kamu butuhkan?. Untuk tool otomasi lain, lihat juga Proxy Playwright dan Puppeteer.
Checklist sebelum menjalankan skala besar
- Patuhi ToS situs dan
robots.txttarget. Proxy bukan izin mengambil apa pun; kumpulkan data publik saja. - Beri jeda beberapa detik antar request ke domain yang sama, dan hormati respons 429/503 dengan melambat.
- Simpan token akses dan password proxy dengan aman. Lihat Token akses, 2FA, dan sesi.
- Kalau tersambung tapi gagal, cek error-nya di Proxy error 407, timeout, atau IP salah negara.
ipinfo.io sampai IP dan lokasi benar, baru tingkatkan ke alur sungguhan. Menu Cek proxy di dashboard juga bisa menguji koneksi hingga 50 kali per hari sebelum kamu menulis satu baris Selenium pun.Tiga cara, satu endpoint. Untuk mayoritas kasus, selenium-wire adalah titik awal tercepat; untuk server dengan IP tetap, whitelist paling rapi. Siapkan proxy dulu, lihat harga per GB, lalu buat daftar proxy sekaligus di Generator proxy.