Không cần KYC — không cần ID, không selfie, không giấy tờ · Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC · Nạp tiền từ 25 US$
Ngôn ngữ: Tiếng Việt
Xem bảng giá

Hướng dẫn · Selenium

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

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.

Cập nhật lần cuối: · 7 phút đọc

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ì?

Cờ của Chrome--proxy-server=http://host:port, không có trường cho thông tin đăng nhập
Cách 1Allowlist 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 2Forwarder cục bộ trên 127.0.0.1:8899 thêm header Proxy-Authorization
Tránhuser:password bên trong --proxy-server; tiện ích trình duyệt không rõ nguồn gốc
Kiểm traMở 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 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
"""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
"""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ộ
"""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.

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? (3)
  1. Cài đặt mạng (định dạng --proxy-server) — The Chromium Projects (2026-10-19)
  2. luồng asyncio — Python Software Foundation (2026-10-19)
  3. Selenium WebDriver: tùy chọn Chrome — Selenium (2026-10-19)

Từ 2,24 US$ mỗi IP ISP · 30 ngày · không cần KYC

Xem bảng giá