Jawaban singkat
Bagaimana cara menggunakan proxy statis dengan Selenium dan Chrome?
Untuk proxy statis Selenium di Chrome, jangan masukkan username dan password ke --proxy-server: Chrome hanya menerima skema, host, dan port di sana. Gunakan salah satu dari dua metode yang berfungsi. Otorisasi mesin Anda di IP allowlist proxy, atau jalankan forwarder lokal kecil yang menambahkan login untuk Chrome. SteadyProxy opsi login: Nama pengguna dan kata sandi, atau allowlist IP (hingga 10 IP). Diperbarui 19 Oktober 2026.
Apa saja fakta utamanya?
| Switch Chrome | --proxy-server=http://host:port, tanpa kolom untuk login |
|---|---|
| Metode 1 | IP allowlist: hingga 10 IP milik Anda sendiri terhubung tanpa password |
| Metode 2 | Forwarder lokal di 127.0.0.1:8899 menambahkan header Proxy-Authorization |
| Hindari | user:password di dalam --proxy-server; plug-in browser yang asal-usulnya tidak diketahui |
| Periksa | Buka api.ipify.org di browser yang dikendalikan |
| Diuji | Forwarder meneruskan permintaan HTTPS dan HTTP melalui proxy uji yang dilindungi password, 19 Oktober 2026 |
Mengapa Chrome menolak kredensial di URL proxy?
Switch --proxy-server Chrome menerima skema, host, dan port. Dokumentasi pengaturan jaringan Chromium tidak menunjukkan username atau password dalam format tersebut. Ketika proxy meminta login, orang akan melihat kotak masuk, tetapi skrip yang dikendalikan Selenium tidak dapat mengisinya dengan andal. Jadi login harus terjadi di luar Chrome: entah proxy mempercayai IP mesin Anda, atau helper di mesin Anda mengirim login untuk Chrome.
Bagaimana cara menggunakan IP allowlist dengan Selenium?
Ini metode paling sederhana. Temukan IP publik mesin Anda dengan membuka api.ipify.org tanpa proxy. Tambahkan IP tersebut ke allowlist akun SteadyProxy Anda; Anda dapat mendaftarkan hingga 10 IP sumber. Lalu teruskan hanya host dan port ke Chrome. Contoh menggunakan port HTTP; SOCKS5 bekerja dengan cara yang sama dengan socks5:// dan port SOCKS5. Panduan allowlist kami menjelaskan kedua arah allowlisting.
"""Selenium + Chrome through a static proxy authorised by IP allowlist.
Install: python -m pip install selenium
Before running: add this machine's public IP to the allowlist of your account.
"""
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")
options = webdriver.ChromeOptions()
# Host and port only: Chrome's --proxy-server switch has no field for a username or password
options.add_argument("--proxy-server=http://" + HOST + ":" + PORT)
driver = webdriver.Chrome(options=options)
try:
driver.get("https://api.ipify.org?format=json")
print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()
Bagaimana forwarder lokal menambahkan login?
Forwarder lokal mendengarkan di 127.0.0.1, menerima permintaan proxy Chrome tanpa login, menambahkan header Proxy-Authorization, dan meneruskannya ke proxy statis Anda. Ini hanya menggunakan pustaka standar Python. Ini menangani HTTPS melalui terowongan CONNECT, dan http:// biasa dengan satu permintaan per koneksi. Pertahankan agar terikat ke 127.0.0.1, sehingga mesin lain tidak dapat menggunakan proxy Anda melaluinya. Kami mengujinya pada 19 Oktober 2026 dengan curl melalui HTTPS dan HTTP, melalui proxy uji yang menolak permintaan tanpa login yang benar.
"""Local forwarder: Chrome -> 127.0.0.1:8899 (no login) -> static proxy (with login).
It adds the Proxy-Authorization header for you. Keep it bound to 127.0.0.1.
Run: python local_forwarder.py (standard library only)
"""
import asyncio
import base64
import os
LISTEN_PORT = int(os.environ.get("LOCAL_PORT", "8899"))
UPSTREAM_HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
UPSTREAM_PORT = int(os.environ.get("PROXY_PORT", "7777"))
CREDENTIALS = os.environ.get("PROXY_USER", "USERNAME") + ":" + os.environ.get("PROXY_PASS", "PASSWORD")
AUTH = "Proxy-Authorization: Basic " + base64.b64encode(CREDENTIALS.encode()).decode()
DROP = ("proxy-authorization:", "proxy-connection:", "connection:")
async def pipe(reader, writer):
try:
while data := await reader.read(65536):
writer.write(data)
await writer.drain()
except ConnectionError:
pass
finally:
writer.close()
async def handle(client_reader, client_writer):
try:
head = await client_reader.readuntil(b"\r\n\r\n")
except (asyncio.IncompleteReadError, asyncio.LimitOverrunError):
client_writer.close()
return
lines = head.decode("latin-1").split("\r\n")
headers = [h for h in lines[1:] if h and not h.lower().startswith(DROP)]
headers.append(AUTH)
if not lines[0].upper().startswith("CONNECT "):
headers.append("Connection: close") # plain http:// - one request per connection
try:
up_reader, up_writer = await asyncio.open_connection(UPSTREAM_HOST, UPSTREAM_PORT)
except OSError:
client_writer.write(b"HTTP/1.1 502 Bad Gateway\r\nContent-Length: 0\r\n\r\n")
client_writer.close()
return
up_writer.write(("\r\n".join([lines[0]] + headers) + "\r\n\r\n").encode("latin-1"))
await up_writer.drain()
await asyncio.gather(pipe(client_reader, up_writer), pipe(up_reader, client_writer))
async def main():
server = await asyncio.start_server(handle, "127.0.0.1", LISTEN_PORT)
print("Forwarding 127.0.0.1:%d -> %s:%d" % (LISTEN_PORT, UPSTREAM_HOST, UPSTREAM_PORT))
async with server:
await server.serve_forever()
if __name__ == "__main__":
asyncio.run(main())
Jalankan forwarder di satu terminal, lalu jalankan Selenium dengan alamat lokal. Chrome tidak pernah melihat password, dan login tetap di variabel lingkungan di mesin Anda.
"""Selenium + Chrome through the local forwarder (username/password kept out of Chrome).
Start local_forwarder.py first, then run this file.
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://api.ipify.org?format=json")
print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()
Bagaimana cara menjalankan beberapa IP statis dengan Selenium?
Jalankan satu forwarder per IP pada port lokalnya masing-masing, seperti 8899, 8900, dan 8901, masing-masing dengan kredensial IP tersebut. Mulai satu driver Chrome per port. Dengan IP allowlist, Anda melewati forwarder dan meneruskan host dan port setiap IP ke drivernya masing-masing. Beri setiap driver --user-data-dir sendiri jika harus menyimpan cookie antar proses. Periksa setiap driver dengan api.ipify.org sebelum pekerjaan sebenarnya.
Apakah masalah yang sama ada pada Firefox dan Selenium?
Ya, dalam bentuk yang serupa. Firefox membaca host dan port proxy dari preferensinya, dan login proxy HTTP muncul sebagai dialog yang tidak dapat diisi dengan andal oleh otomatisasi. Dua metode yang sama berfungsi: IP allowlist, atau forwarder lokal dengan proxy HTTP Firefox diatur ke 127.0.0.1 dan port 8899. Untuk alat otomatisasi browser dengan login proxy bawaan, lihat panduan Playwright.
Apa lagi yang orang tanyakan tentang Selenium dan proxy statis?
Bisakah saya menulis http://user:password@host:port di --proxy-server?
Tidak berfungsi dengan andal. Format --proxy-server yang didokumentasikan Chrome tidak memiliki tempat untuk login, jadi kredensial tidak digunakan. Permintaan kemudian gagal dengan error autentikasi proxy atau menampilkan kotak masuk. Gunakan IP allowlist atau forwarder lokal yang dijelaskan di halaman ini.
Apakah ekstensi Chrome cara yang baik untuk mengirim login proxy?
Bisa berfungsi, tetapi menambahkan kode dengan izin luas ke browser yang Anda otomatiskan, dan aturan ekstensi berubah antar versi Chrome. Dua metode di sini tidak memiliki bagian yang bergerak di dalam Chrome. Jika Anda menggunakan ekstensi, tulis sendiri atau audit, dan jauhkan dari profil yang digunakan untuk pekerjaan lain.
Apakah forwarder lokal aman?
Ini hanya mendengarkan di 127.0.0.1, jadi hanya program di mesin Anda yang dapat menggunakannya. Siapa pun yang memiliki akses ke mesin Anda juga bisa menggunakannya, karena mereka dapat membaca environment variable Anda. Hentikan saat pekerjaan selesai. Secara default tidak mencatat apa pun; tambahkan logging hanya tanpa header Proxy-Authorization.
Bagaimana cara menemukan IP publik untuk allowlist?
Di mesin yang menjalankan Selenium, buka https://api.ipify.org tanpa proxy. Itulah alamat yang dilihat oleh proxy. Jika kantor atau server Anda memiliki IP tetap, allowlist sekali saja. Koneksi rumah yang IP-nya berubah kurang cocok; gunakan forwarder dengan username dan password sebagai gantinya.
Apakah Selenium Wire atau library serupa menyelesaikan masalah ini?
Beberapa library menambahkan login proxy ke Selenium dengan menjalankan proxy pencegatnya sendiri, mirip seperti forwarder di sini. Periksa apakah library tersebut masih dipelihara sebelum Anda bergantung padanya. Forwarder di halaman ini sekitar 60 baris Python standard-library yang dapat Anda baca sepenuhnya.
Berapa banyak IP yang bisa saya allowlist untuk mesin Selenium?
Hingga 10 source IP pada akun SteadyProxy Anda, yang cukup untuk sebagian besar kantor dan armada server. Opsi login kami adalah: Nama pengguna dan kata sandi, atau allowlist IP (hingga 10 IP). Jika Anda menjalankan Selenium di lebih banyak mesin, rutekan melalui satu server dengan IP tetap, atau gunakan forwarder dengan username dan password di setiap mesin.
Sumber apa yang digunakan panduan ini? (3)
- Pengaturan jaringan (format --proxy-server) — The Chromium Projects (2026-10-19)
- asyncio streams — Python Software Foundation (2026-10-19)
- Selenium WebDriver: opsi Chrome — Selenium (2026-10-19)