Playwright là một trong những framework tự động hóa trình duyệt được sử dụng rộng rãi nhất. Nó xử lý các trang được render bằng JavaScript, hỗ trợ Chromium, Firefox và WebKit, và chạy ổn định ở chế độ không giao diện trên các môi trường CI. Nhưng ở quy mô lớn - hoặc khi nhắm mục tiêu vào các trang web có bảo vệ chống bot - một phiên Playwright đơn giản sẽ bị chặn nhanh chóng.
Giải pháp rất đơn giản: định tuyến lưu lượng qua proxy. Hướng dẫn này đề cập đến mọi mẫu cấu hình thực tiễn cho proxy Playwright, từ thiết lập IP đơn giản nhất đến xoay vòng ở cấp ngữ cảnh. Các ví dụ mã được cung cấp bằng cả Python và Node.js.
Cách cấu hình Proxy Playwright hoạt động
Playwright hỗ trợ các thiết lập proxy ở hai cấp độ:
1. Cấp trình duyệt: Được thiết lập một lần tại launch(). Mỗi trang và ngữ cảnh trong phiên trình duyệt đó sử dụng cùng một IP proxy. Đây là lựa chọn đúng khi bạn muốn một IP cho toàn bộ phiên.
2. Cấp ngữ cảnh: Được thiết lập trong newContext(). Các ngữ cảnh khác nhau có thể sử dụng các proxy khác nhau trong khi chia sẻ cùng một tiến trình trình duyệt. Đây là mẫu cho việc chạy các tác vụ quét song song với cách ly IP.
Trải nghiem Nstproxy - Bat dau dung thu mien phi ngay
Tài liệu chính thức của Playwright xác nhận rằng cả proxy HTTP(S) và SOCKSv5 đều được hỗ trợ, với các trường username và password tùy chọn cho kết nối xác thực, và một trường bypass để loại trừ các máy chủ cụ thể.
Đối tượng cấu hình proxy trông như thế này trên tất cả các ngôn ngữ:
Phương pháp 3: Proxy Cấp Ngữ Cảnh Cho Tách IP Song Song
Đây là mẫu để sử dụng khi chạy nhiều tác vụ đồng thời mà mỗi tác vụ cần một IP riêng. Một tiến trình trình duyệt đơn lẻ lưu trữ nhiều ngữ cảnh, mỗi ngữ cảnh được cấu hình với một proxy khác nhau. Điều này tránh được chi phí hiệu suất nặng nề của việc khởi động nhiều phiên trình duyệt riêng biệt.
import asyncio
from playwright.async_api import async_playwright
PROXIES =[{"server":"http://gate.nstproxy.io:24125","username":"user1","password":"pass1"},{"server":"http://gate.nstproxy.io:24126","username":"user2","password":"pass2"},{"server":"http://gate.nstproxy.io:24127","username":"user3","password":"pass3"},]asyncdefscrape(browser, proxy, url):# Khởi động một ngữ cảnh cách ly với các thiết lập proxy riêng context =await browser.new_context(proxy=proxy)try: page =await context.new_page()await page.goto(url)returnawait page.content()finally:await context.close()asyncdefmain():asyncwith async_playwright()as p: browser =await p.chromium.launch()try: tasks =[ scrape(browser, proxy,"https://httpbin.org/ip")for proxy in PROXIES
]
results =await asyncio.gather(*tasks)for r in results:print(r)finally:await browser.close()asyncio.run(main())
Mỗi ngữ cảnh hoàn toàn tách biệt — cookie, lưu trữ và địa chỉ IP riêng biệt. Đây là phương pháp tiêu chuẩn cho việc thu thập dữ liệu quy mô đại lý khi bạn cần các phiên đồng thời mà không có sự ô nhiễm chéo.
Phương pháp 4: Đổi Địa chỉ Proxy Qua Các Yêu Cầu (Đổi theo Phiên hoặc TTL=0)
Playwright không tự động đổi IP. Để đổi IP, bạn tạo một ngữ cảnh mới (thiết lập một kết nối mới) cho mỗi tác vụ. Với Nstproxy, bạn có thể đạt được việc đổi tự động theo mỗi ngữ cảnh bằng cách tạo một ID session duy nhất hoặc thiết lập ttl=0 (sử dụng tham số r_0m) trong tên người dùng.
Dưới đây là cách thực hiện việc đổi địa chỉ sử dụng ID phiên động trong Python:
import uuid
from playwright.sync_api import sync_playwright
urls =["https://example.com/page/1","https://example.com/page/2","https://example.com/page/3",]with sync_playwright()as p: browser = p.chromium.launch()try:for url in urls:# Tạo một ID phiên ngẫu nhiên để buộc Nstproxy đổi IP cho ngữ cảnh này session_id = uuid.uuid4().hex[:8] proxy ={"server":"http://gate.nstproxy.io:24125",# Thêm ID phiên duy nhất (-s_...) vào tên người dùng"username":f"6EEA899B5A77B936-residential-country_ANY-r_10m-s_{session_id}","password":"YOUR_NSTPROXY_PASSWORD"} context = browser.new_context(proxy=proxy)try: page = context.new_page() page.goto(url)print(f"URL: {url} | Title: {page.title()}")finally: context.close()finally: browser.close()
Đổi với TTL = 0 (Không Quản Lý Phiên)
Nếu bạn không muốn quản lý ID phiên trong mã của mình, bạn có thể thiết lập tham số TTL thành r_0m (đại diện cho ttl=0). Điều này báo cho Nstproxy tự động gán một IP dân cư mới cho mỗi kết nối/ngữ cảnh mới được thiết lập bởi Playwright.
# Cấu hình proxy với TTL=0 (r_0m) cho việc đổi tự động mỗi ngữ cảnh mớiproxy ={"server":"http://gate.nstproxy.io:24125","username":"6EEA899B5A77B936-residential-country_ANY-r_0m","password":"YOUR_NSTPROXY_PASSWORD"}
Proxy Nào Để Sử Dụng Cho Mỗi Tác Vụ Playwright
Tác vụ
Proxy Đề Xuất
Đổi
Ghi chú
Thu thập dữ liệu web chung
Residential
Theo ngữ cảnh
Tỷ lệ thành công tốt nhất trên các trang chống bot
Kiểm tra SERP địa phương
Residential (nhắm đến thành phố)
Theo yêu cầu
Cần định vị geo ở cấp thành phố
Tự động hóa dựa trên tài khoản
ISP tĩnh
Phiên dính
IP nhất quán cho mỗi tài khoản
Thu thập từ khóa quy mô lớn
Datacenter
Theo yêu cầu
Nhanh hơn, chi phí thấp hơn cho các mục tiêu rủi ro thấp
Nội dung dành riêng cho di động
Mobile proxy
Theo yêu cầu
IP nhà mạng cho các lộ trình hiển thị di động
Môi trường CI/kiểm tra
Datacenter
Tĩnh
Tốc độ và tính ổn định quan trọng hơn
Một số báo cáo cho biết rằng các proxy miễn phí có tỷ lệ thất bại 70–90% và chỉ phù hợp cho việc thử nghiệm cục bộ, không bao giờ cho việc thu thập dữ liệu sản xuất. Sự phân biệt giữa cấu hình cấp trình duyệt và cấp ngữ cảnh cũng là điều tách biệt các thiết lập IP đơn giản với khả năng song song đa IP quy mô sản xuất.
Kết Nối Proxy Dân Cư Nstproxy Với Playwright
Nstproxy hỗ trợ HTTP(S) và giao thức SOCKS5 trực tiếp, và điểm cuối proxy dân cư của họ gán một IP mới cho mỗi phiên mới theo mặc định — điều này phù hợp với mô hình quay vòng ngữ cảnh cho mỗi yêu cầu của Playwright.
Sự tích hợp sử dụng điểm cuối cổng tiêu chuẩn của Nstproxy với thông tin tài khoản của bạn:
Đối với việc nhắm mục tiêu cấp thành phố, thêm các tham số địa điểm vào tên người dùng theo định dạng của Nstproxy (ví dụ: username-country-US-city-NewYork). Điều này giúp Playwright có các IP nhắm mục tiêu geo mà không cần hạ tầng bổ sung.
Mạng lưới dân cư của Nstproxy bao phủ 195+ quốc gia với nhắm mục tiêu cấp thành phố và ASN, điều này rất quan trọng cho các tác vụ như kiểm tra SERP địa phương và truy cập nội dung bị hạn chế địa lý trực tiếp trong Playwright.
Đối với các nhóm đang vận hành proxy quay vòng quy mô lớn, cùng một điểm cuối hoạt động mà không cần danh sách IP tĩnh — việc quay vòng diễn ra phía máy chủ cho mỗi ngữ cảnh mới.
Kết nối Nstproxy với Playwright →
Những Lỗi Thường Gặp và Cách Khắc Phục Chúng
ERR_PROXY_CONNECTION_FAILED
Máy chủ proxy không thể truy cập được. Kiểm tra máy chủ, cổng và xem mạng/firewall của bạn có chặn cổng đó không. Thử với curl -x http://proxy:port https://httpbin.org/ip trước khi chạy Playwright.
407 Proxy Authentication Required
Thông tin xác thực không được truyền hoặc bị lỗi định dạng. Xác nhận rằng username và password đều được thiết lập trong đối tượng cấu hình proxy. Không nhúng thông tin xác thực vào chuỗi URL máy chủ — hãy truyền chúng dưới dạng các trường riêng biệt.
Thời gian chờ trang mà không có lỗi rõ ràng
Proxy đã kết nối nhưng trang web mục tiêu không phản hồi kịp thời. Tăng thời gian chờ điều hướng:
page.goto("https://example.com", timeout=60000)
Cũng kiểm tra xem vị trí địa lý của proxy có bị chặn bởi mục tiêu không — một số trang web chặn lưu lượng truy cập từ các quốc gia cụ thể ở cấp CDN.
Proxy hoạt động trong chế độ headless:false nhưng thất bại trong chế độ headless
Một số hệ thống chống bot phát hiện Chromium headless độc lập với proxy. Thêm các tham số khởi động trình duyệt tiêu chuẩn (--no-sandbox, --disable-blink-features=AutomationControlled) và xác minh chuỗi user-agent của bạn không phải là chuỗi headless mặc định. Chạy headless: false tạm thời giúp xác nhận xem proxy có phải là điểm thất bại hay không.
Kết quả không đồng nhất giữa các ngữ cảnh
Nếu bạn đang sử dụng lại cùng một proxy giữa các ngữ cảnh, địa chỉ IP có thể đã được chia sẻ và bị đánh dấu. Sử dụng cấp ngữ cảnh để phân bổ proxy với các thông tin xác thực khác nhau hoặc một điểm cuối luân phiên.
3 Trường Hợp Sử Dụng Thực Tế Kết Hợp Playwright + Proxy
1. Giám sát Giá E-commerce
Một nhóm phân tích bán lẻ thu thập dữ liệu giá từ 15 trang web đối thủ hàng ngày. Mỗi trang web sử dụng một nhà cung cấp chống bot khác nhau. Chạy tất cả các yêu cầu từ một khối địa chỉ IP trung tâm dữ liệu sẽ bị phát hiện trong chu kỳ thu thập đầu tiên.
Với các proxy dân cư Nstproxy và luân chuyển theo cấp ngữ cảnh trong Playwright, mỗi lần tải trang xuất hiện như một người dùng tự nhiên khác nhau. Nhóm thực hiện 500 ngữ cảnh đồng thời qua asyncio, thu thập 50,000 trang mỗi giờ với tỷ lệ bị chặn dưới 1%.
2. Xác minh SERP SEO Địa Phương
Một đại lý SEO kiểm tra thứ hạng Google cho 300 từ khóa của khách hàng qua 20 thành phố của Mỹ. Mỗi lần kiểm tra cần xuất hiện như xuất phát từ thành phố mục tiêu, nếu không, kết quả sẽ không có giá trị về mặt địa lý.
Sử dụng Playwright với các IP dân cư Nstproxy nhắm đến thành phố, mỗi ngữ cảnh được chỉ định một IP địa phương phù hợp với thị trường của khách hàng. Cùng một mã chạy cho tất cả 20 thành phố bằng cách thay đổi tham số vị trí tên người dùng — không cần hạ tầng riêng cho từng thành phố.
3. Xác minh Quảng Cáo Qua Các Thị Trường
Một nhóm tiếp thị xác minh rằng các chiến dịch quảng cáo hiển thị đúng cách ở Đức, Nhật Bản và Brazil. Nếu không có các proxy nhắm mục tiêu địa lý, mọi kiểm tra sẽ trả về cùng một nội dung quảng cáo phục vụ địa phương từ IP văn phòng của họ.
Các ngữ cảnh Playwright với các proxy dân cư nhắm đến quốc gia trả về nội dung quảng cáo thực tế mà mỗi thị trường thấy, phát hiện lỗi định vị trước khi các chiến dịch được phát động.
So Sánh: Các Phương Pháp Proxy trong Playwright
Phương Pháp
Trường Hợp Sử Dụng
Kiểm Soát Luân Chuyển
Độ Phức Tạp
Proxy tĩnh cấp trình duyệt
Thu thập trong một phiên, kiểm tra
Không có — một IP cho mỗi lần chạy
Thấp
Proxy tĩnh cấp ngữ cảnh
Các phiên cô lập song song
Thủ công — một IP cho mỗi ngữ cảnh
Trung bình
Proxy cấp ngữ cảnh với bể proxy
Logic luân chuyển tùy chỉnh
Hoàn toàn — chọn bất kỳ IP nào cho mỗi nhiệm vụ
Trung bình
Điểm cuối dân cư luân chuyển
Thu thập quy mô lớn
Tự động phía máy chủ
Thấp (đơn giản nhất ở quy mô)
Đối với hầu hết các trường hợp sử dụng trong sản xuất, điểm cuối dân cư luân chuyển là dễ duy trì nhất: một điểm cuối, thông tin xác thực bao gồm nhắm mục tiêu địa lý tùy chọn, và phân bổ IP tự động cho mỗi ngữ cảnh.
Kết Luận
Cấu hình proxy trong Playwright không phức tạp — API rõ ràng và cả mẫu cấp trình duyệt và cấp ngữ cảnh đều được tài liệu hóa tốt. Phần khó hơn là chọn loại proxy phù hợp, quản lý luân chuyển đúng cách và gỡ lỗi các lỗi phát sinh từ các hệ thống chống bot thay vì từ chính cấu hình proxy.
Đối với việc thu thập hoặc tự động hóa nghiêm túc ở quy mô lớn, các proxy dân cư với luân chuyển tự động và nhắm mục tiêu theo cấp thành phố bao phủ hầu hết các kịch bản trong sản xuất. Nstproxy tích hợp trực tiếp với cấu hình proxy của Playwright chỉ trong vài dòng, hỗ trợ cả HTTP(S) và SOCKS5, và xử lý nhắm mục tiêu địa lý thông qua các tham số thông tin xác thực mà không cần hạ tầng bổ sung.
Q: Tôi có thể thiết lập proxy khác nhau cho mỗi trang trong Playwright không?
Nhà viết kịch đặt proxy ở mức trình duyệt hoặc mức ngữ cảnh — không ở mức trang riêng lẻ. Để sử dụng một proxy khác cho mỗi trang, hãy tạo một ngữ cảnh mới cho mỗi trang.
Q: Playwright có hỗ trợ proxy SOCKS5 không?
Có. Sử dụng socks5:// làm tiền tố giao thức trong trường server: "server": "socks5://gate.nstproxy.io:24125". Hành vi SOCKS5 có thể khác nhau tùy theo engine trình duyệt, vì vậy hãy kiểm tra với một script tối thiểu trước khi mở rộng.
Q: Tôi có thể cấu hình nhiều proxy trong một ngữ cảnh Playwright không?
Không. Một ngữ cảnh trình duyệt đơn lẻ sử dụng một cấu hình proxy. Nếu bạn cần nhiều proxy cùng một lúc, hãy sử dụng nhiều ngữ cảnh hoặc nhiều quy trình trình duyệt.
Q: Làm thế nào tôi có thể xác minh proxy của mình hoạt động trong Playwright?
Đi tới https://httpbin.org/ip hoặc https://api.ipify.org?format=json và đọc phản hồi. Địa chỉ IP trả về nên khớp với vị trí của proxy, chứ không phải địa chỉ IP thực của bạn.
Q: Các proxy Playwright có hoạt động trong chế độ không đầu (headless) không?
Có, hỗ trợ proxy giống nhau trong chế độ không đầu và có đầu. Nếu bạn chỉ gặp lỗi trong chế độ không đầu, vấn đề thường là phát hiện bot (không phải proxy) — hãy thử thêm --disable-blink-features=AutomationControlled vào các đối số khởi động.
Q: Tôi cần bao nhiêu proxy cho việc thu thập dữ liệu quy mô lớn?
Một mức cơ bản chung là một địa chỉ IP luân phiên cho mỗi 10–20 yêu cầu đồng thời. Đối với 500 ngữ cảnh Playwright đồng thời, một nhóm từ 50–100 địa chỉ IP dân cư với việc luân phiên tự động giữ cho bất kỳ địa chỉ IP đơn lẻ nào dưới ngưỡng phát hiện. Với một điểm cuối luân phiên (luân phiên phía máy chủ), điều này được xử lý tự động.
Các trình phân tích PDF tốt nhất cho quy trình làm việc AI và RAG vào năm 2026
Một so sánh đã được nghiên cứu và kiểm tra bằng chứng về các trình phân tích PDF tốt nhất cho các pipeline AI và RAG vào năm 2026 — LlamaParse, Docling, Marker, Unstructured, Reducto, Firecrawl, PyMuPDF4LLM và các API tài liệu AI lớn của các hyperscaler — được xếp hạng dựa trên OCR, trích xuất bảng và chi phí, cộng với cái nhìn trung thực về vị trí của Nstproxy Crawl (và không) trong một pipeline dữ liệu RAG.
Marcus Chen
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.