คำตอบสั้น
จะใช้พร็อกซีแบบสแตติกกับ Selenium และ Chrome ได้อย่างไร?
สำหรับพร็อกซีแบบสแตติกกับ Selenium ใน Chrome อย่าใส่ชื่อผู้ใช้และรหัสผ่านใน --proxy-server เพราะ Chrome รับเฉพาะ scheme, host และ port ในตำแหน่งนั้น ใช้หนึ่งในสองวิธีที่ได้ผลจริง คืออนุญาตเครื่องของคุณใน IP allowlist ของพร็อกซี หรือรัน forwarder ขนาดเล็กในเครื่องที่เพิ่มข้อมูลล็อกอินให้ Chrome SteadyProxy ตัวเลือกการล็อกอิน: ชื่อผู้ใช้และรหัสผ่าน หรือรายชื่อ IP ที่อนุญาต (สูงสุด 10 IP) อัปเดต 19 ตุลาคม 2026
ข้อเท็จจริงสำคัญมีอะไรบ้าง?
| สวิตช์ของ Chrome | --proxy-server=http://host:port โดยไม่มีช่องสำหรับข้อมูลล็อกอิน |
|---|---|
| วิธีที่ 1 | IP allowlist: IP ของคุณเองสูงสุด 10 รายการเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่าน |
| วิธีที่ 2 | forwarder ภายในเครื่องที่ 127.0.0.1:8899 เพิ่มส่วนหัว Proxy-Authorization |
| หลีกเลี่ยง | user:password ใน --proxy-server และปลั๊กอินเบราว์เซอร์จากแหล่งที่ไม่รู้จัก |
| ตรวจสอบ | เปิด api.ipify.org ในเบราว์เซอร์ที่ขับเคลื่อนด้วย Selenium |
| ทดสอบแล้ว | forwarder ส่งต่อคำขอ HTTPS และ HTTP ผ่านพร็อกซีทดสอบที่ป้องกันด้วยรหัสผ่าน 19 ตุลาคม 2026 |
ทำไม Chrome ถึงปฏิเสธข้อมูลรับรองใน URL ของพร็อกซี?
สวิตช์ --proxy-server ของ Chrome รับ scheme, host และ port เอกสารการตั้งค่าเครือข่ายของ Chromium ไม่แสดงชื่อผู้ใช้หรือรหัสผ่านในรูปแบบนั้น เมื่อพร็อกซีขอให้ล็อกอิน คนจะเห็นกล่องลงชื่อเข้าใช้ แต่สคริปต์ที่ขับเคลื่อนด้วย Selenium ไม่สามารถกรอกได้อย่างน่าเชื่อถือ ดังนั้นการล็อกอินต้องเกิดขึ้นนอก Chrome ไม่ว่าจะเป็นพร็อกซีที่เชื่อถือ IP ของเครื่องคุณ หรือตัวช่วยในเครื่องของคุณที่ส่งข้อมูลล็อกอินให้ Chrome
จะใช้ IP allowlist กับ Selenium ได้อย่างไร?
นี่คือวิธีที่ง่ายที่สุด หา IP สาธารณะของเครื่องคุณโดยเปิด api.ipify.org โดยไม่ผ่านพร็อกซี เพิ่ม IP นั้นใน allowlist ของบัญชี SteadyProxy ของคุณ ซึ่งลงทะเบียน IP ต้นทางได้สูงสุด 10 รายการ จากนั้นส่งเฉพาะ host และ port ให้ Chrome ตัวอย่างใช้พอร์ต HTTP ส่วน SOCKS5 ทำงานแบบเดียวกันด้วย socks5:// และพอร์ต SOCKS5 คู่มือ allowlisting ของเราอธิบายการ allowlist ทั้งสองทิศทาง
"""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()
forwarder ภายในเครื่องเพิ่มข้อมูลล็อกอินได้อย่างไร?
forwarder ภายในเครื่องจะฟังที่ 127.0.0.1 รับคำขอพร็อกซีจาก Chrome โดยไม่มีข้อมูลล็อกอิน เพิ่มส่วนหัว Proxy-Authorization แล้วส่งต่อไปยังพร็อกซีแบบสแตติกของคุณ ใช้เฉพาะไลบรารีมาตรฐานของ Python จัดการ HTTPS ผ่านอุโมงค์ CONNECT และ http:// แบบธรรมดาด้วยหนึ่งคำขอต่อการเชื่อมต่อหนึ่งครั้ง ผูกไว้กับ 127.0.0.1 เท่านั้น เพื่อไม่ให้เครื่องอื่นใช้พร็อกซีของคุณผ่านมันได้ เราทดสอบเมื่อ 19 ตุลาคม 2026 ด้วย curl ผ่าน HTTPS และ HTTP ผ่านพร็อกซีทดสอบที่ปฏิเสธคำขอที่ไม่มีข้อมูลล็อกอินที่ถูกต้อง
"""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())
เริ่ม forwarder ในเทอร์มินัลหนึ่ง แล้วรัน Selenium ด้วยที่อยู่ภายในเครื่อง Chrome จะไม่เห็นรหัสผ่านเลย และข้อมูลล็อกอินจะอยู่ในตัวแปรสภาพแวดล้อมบนเครื่องของคุณ
"""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()
จะรัน IP แบบสแตติกหลายรายการกับ Selenium ได้อย่างไร?
รัน forwarder หนึ่งตัวต่อ IP บนพอร์ตภายในเครื่องของตัวเอง เช่น 8899, 8900 และ 8901 โดยแต่ละตัวใช้ข้อมูลรับรองของ IP นั้น เริ่ม Chrome driver หนึ่งตัวต่อพอร์ต หากใช้ IP allowlist คุณจะข้าม forwarder ไปและส่ง host และ port ของแต่ละ IP ให้ driver ของตัวเอง กำหนด --user-data-dir แยกให้แต่ละ driver หากต้องเก็บคุกกี้ระหว่างการรัน ตรวจสอบทุก driver ด้วย api.ipify.org ก่อนเริ่มงานจริง
ปัญหาเดียวกันนี้เกิดกับ Firefox และ Selenium ด้วยหรือไม่?
เกิด ในรูปแบบที่คล้ายกัน Firefox อ่าน host และ port ของพร็อกซีจากค่ากำหนด และการล็อกอินพร็อกซี HTTP จะปรากฏเป็นกล่องโต้ตอบที่ระบบอัตโนมัติไม่สามารถกรอกได้อย่างน่าเชื่อถือ ใช้สองวิธีเดียวกันได้ คือ IP allowlist หรือ forwarder ภายในเครื่องโดยตั้งพร็อกซี HTTP ของ Firefox เป็น 127.0.0.1 และพอร์ต 8899 สำหรับเครื่องมือระบบอัตโนมัติของเบราว์เซอร์ที่มีการล็อกอินพร็อกซีในตัว ดูคู่มือ Playwright
ผู้คนยังถามอะไรเกี่ยวกับ Selenium และพร็อกซีแบบสแตติกอีก?
สามารถเขียน http://user:password@host:port ใน --proxy-server ได้ไหม?
ไม่ได้ผลอย่างน่าเชื่อถือ รูปแบบที่เอกสารของ Chrome กำหนดสำหรับ --proxy-server ไม่มีตำแหน่งสำหรับข้อมูลล็อกอิน ข้อมูลรับรองจึงไม่ถูกใช้ คำขอจะล้มเหลวด้วยข้อผิดพลาดการยืนยันตัวตนพร็อกซีหรือแสดงกล่องลงชื่อเข้าใช้ ใช้ IP allowlist หรือ forwarder ภายในเครื่องที่อธิบายในหน้านี้
ส่วนขยาย Chrome เป็นวิธีที่ดีในการส่งข้อมูลล็อกอินพร็อกซีหรือไม่?
ใช้ได้ แต่จะเพิ่มโค้ดที่มีสิทธิ์กว้างให้เบราว์เซอร์ที่คุณขับเคลื่อนด้วยระบบอัตโนมัติ และกฎของส่วนขยายเปลี่ยนไปตามเวอร์ชันของ Chrome สองวิธีในหน้านี้ไม่มีชิ้นส่วนที่เคลื่อนไหวภายใน Chrome หากใช้ส่วนขยาย ให้เขียนเองหรือตรวจสอบโค้ด และอย่าใช้ในโปรไฟล์ที่ใช้ทำงานอื่น
forwarder ภายในเครื่องปลอดภัยหรือไม่?
มันรับฟังเฉพาะที่ 127.0.0.1 เท่านั้น โปรแกรมบนเครื่องของคุณเท่านั้นที่ใช้มันได้ ใครก็ตามที่เข้าถึงเครื่องของคุณก็ใช้มันได้เช่นกัน เพราะพวกเขาสามารถอ่าน environment variables ของคุณได้ หยุดมันเมื่องานเสร็จสิ้น โดยค่าเริ่มต้นมันไม่บันทึก log ใดๆ เพิ่มการบันทึก log ได้เฉพาะเมื่อไม่มี header Proxy-Authorization
ฉันจะหา public IP เพื่อเพิ่มใน allowlist ได้อย่างไร?
บนเครื่องที่รัน Selenium ให้เปิด https://api.ipify.org โดยไม่ผ่านพร็อกซี นั่นคือ address ที่พร็อกซีมองเห็น หากออฟฟิศหรือเซิร์ฟเวอร์ของคุณมี IP คงที่ ให้เพิ่มใน allowlist ครั้งเดียว การเชื่อมต่อจากบ้านที่ IP เปลี่ยนตลอดไม่เหมาะนัก ให้ใช้ forwarder พร้อม username และ password แทน
Selenium Wire หรือไลบรารีที่คล้ายกันแก้ปัญหานี้ได้ไหม?
ไลบรารีบางตัวเพิ่ม proxy login ให้ Selenium โดยรันพร็อกซีที่ดักจับการเชื่อมต่อของตัวเอง คล้ายกับ forwarder ในหน้านี้ ตรวจสอบว่าไลบรารียังได้รับการดูแลอยู่ก่อนจะพึ่งพามัน forwarder ในหน้านี้มีประมาณ 60 บรรทัดของ Python มาตรฐานที่คุณอ่านได้ทั้งหมด
ฉันสามารถเพิ่ม IP ใน allowlist สำหรับเครื่อง Selenium ได้กี่ IP?
สูงสุด 10 source IP บนบัญชี SteadyProxy ของคุณ ซึ่งครอบคลุมออฟฟิศและฟลีตเซิร์ฟเวอร์ส่วนใหญ่ ตัวเลือกการเข้าสู่ระบบของเราคือ: ชื่อผู้ใช้และรหัสผ่าน หรือรายชื่อ IP ที่อนุญาต (สูงสุด 10 IP) หากคุณรัน Selenium บนเครื่องมากกว่านี้ ให้ส่งทราฟฟิกผ่านเซิร์ฟเวอร์เดียวที่มี IP คงที่ หรือใช้ forwarder พร้อม username และ password บนแต่ละเครื่อง
คู่มือนี้ใช้แหล่งข้อมูลใด? (3)
- การตั้งค่าเครือข่าย (รูปแบบ --proxy-server) — The Chromium Projects (2026-10-19)
- asyncio streams — Python Software Foundation (2026-10-19)
- Selenium WebDriver: ตัวเลือก Chrome — Selenium (2026-10-19)