Cách Sử Dụng SeleniumBase với Proxy: Hướng Dẫn Hoàn Chỉnh 2026
Tóm tắt
SeleniumBase đọc một proxy từ một trong ba điểm nhập liệu thay thế — cờ CLI pytest --proxy, tham số proxy cho Driver(), hoặc tham số proxy cho trình quản lý ngữ cảnh SB() — và cả ba đều lập trình thông qua cùng một mã khởi tạo driver bên trong.
Proxy HTTP/HTTPS xác thực trên Chrome và Edge hoạt động mà không cần popup đăng nhập vì SeleniumBase tự động tạo một tiện ích mở rộng trình duyệt Manifest V3 mà trả lời mỗi thách thức 407 tự động; bạn không bao giờ cần một lớp proxy ẩn danh riêng biệt cho hai trình duyệt đó.
Firefox xử lý proxy khác nhau và không tự động điền thông tin đăng nhập. SeleniumBase thiết lập các tùy chọn network.proxy.* gốc của Firefox (bao gồm SOCKS4/5/5h), nhưng không có bước tiêm thông tin đăng nhập, vì vậy một proxy xác thực vẫn kích hoạt thông báo đăng nhập của Firefox.
SOCKS4, SOCKS5, và SOCKS5h là các sơ đồ proxy hợp lệ trong cả cờ CLI và hàm khởi tạo Python (ví dụ socks5://host:port), được xác nhận trực tiếp từ mã nguồn proxy_helper.validate_proxy_string() của SeleniumBase 4.51.10.
Chế độ UC chấp nhận cùng một tham số proxy= như một phiên tiêu chuẩn, nhưng SeleniumBase không cung cấp một bộ lập lịch xoay vòng theo yêu cầu tích hợp sẵn — việc thay đổi IP giữa các yêu cầu phải đến từ cổng gateway proxy hoặc từ việc khởi động lại driver với một giá trị mới.
Một thay đổi 137 trong nội bộ tiện ích mở rộng của Chrome đã tạm thời làm hỏng tiện ích mở rộng xác thực proxy của SeleniumBase. Các bản phát hành hiện tại bao gồm bản sửa lỗi; trên các bản dựng Chrome mới hơn mà vẫn xuất hiện popup đăng nhập, việc chuyển sang Chế độ CDP trước khi điều hướng là giải pháp đã được ghi chép.
Trải nghiem Nstproxy - Bat dau dung thu mien phi ngay
Cổng residential gateway của Nstproxy kết nối vào bất kỳ ba điểm tích hợp nào với một chuỗi (username:password@gw-us.nstproxy.com:24125), bỏ qua lớp proxy ẩn danh cục bộ mà các cài đặt Selenium, Puppeteer và Playwright thường cần cho các proxy được xác thực.
Giới thiệu: Hỗ trợ Proxy của SeleniumBase Thực Sự Bao Gồm Gì
SeleniumBase là một framework tự động hóa và kiểm thử trình duyệt Python được xây dựng dựa trên Selenium WebDriver và pytest, và nó thêm một lớp proxy vượt ra ngoài những gì Selenium thô sơ cung cấp ngay từ đầu. Khi tùy chọn Chrome --proxy-server của Selenium thuần không thể mang theo tên người dùng và mật khẩu, SeleniumBase phân tích một chuỗi username:password@host:port, xây dựng một tiện ích mở rộng trình duyệt nhỏ cho các trình duyệt Chromium, và kết nối tiện ích đó để tự động trả lời các thách thức xác thực. Framework này, được phát hành dưới dạng seleniumbase trên PyPI, hiện đang ở phiên bản 4.51.10 và được duy trì bởi Michael Mintz trên GitHub. Tài liệu proxy của framework này đề cập đến cú pháp cờ CLI được sử dụng trong toàn bộ hướng dẫn này trong tài liệu tham khảo thiết lập chi tiết của nó.
Hướng dẫn này bao gồm ba cách để cung cấp một proxy cho SeleniumBase, điều gì thực sự diễn ra bên trong đối với các proxy xác thực, vị trí của SOCKS5 và Chế độ UC, giới hạn trung thực ở đâu (xử lý thông tin đăng nhập Firefox, sự thiếu hụt lịch trình xoay vòng, sự thoái lui của phiên bản Chrome thực sự), và cách chỉ định thiết lập vào residential gateway của Nstproxy.
Cài đặt SeleniumBase và Xác nhận Cài đặt
Cài đặt SeleniumBase sẽ kéo theo Selenium, pytest, và công cụ quản lý driver riêng của framework trong một bước:
seleniumbase install chromedriver tải một bản dựng chromedriver phù hợp với phiên bản Chrome hiện có trên máy, điều này giúp việc thử nghiệm proxy sau này có thể đoán trước được — một cặp driver/trình duyệt không khớp sẽ tạo ra lỗi kết nối riêng mà không liên quan đến cấu hình proxy và dễ bị chẩn đoán sai là vấn đề proxy. Xác nhận cài đặt với:
SeleniumBase trả lời điều này trong một câu: truyền proxy dưới dạng chuỗi, và định dạng giống nhau dù nó đến từ dòng lệnh hay từ Python. Cờ CLI chấp nhận như một tham số pytest:
API Python phản ánh cùng một giá trị như một tham số từ khóa trên cả Driver() và trình quản lý ngữ cảnh SB() — được xác nhận bằng cách kiểm tra cả hai chữ ký trực tiếp trong gói đã cài đặt:
from seleniumbase import Driver
import inspect
print(inspect.signature(Driver).parameters["proxy"].default)# None
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.get("https://example.com")driver.quit()
Proxy không xác thực bỏ hoàn toàn phần USERNAME:PASSWORD@; hàm validate_proxy_string() của SeleniumBase coi ip_address:port hoặc server:port như nhau và hợp lệ.
Triển Khai Cơ Bản: Một Proxy Được Xác Thực Từ Đầu Đến Cuối
Việc truyền proxy="user:pass@host:port" vào Driver() được xử lý bởi một cơ chế cụ thể trong Chrome và Edge: hàm create_proxy_ext() của SeleniumBase viết một tiện ích mở rộng Manifest V3 với lệnh gọi chrome.proxy.settings.set() và một listener chrome.webRequest.onAuthRequired trả lại thông tin xác thực đã lưu mỗi khi proxy đưa ra thách thức 407. Để xác minh điều này là có thật và không chỉ là hành vi được tài liệu hóa, hướng dẫn này đã chạy nó trên một proxy được xác thực cục bộ (mitmproxy, được cấu hình với tên người dùng và mật khẩu thử nghiệm) và ghi lại lưu lượng:
from seleniumbase import Driver
driver = Driver( browser="chrome", headless=True, proxy="testuser:testpass123@127.0.0.1:8899",)driver.get("http://internal-test-host:9000/")print(driver.page_source[:80])driver.quit()
Nhật ký của proxy cho thấy chính xác chuỗi mà nguồn của SeleniumBase ngụ ý: yêu cầu đầu tiên của trình duyệt đến mà không có tiêu đề xác thực và nhận được phản hồi 407 Proxy Authentication Required, sau đó callback onAuthRequired của tiện ích mở rộng được kích hoạt, và yêu cầu tương tự đã được thử lại với các thông tin xác thực đã lưu và trả về 200 OK với nội dung trang mong đợi — không có popup, không có thử lại thủ công và không có thư viện bổ sung. Bắt tay đó, không chỉ sự hiện diện của tham số proxy, là ý nghĩa của "hỗ trợ proxy xác thực" trong SeleniumBase.
Xem Qua Nhanh
Nếu các phiên chạy SeleniumBase của bạn liên tục gặp popup xác thực proxy hoặc bị chặn giữa phiên, cổng kết nối dân cư của Nstproxy cung cấp cho bạn một chuỗi `username:password@host:port` đã được xác thực ổn định với kiểm soát phiên tích hợp sẵn, vì vậy tham số `proxy=` như trên vẫn hoạt động.
Xác nhận proxy đang hoạt động có nghĩa là kiểm tra địa chỉ IP mà trang web mục tiêu thấy, không chỉ kiểm tra rằng driver.get() trả về một trang:
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.get("https://api.ipify.org")print("Địa chỉ IP thoát:", driver.get_text("body"))driver.quit()
Nếu địa chỉ IP được in ra khớp với địa chỉ của proxy chứ không phải địa chỉ IP thực của máy, proxy đang ở trong đường dẫn yêu cầu. Một sự không khớp ở đây thường có nghĩa là giá trị proxy bị sai cấu trúc (một tiền tố http:// lạc lõng đứng trước một chuỗi SOCKS đã có tiền tố là nguyên nhân phổ biến) hơn là một lỗi xác thực, vì lỗi xác thực trong Chrome thường hiển thị dưới dạng một tab trống hoặc một điều hướng bị hủy thay vì một IP sai.
Chọn Nhà Cung Cấp Proxy Cho Tự Động Hóa Trình Duyệt
Một chuỗi proxy chỉ đáng tin cậy như các địa chỉ IP phía sau nó, và tự động hóa trình duyệt khó hơn trên một hồ bơi proxy hơn so với các yêu cầu HTTP đơn giản: một quy trình SeleniumBase nhiều trang cần cùng một địa chỉ IP thoát để duy trì qua nhiều điều hướng, và một hồ bơi các địa chỉ IP trung tâm dữ liệu bị đánh dấu hoặc sử dụng quá nhiều xuất hiện như các lần đăng nhập thất bại và tường CAPTCHA thay vì lỗi sạch. Nstproxy là một nhà cung cấp cơ sở hạ tầng proxy mà các kênh dân cư của nó được xây dựng xung quanh yêu cầu độ bền đó, được bán dưới dạng lưu lượng truy cập trả theo mức sử dụng hoặc dưới dạng gói hàng tháng, và chúng phù hợp với các nhóm thực hiện tự động hóa thu thập thông tin, giám sát giá cả hoặc quản lý tài khoản thông qua các công cụ như SeleniumBase thay vì qua các khách hàng HTTP thô. Cổng kết nối có cùng hình dạng username:password@host:port được sử dụng xuyên suốt hướng dẫn này, vì vậy việc chuyển một bộ thử nghiệm từ proxy tạm thời sang proxy sản xuất là một thay đổi một dòng.
Bảo đảm phiên hoặc luân phiên theo yêu cầu — Residential Prime Proxies hỗ trợ cả phiên cố định (cùng một địa chỉ IP thoát cho bất kỳ lúc nào một quy trình đăng nhập hoặc thu thập thông tin nhiều trang cần) và luân phiên theo yêu cầu, phù hợp với cách tham số proxy= của SeleniumBase coi một phiên như một điểm cuối cố định trong suốt thời gian hoạt động của driver.
HTTP(S) và SOCKS5 trên cùng một cổng — cả hai giao thức đều trực tiếp khớp với các giá trị sơ đồ mà validate_proxy_string() của SeleniumBase đã chấp nhận (http, https, socks4, socks5, socks5h), vì vậy việc kiểm tra cả hai giao thức là một thay đổi một dòng, không phải một tích hợp khác.
195 vị trí theo dõi với mục tiêu quốc gia, thành phố và ASN — hữu ích khi một bộ SeleniumBase cần kiểm tra cách một trang web hiển thị hoặc kiểm soát nội dung cho một khu vực cụ thể.
Residential Prime Proxies liệt kê tỷ lệ thành công 99,98% trên hơn 110 triệu địa chỉ IP residential tại 1,60 đô la/GB cho gói 50GB, và Residential Lite Proxies liệt kê tỷ lệ thành công 99,5%; cả hai con số này đều đến từ các trang giá của Nstproxy và nên được kiểm tra lại ở đó trước khi dựa vào quyết định mua hàng, vì các nhà cung cấp proxy thường xuyên cập nhật kích thước pool và giá cả.
Cổng kết nối tự nó là một máy chủ và cổng duy nhất được chia sẻ giữa các giao thức, được tài liệu hóa trong hướng dẫn tích hợp của Nstproxy:
Các ví dụ tích hợp riêng của Nstproxy cho Selenium gốc, Puppeteer và Playwright điều hướng cổng này qua thư viện proxy-chain để làm việc xung quanh thiếu tính năng thông tin xác thực proxy inline của những công cụ đó — một bước mà quản lý mở rộng tích hợp sẵn của SeleniumBase làm không cần thiết.
Mô Hình Nâng Cao: SOCKS5, Chế Độ UC và Xoay Vòng
SOCKS5 hoạt động thông qua tham số proxy= giống hệt, chỉ cần viết rõ phương thức:
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="socks5://USERNAME:PASSWORD@SERVER:PORT")driver.get("https://api.ipify.org")driver.quit()
Bộ phân tích phương thức của SeleniumBase cũng chấp nhận socks4:// và socks5h:// (cái sau phân giải DNS qua proxy thay vì cục bộ), và truyền bất kỳ phương thức nào được phát hiện vào cùng một tiện ích mở rộng Chrome xử lý xác thực HTTP, vì vậy một proxy SOCKS5 đã xác thực đi qua cùng một luồng onAuthRequired đã được xác minh ở trên thay vì một phần mã riêng biệt.
Chế Độ UC — tích hợp undetected-chromedriver của SeleniumBase cho các trang có phát hiện bot nghiêm ngặt hơn — nhận tham số giống nhau:
from seleniumbase import Driver
driver = Driver(uc=True, headless=False, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.uc_open_with_reconnect("https://example.com", reconnect_time=4)driver.quit()
Điều mà Chế Độ UC không bổ sung là một trình lập lịch xoay vòng. SeleniumBase cung cấp một PROXY_LIST tĩnh "sổ điện thoại" trong seleniumbase/config/proxy_list.py để một khóa tên có thể thay thế cho một chuỗi proxy đầy đủ trên CLI, và một cờ --multi-proxy tồn tại đặc biệt để cho phép các tác nhân pytest song song (pytest -n) mỗi người xây dựng tiện ích mở rộng proxy của riêng họ mà không có sự cạnh tranh khóa tệp — cả hai không xoay vòng IP ra giữa các yêu cầu trong một lần chạy duy nhất. Xoay vòng giữa các yêu cầu phải đến từ việc khởi động lại driver với một giá trị proxy khác hoặc từ việc cổng tự xoay vòng các địa chỉ IP ở phía máy chủ, điều này là mục đích của một kế hoạch proxy phiên xoay vòng.
Giới Hạn Trung Thực
Ba giới hạn nên được lên kế hoạch xung quanh hơn là khám phá giữa dự án. Thứ nhất, Firefox không phải là một sự thay thế trực tiếp cho Chrome ở đây: SeleniumBase thiết lập proxy của Firefox thông qua các tùy chọn network.proxy.type, network.proxy.http, và network.proxy.socks*, bao gồm hỗ trợ đầy đủ SOCKS4/5/5h, nhưng không có tương đương với tính năng tự động điền thông tin xác thực của tiện ích mở rộng Chrome, vì vậy một proxy đã xác thực trên Firefox vẫn tạo ra một lời nhắc đăng nhập trình duyệt gốc mà một lần chạy không có giao diện không thể bỏ qua. Thứ hai, cơ chế dựa trên tiện ích mở rộng gắn bó với nền tảng tiện ích mở rộng của Chrome, có nghĩa là nó có thể bị hỏng khi Chrome thay đổi nền tảng đó: một bản cập nhật Chrome 137 đã thay đổi cấu trúc tiện ích mở rộng theo cách làm hỏng tiện ích mở rộng xác thực proxy trên đường đi của SeleniumBase trong một khoảng thời gian vào năm 2025, được tài liệu hóa trong một luồng thảo luận của người bảo trì, và bản sửa lỗi đã được đưa vào một bản phát hành của SeleniumBase thay vì là thứ mà người dùng có thể làm cách nào đó trong mã kiểm tra của riêng họ. Thứ ba, không có trình lập lịch xoay vòng tích hợp sẵn, như đã đề cập ở trên — SeleniumBase cung cấp cho bạn một nguyên thủy một proxy cho mỗi phiên sạch sẽ, và việc xây dựng một chiến lược xoay vòng lên trên đó (hoặc mua một cái từ nhà cung cấp proxy) là trách nhiệm của người gọi.
Khắc Phục Các Lỗi Proxy Thường Gặp
Một cửa sổ bật lên xác thực proxy xuất hiện mặc dù có chuỗi proxy="user:pass@host:port" được định dạng đúng hầu như luôn là một vấn đề về phiên bản Chrome hơn là vấn đề về thông tin đăng nhập: hãy xác nhận rằng SeleniumBase đang ở phiên bản hiện tại (pip install -U seleniumbase), và trên những bản dựng Chrome rất gần đây mà cửa sổ bật lên vẫn xuất hiện, hướng dẫn từ nhà bảo trì của SeleniumBase là bạn cần kích hoạt Chế độ CDP trước lần điều hướng đầu tiên, điều này sẽ giúp tránh các API mở rộng bị ảnh hưởng.
Một 407 Proxy Authentication Required xuất hiện dưới dạng một trang trống thay vì một cửa sổ bật lên thường có nghĩa là thông tin đăng nhập là sai hoặc danh sách cho phép IP của tài khoản không bao gồm IP hiện tại của máy, cả hai điều này đều đáng được kiểm tra trực tiếp trong bảng điều khiển của nhà cung cấp proxy trước khi can thiệp vào mã kiểm tra.
Một proxy kết nối nhưng trả về IP thoát sai (được kiểm tra như ở phần xác minh phía trên) thường do chuỗi proxy bị định dạng sai — một http:// thừa ở phía trước một giá trị có tiền tố socks5://, hoặc một cổng bị thiếu — hơn là một proxy bị hỏng.
Những phản hồi chậm hoặc không liên tục thông qua một proxy hoạt động, được xác thực đúng sẽ chỉ ra đến chính hồ bơi proxy: các nút thoát dân cư bị giới hạn băng thông hoặc quá tải cư xử chính xác như một mạng chậm thay vì như một lỗi cấu hình.
Các nhóm chạy các kiểm tra tương tự đối với Playwright thay vì SeleniumBase sẽ đối mặt với một danh sách nguyên nhân tương tự — các giá trị proxy bị định dạng sai, phạm vi sai, và xác thực bị từ chối — vì các chế độ thất bại đến từ lớp proxy, không phải từ khung tự động hóa cụ thể nằm trên nó. Đối với các nhóm xây dựng proxy forward của riêng mình thay vì mua quyền truy cập vào cổng, các sự đánh đổi xung quanh việc xử lý cả lưu lượng HTTP và HTTPS cũng như thực thi xác thực được đề cập trong một hướng dẫn riêng biệt về việc xây dựng máy chủ proxy Python.
Kết luận
Hỗ trợ proxy của SeleniumBase tóm lại là một định dạng chuỗi được xử lý nhất quán qua cờ CLI, Driver(), và SB(), với sự phức tạp thực sự ẩn giấu trong những gì xảy ra đối với các proxy đã xác thực trên Chrome so với Firefox và trong sự vắng mặt của bất kỳ việc tự động luân phiên nào giữa các yêu cầu. Xác minh IP thoát sau mỗi lần thay đổi proxy, giữ cho SeleniumBase luôn cập nhật để tránh các sự suy thoái mở rộng của Chrome thỉnh thoảng xảy ra, và chọn một cổng proxy mà xử lý sự tồn tại phiên và luân phiên của nó mà không cần mong đợi mã kiểm tra làm điều đó sẽ bao phủ hầu hết những gì sai sót trong thực tiễn.
Q: SeleniumBase có hỗ trợ các proxy đã xác thực mà không cần thư viện bên thứ ba không?
Có — việc truyền proxy="username:password@host:port" cho Driver(), SB(), hoặc cờ CLI --proxy là đủ trên Chrome và Edge, vì SeleniumBase tự tạo mở rộng Manifest V3 của riêng mình để trả lời thách thức xác thực của proxy; không cần lớp ẩn danh kiểu proxy-chain như với một số thiết lập Selenium thô.
Q: Hỗ trợ proxy đã xác thực của SeleniumBase có hoạt động trên Firefox không?
Không, không phải phần tự động — cài đặt proxy của Firefox đi qua các tùy chọn network.proxy.* gốc, bao gồm SOCKS4/5/5h, nhưng SeleniumBase không chèn thông tin đăng nhập đã lưu cho Firefox, vì vậy một proxy đã xác thực vẫn kích hoạt hộp thoại đăng nhập riêng của Firefox.
Q: Có phải SeleniumBase có thể tự động thay đổi proxy trong suốt quá trình chạy thử nghiệm không?
Không — SeleniumBase cung cấp một nguyên lý một proxy cho mỗi phiên và một bảng tra cứu tĩnh có tên là PROXY_LIST, nhưng không có trình lập lịch luân phiên theo yêu cầu tích hợp sẵn; việc thay đổi IP giữa các yêu cầu cần phải khởi động lại driver với giá trị proxy mới hoặc sử dụng một cổng proxy thay đổi IP tự động.
Q: Tại sao một cửa sổ bật lên xác thực proxy xuất hiện ngay cả khi có chuỗi proxy= đúng?
Điều này thường là một vấn đề về phiên bản Chrome: một thay đổi trong Chrome 137 đã tạm thời làm hỏng cơ chế mở rộng mà SeleniumBase sử dụng cho xác thực proxy, và các phiên bản SeleniumBase hiện tại đã bao gồm bản sửa lỗi, với Chế độ CDP như là giải pháp thay thế đã được tài liệu hóa trên các bản dựng Chrome mới hơn mà cửa sổ bật lên vẫn xuất hiện.
Q: SeleniumBase có hỗ trợ proxy SOCKS5 không?
Có — socks4://, socks5://, và socks5h:// đều là các tiền tố định dạng hợp lệ trong cùng một chuỗi proxy được sử dụng cho các proxy HTTP, và các proxy SOCKS5 đã xác thực sẽ đi qua cùng một quy trình xác thực mở rộng trên Chrome như các proxy HTTP đã xác thực.
Q: Chạy SeleniumBase với một proxy đối với một trang web mà tôi không sở hữu có an toàn không?
Chỉ khi tự động hóa tuân thủ điều khoản dịch vụ của trang web đó và luật pháp áp dụng — một proxy thay đổi địa chỉ IP ra mà yêu cầu được nhìn thấy từ đó, nhưng nó không thay đổi liệu việc thu thập dữ liệu, tự động hóa tài khoản, hay tải đối với một mục tiêu cụ thể có được phép hay không, vì vậy việc kiểm tra đó thuộc về trước khi cấu hình proxy, chứ không phải sau nó.
Hướng dẫn từng bước năm 2026 để trích xuất dữ liệu sản phẩm từ Amazon -- giá cả, đánh giá, ASIN và kết quả tìm kiếm -- với mã code thực tế, cái nhìn tổng quan về việc sử dụng hợp pháp/đúng đắn liên quan đến API Quảng cáo Sản phẩm đã bị ngừng hoạt động của Amazon, và một Mẹo Thêm để biến một lần trích xuất thành một công cụ theo dõi giá liên tục với Nstproxy Crawl và Proxy Manager.
Lena Zhou
Aug. 17th 2026
110M+ IP that voi ti le truy cap thanh cong 99.9%
Phan hoi trung binh ~0.5s cho tac vu dong thoi cao
Chi tu $0.1/GB
Truy cap ngay cac pool proxy residential, datacenter, IPv6 va ISP cao cap.