# Thiết lập proxy tĩnh cho Selenium với Chrome

> Thiết lập proxy tĩnh cho Selenium với Chrome: vì sao đăng nhập trong --proxy-server thất bại, và 2 cách khắc phục đã kiểm chứng, allowlist IP hoặc một forwarder cục bộ. Không cần KYC, thanh toán bằng crypto.

- URL: https://steadyproxy.com/vi/guides/selenium-static-proxy/
- Cập nhật lần cuối: 2026-10-19
- Publisher: SteadyProxy (https://steadyproxy.com)

Chrome chỉ nhận host và port của proxy, không nhận thông tin đăng nhập. Hãy cấp quyền cho máy của bạn bằng IP, hoặc để một forwarder cục bộ nhỏ thêm phần đăng nhập.

**Trả lời nhanh — Làm sao để dùng proxy tĩnh với Selenium và Chrome?**

Với proxy tĩnh cho Selenium trong Chrome, đừng đặt username và password vào --proxy-server: Chrome chỉ nhận scheme, host và port ở đó. Hãy dùng một trong hai cách hiệu quả. Cấp quyền cho máy của bạn trong allowlist IP của proxy, hoặc chạy một forwarder cục bộ nhỏ để thêm phần đăng nhập cho Chrome. **SteadyProxy** tùy chọn đăng nhập: Tên đăng nhập và mật khẩu, hoặc danh sách IP được phép (tối đa 10 IP). Cập nhật 19 tháng 10, 2026.

## Những thông tin chính là gì?

| Thuộc tính | Giá trị |
| --- | --- |
| Cờ của Chrome | --proxy-server=http://host:port, không có trường cho thông tin đăng nhập |
| Cách 1 | Allowlist IP: tối đa 10 IP của chính bạn kết nối mà không cần mật khẩu |
| Cách 2 | Forwarder cục bộ trên 127.0.0.1:8899 thêm header Proxy-Authorization |
| Tránh | user:password bên trong --proxy-server; tiện ích trình duyệt không rõ nguồn gốc |
| Kiểm tra | Mở api.ipify.org trong trình duyệt được điều khiển |
| Đã kiểm thử | Forwarder đã chuyển các yêu cầu HTTPS và HTTP qua một proxy thử nghiệm có bảo vệ bằng mật khẩu, 19 tháng 10, 2026 |

## Vì sao Chrome từ chối thông tin đăng nhập trong URL proxy?

Cờ --proxy-server của Chrome chỉ nhận scheme, host và port. Tài liệu cài đặt mạng của Chromium cho thấy không có username hay password trong định dạng đó. Khi proxy yêu cầu đăng nhập, người dùng sẽ thấy hộp đăng nhập, nhưng một script do Selenium điều khiển không thể điền nó một cách ổn định. Vì vậy việc đăng nhập phải diễn ra bên ngoài Chrome: hoặc proxy tin tưởng IP của máy bạn, hoặc một tiện ích trên máy bạn gửi thông tin đăng nhập thay cho Chrome.

## Làm sao dùng allowlist IP với Selenium?

Đây là cách đơn giản nhất. Tìm IP công khai của máy bạn bằng cách mở api.ipify.org không qua proxy. Thêm IP đó vào allowlist của tài khoản SteadyProxy của bạn; bạn có thể đăng ký tối đa 10 IP nguồn. Sau đó chỉ truyền host và port cho Chrome. Ví dụ dùng port HTTP; SOCKS5 hoạt động tương tự với socks5:// và port SOCKS5. [Hướng dẫn allowlist](https://steadyproxy.com/vi/guides/ip-allowlisting/) của chúng tôi giải thích cả hai chiều của allowlist.

*selenium_allowlist.py: Chrome chỉ với host và port*

```python
"""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 cục bộ thêm phần đăng nhập như thế nào?

Một forwarder cục bộ lắng nghe trên 127.0.0.1, nhận các yêu cầu proxy của Chrome mà không cần đăng nhập, thêm header Proxy-Authorization và chuyển chúng tới proxy tĩnh của bạn. Nó chỉ dùng thư viện chuẩn của Python. Nó xử lý HTTPS qua đường hầm CONNECT, và http:// thông thường với một yêu cầu mỗi kết nối. Hãy giữ nó gắn với 127.0.0.1, để không máy nào khác có thể dùng proxy của bạn qua nó. Chúng tôi đã kiểm tra nó vào 19 tháng 10, 2026 với curl qua HTTPS và HTTP, qua một proxy thử nghiệm từ chối các yêu cầu không có thông tin đăng nhập đúng.

*local_forwarder.py: 127.0.0.1:8899 tới proxy tĩnh của bạn*

```python
"""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())

```

Khởi động forwarder trong một terminal, sau đó chạy Selenium với địa chỉ cục bộ. Chrome không bao giờ thấy mật khẩu, và thông tin đăng nhập nằm trong biến môi trường trên máy bạn.

*selenium_forwarder.py: Chrome qua forwarder cục bộ*

```python
"""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()

```

## Làm sao chạy nhiều IP tĩnh với Selenium?

Chạy một forwarder cho mỗi IP trên port cục bộ riêng, chẳng hạn 8899, 8900 và 8901, mỗi cái với thông tin đăng nhập của IP đó. Khởi động một Chrome driver cho mỗi port. Với allowlist IP, bạn bỏ qua các forwarder và truyền host và port của từng IP cho driver riêng của nó. Cấp cho mỗi driver một --user-data-dir riêng nếu nó phải giữ cookie giữa các lần chạy. Kiểm tra mỗi driver với api.ipify.org trước khi làm việc thực sự.

## Firefox và Selenium có gặp vấn đề tương tự không?

Có, ở dạng tương tự. Firefox đọc host và port proxy từ tùy chọn của nó, và đăng nhập proxy HTTP hiện ra dưới dạng hộp thoại mà tự động hóa không thể điền một cách ổn định. Hai cách tương tự đều hiệu quả: allowlist IP, hoặc forwarder cục bộ với proxy HTTP của Firefox đặt thành 127.0.0.1 và port 8899. Đối với một công cụ tự động hóa trình duyệt có đăng nhập proxy tích hợp, xem [hướng dẫn Playwright](https://steadyproxy.com/vi/guides/playwright-static-proxy/).

## Người ta còn hỏi gì về Selenium và proxy tĩnh?

### Tôi có thể viết http://user:password@host:port trong --proxy-server không?

Nó không hoạt động ổn định. Định dạng được tài liệu hóa của Chrome cho --proxy-server không có chỗ cho thông tin đăng nhập, nên thông tin đăng nhập không được dùng. Các yêu cầu sau đó thất bại với lỗi xác thực proxy hoặc hiện hộp đăng nhập. Hãy dùng allowlist IP hoặc forwarder cục bộ được mô tả trên trang này.

### Tiện ích Chrome có phải là cách tốt để gửi thông tin đăng nhập proxy?

Nó có thể hoạt động, nhưng nó thêm mã với quyền hạn rộng vào trình duyệt bạn tự động hóa, và các quy tắc tiện ích thay đổi giữa các phiên bản Chrome. Hai cách ở đây không có bộ phận chuyển động nào bên trong Chrome. Nếu bạn dùng tiện ích, hãy tự viết hoặc kiểm toán nó, và giữ nó ngoài các profile dùng cho công việc khác.

### Forwarder cục bộ có an toàn không?

Nó chỉ lắng nghe trên 127.0.0.1, nên chỉ các chương trình trên máy của bạn mới dùng được. Bất kỳ ai truy cập được máy của bạn cũng có thể dùng nó, vì họ có thể đọc các biến môi trường của bạn. Hãy dừng nó khi công việc kết thúc. Mặc định nó không ghi log; chỉ thêm logging khi không có header Proxy-Authorization.

### Làm sao để tìm IP công cộng để thêm vào allowlist?

Trên máy chạy Selenium, mở https://api.ipify.org mà không qua proxy. Đó chính là địa chỉ mà proxy nhìn thấy. Nếu văn phòng hoặc server của bạn có IP cố định, hãy thêm vào allowlist một lần. Kết nối tại nhà có IP thay đổi thì không phù hợp; thay vào đó hãy dùng forwarder với username và password.

### Selenium Wire hoặc thư viện tương tự có giải quyết được vấn đề này không?

Một số thư viện thêm đăng nhập proxy vào Selenium bằng cách chạy proxy chặn riêng của chúng, khá giống forwarder ở đây. Hãy kiểm tra xem thư viện còn được duy trì không trước khi phụ thuộc vào nó. Forwarder trên trang này chỉ khoảng 60 dòng Python thư viện chuẩn mà bạn có thể đọc toàn bộ.

### Tôi có thể thêm bao nhiêu IP vào allowlist cho các máy Selenium?

Tối đa 10 IP nguồn trên tài khoản SteadyProxy của bạn, đủ cho hầu hết văn phòng và cụm server. Các tùy chọn đăng nhập của chúng tôi là: Tên đăng nhập và mật khẩu, hoặc danh sách IP được phép (tối đa 10 IP). Nếu bạn chạy Selenium trên nhiều máy hơn, hãy định tuyến chúng qua một server có IP cố định, hoặc dùng forwarder với username và password trên từng máy.

## Hướng dẫn này dùng những nguồn nào?

1. [Cài đặt mạng (định dạng --proxy-server)](https://www.chromium.org/developers/design-documents/network-settings/) — The Chromium Projects (2026-10-19)
2. [luồng asyncio](https://docs.python.org/3/library/asyncio-stream.html) — Python Software Foundation (2026-10-19)
3. [Selenium WebDriver: tùy chọn Chrome](https://www.selenium.dev/documentation/webdriver/browsers/chrome/) — Selenium (2026-10-19)

---

SteadyProxy: SteadyProxy là nhà cung cấp proxy tĩnh: IP ISP (dân cư tĩnh) và IP datacenter riêng được thuê theo từng IP trong 30 ngày, thanh toán bằng crypto, không cần tải lên giấy tờ tùy thân.
