AI-đại lý, tự động truy cập vào các trang web — Claude với Playwright MCP, browser-use, Browserbase trên đám mây — gặp phải bức tường giống như một trình phân tích thông thường: vài chục yêu cầu từ một địa chỉ, và thay vì trang, một thử thách từ Cloudflare xuất hiện. Sự khác biệt là đại lý không biết tức giận và chỉ đơn giản là lặp lại, tiêu tốn token cho những nỗ lực "nhấn nút mà không có".
Cách khắc phục là sử dụng proxy. Nhưng việc kết nối proxy với đại lý lại không hề rõ ràng: một nửa hướng dẫn trên internet cung cấp cú pháp mà Chromium lặng lẽ bỏ qua. Dưới đây là các cấu hình hoạt động cho ba stack phổ biến nhất năm 2026 và phân tích những cạm bẫy mà mọi người đều vấp phải.
Ai cần điều này
Hướng dẫn cho những ai đã khởi động đại lý và gặp một trong những triệu chứng:
- đại lý thực hiện 10–20 bước, sau đó mỗi bước tiếp theo đều trả về captcha hoặc trang "Xác minh bạn là người"
- đại lý thấy nội dung không giống như bạn: giá cả, kết quả và tình trạng hàng hóa được trang web hiển thị theo IP máy chủ của bạn, không phải theo quốc gia cần thiết
- đại lý được khởi động trên đám mây (VPS, GitHub Actions, container), và địa chỉ trung tâm dữ liệu của nhà cung cấp đã được đánh dấu là bot
- bạn đã cấu hình proxy với tên đăng nhập và mật khẩu, nhưng trình duyệt khởi động như thể không có proxy.
Nếu bạn vẫn đang ở giai đoạn "tại sao đại lý bị chặn" — hãy đọc phân tích về cách hệ thống chống bot phân biệt trình duyệt đại lý với con người: ở đó có tín hiệu phát hiện, còn đây là thực hành kết nối.
Cạm bẫy №1: Chromium không chấp nhận tên đăng nhập và mật khẩu trong chuỗi proxy
Lỗi phổ biến nhất, và nó khiến mọi người tốn hàng giờ để gỡ lỗi. Hình thức cổ điển của chuỗi từ nhà cung cấp — user:pass@host:port. Bạn chèn nó vào cờ khởi động trình duyệt:
--proxy-server="http://user:[email protected]:8080"
Và không có gì hoạt động. Chromium không hỗ trợ việc truyền thông tin đăng nhập trong cờ --proxy-server: lỗi không hỗ trợ proxy xuất hiện trong console, và lưu lượng truy cập đi qua mà không bị ảnh hưởng. Nếu bạn bỏ thông tin đăng nhập và chỉ để lại host:port, trình duyệt sẽ hiển thị cửa sổ hệ thống yêu cầu tên đăng nhập và mật khẩu — và mọi thứ sẽ dừng lại ở đó, vì trong chế độ headless không có cửa sổ và không ai để nhấn vào.
Từ đó, có ba con đường hoạt động, và bạn cần chọn một cách có ý thức:
- Xác thực theo IP (whitelist). Đây là lựa chọn sạch nhất cho các đại lý. Bạn thêm địa chỉ máy mà đại lý đang chạy vào danh sách trắng trong tài khoản nhà cung cấp — và sau đó kết nối mà không cần tên đăng nhập và mật khẩu, chỉ cần chuỗi đơn giản
host:port. Cờ--proxy-serverbắt đầu hoạt động như mong đợi, headless không yêu cầu gì thêm. ProxyCove hỗ trợ cả hai phương pháp — và tên đăng nhập:mật khẩu, và IP-whitelist, và cả hai có thể được sử dụng đồng thời, vì vậy bạn có thể tạo whitelist cho đại lý và để mật khẩu cho các tác vụ thủ công. - Truyền thông tin đăng nhập ở cấp API, không phải cờ. Playwright, Puppeteer và browser-use có thể nhận
usernamevàpassworddưới dạng các trường riêng biệt — đây không phải là cùng một cơ chế như cờ dòng lệnh, và nó hoạt động. Phù hợp khi bạn tự viết mã cho đại lý. - Relay cục bộ. Bạn thiết lập proxy của mình mà không có mật khẩu, chuyển tiếp các yêu cầu đến upstream với mật khẩu, và chỉ định địa chỉ cục bộ cho đại lý. Đây là lựa chọn cho các trường hợp mà danh sách trắng không khả dụng: ví dụ, IP của máy có thể thay đổi.
Playwright MCP: cấu hình thực sự hoạt động
Playwright MCP của Microsoft — hiện nay là tiêu chuẩn de facto cho các đại lý cần một trình duyệt thực sự. Proxy được chỉ định bằng các đối số của máy chủ ngay trong cấu hình của khách hàng MCP:
{"mcpServers":{"playwright":{"command":"npx","args":["@playwright/mcp@latest","--browser","chromium","--headless","--proxy-server","http://gate.example.com:8080","--proxy-bypass",".local,.internal","--isolated","--viewport-size","1920x1080"]}}}
Các điểm quan trọng ở đây:
--proxy-serverchấp nhận cả địa chỉ HTTP và SOCKS5 dưới dạngsocks5://host:port. Không có thông tin đăng nhập — xem cạm bẫy ở trên.--proxy-bypass— danh sách các miền cách nhau bằng dấu phẩy, mà không đi qua proxy. Đây không phải là tùy chọn trang trí: nếu đại lý có các dịch vụ nội bộ hoặc API cục bộ, việc chuyển chúng qua kênh cư trú là lưu lượng truy cập thừa với chi phí tính theo gigabyte.--isolatedgiữ hồ sơ trong bộ nhớ và không ghi nó lên đĩa. Hữu ích khi mỗi tác vụ cần bắt đầu từ đầu. Mặt trái là cookie không sống sót qua lần khởi động lại, và mỗi phiên cho trang web trông giống như một khách truy cập mới.--user-data-dir— ngược lại, là hồ sơ cố định. Đối với các kịch bản có xác thực, hãy sử dụng nó thay vì cách ly, và đảm bảo gắn IP (xem phần về sticky bên dưới).--storage-statecho phép bạn đưa cookie và localStorage đã lưu vào một phiên cách ly — một sự thỏa hiệp giữa hai phương pháp trước đó.--allowed-originsvà--blocked-originsgiới hạn nơi mà đại lý có thể truy cập. Tiết kiệm không được đánh giá đúng: đại lý, nếu bị cuốn vào phân tích và các miền quảng cáo, dễ dàng làm tăng gấp ba lưu lượng truy cập.--device(ví dụ,"iPhone 15") và--user-agentthay đổi cách mà đại lý xuất hiện như một trình duyệt. Đặt chúng một cách nhất quán với loại proxy: User-Agent di động trên IP trung tâm dữ liệu — đây là một mâu thuẫn mà hệ thống chống bot đọc ngay lập tức.
Riêng về --cdp-endpoint: nó kết nối MCP với trình duyệt đã được khởi động. Khi đó, proxy được cấu hình không bằng các cờ MCP, mà khi khởi động trình duyệt đó — lý do điển hình cho việc "proxy đã được cấu hình, nhưng IP vẫn cũ".
browser-use: proxy qua ProxySettings
Nếu đại lý được xây dựng trên browser-use, cấu hình sẽ đi vào đối tượng thiết lập, và ở đây bạn có thể truyền tên đăng nhập và mật khẩu — chúng đi qua API, không phải qua dòng lệnh:
from browser_use import Browser, ProxySettings
proxy = ProxySettings(server='http://gate.example.com:8080', username='user', password='pass', bypass='localhost,127.0.0.1')
browser = Browser(proxy=proxy)
Trường server là bắt buộc, các trường khác là tùy chọn. Nguyên tắc tương tự cũng áp dụng trong Playwright thuần túy: proxy được chỉ định hoặc toàn cầu khi khởi động trình duyệt, hoặc riêng biệt cho mỗi ngữ cảnh qua browser.newContext({ proxy: { server: ... } }). Cái sau là chìa khóa cho các đại lý song song: mỗi ngữ cảnh nhận địa chỉ đầu ra riêng, và mười tác vụ không chia sẻ một IP.
Trình duyệt đám mây: proxy ở cấp phiên
Tại Browserbase và các dịch vụ tương tự, trình duyệt sống trong đám mây của người khác, vì vậy các cờ khởi động không có sẵn cho bạn — proxy được chỉ định trong các tham số phiên, thường là chuỗi dạng http://đăng nhập:mật khẩu@gateway:port trong biến môi trường của máy chủ MCP. Giới hạn của Chromium ở đây không gây cản trở: nhà cung cấp đám mây tự xử lý chuỗi và cấu hình trình duyệt từ bên trong.
Điều cần lưu ý: các trình duyệt đám mây có một nhóm proxy riêng, và nó là chung cho tất cả các khách hàng. Nếu tác vụ nhạy cảm với danh tiếng của địa chỉ — đăng nhập vào tài khoản, làm việc với nền tảng mà bạn đã quen thuộc — kênh riêng sẽ đáng tin cậy hơn kênh chung.
Quay vòng hay cố định: chọn theo loại tác vụ
Lỗi của người mới — bật quay vòng cho mỗi yêu cầu và ngạc nhiên tại sao đại lý bị đăng xuất. Các kịch bản đại lý có hai chế độ, và chúng không thể thay thế cho nhau:
- Quay vòng cho mỗi yêu cầu (tại ProxyCove, đây là cổng 824) — cho việc khám phá: vượt qua hàng trăm thẻ sản phẩm, thu thập kết quả, kiểm tra giá ở các khu vực khác nhau. Mỗi yêu cầu đi từ một địa chỉ mới, rất khó để liên kết chúng với nhau.
- Phiên cố định (cổng 10000+, khoảng thời gian thay đổi từ 1 đến 120 phút) — cho mọi thứ bao gồm các bước: đăng nhập, giỏ hàng, biểu mẫu nhiều trang, cuộc hội thoại dài với giao diện. Nếu IP thay đổi giữa chuỗi, trang web tốt nhất sẽ yêu cầu xác thực lại, tệ nhất — đánh dấu phiên là nghi ngờ.
Đại lý hầu như luôn hoạt động ở chế độ thứ hai: nó theo định nghĩa thực hiện một chuỗi các bước, không phải chỉ một cú bắn. Chi tiết về việc chọn khoảng thời gian và các lỗi điển hình đã được phân tích trong hướng dẫn về khi nào cần sticky sessions và cách cấu hình chúng.
Năm cạm bẫy
- SOCKS5 với xác thực trong Chromium. Cú pháp
socks5://trong Playwright có, nhưng sự kết hợp "SOCKS5 cộng với tên đăng nhập và mật khẩu" trong các trình duyệt trên Chromium từ lâu đã gặp vấn đề — yêu cầu tương ứng trong trình theo dõi Playwright đã mở từ tháng 11 năm 2021. Nếu có sự lựa chọn, cho đại lý hãy chọn kênh HTTP(S), nó đáng tin cậy hơn. - Rò rỉ DNS và WebRTC. Lưu lượng đi qua proxy, nhưng tên miền được phân giải trực tiếp hoặc WebRTC trả về địa chỉ thực — và mọi sự che giấu đều trở nên vô nghĩa. Cần kiểm tra điều này trước khi khởi động đại lý: cách ẩn WebRTC khi làm việc qua proxy.
- Rối loạn địa lý và ngôn ngữ. IP ở Đức, múi giờ của máy là Moscow, ngôn ngữ giao diện là tiếng Anh — bộ ba này tự nó trông giống như tự động hóa. Trong Playwright, ngôn ngữ và múi giờ được chỉ định bằng các tham số ngữ cảnh, hãy đưa chúng vào sự phù hợp với quốc gia của proxy.
- Lưu lượng mà bạn không yêu cầu. Đại lý mở trang hoàn toàn, cùng với hình ảnh, phông chữ và các tập lệnh quảng cáo. Trên kênh cư trú với chi phí tính theo gigabyte, đây là một khoản chi đáng kể — hãy chặn các miền không cần thiết và, khi có thể, tắt tải media.
- Proxy không được cấu hình ở nơi mà trình duyệt khởi động. Khi làm việc qua
--cdp-endpoint, qua lớp Docker hoặc qua dịch vụ đám mây, các cờ MCP không ảnh hưởng đến kết nối thực tế. Điều đầu tiên cần làm sau khi cấu hình là buộc đại lý mở bất kỳ dịch vụ kiểm tra IP nào và đảm bảo rằng địa chỉ và quốc gia là chính xác.
Loại proxy nào nên chọn cho đại lý
Nguyên tắc đơn giản: càng gần với người dùng thực, địa chỉ càng "nhân văn" hơn.
- Proxy cư trú — nền tảng cho các đại lý. Đây là địa chỉ của các nhà cung cấp tại nhà, và đối với trang web, đại lý trông giống như một khách truy cập bình thường. Cần thiết ở mọi nơi có Cloudflare, giá khu vực và bất kỳ dấu hiệu nào về chống bot.
- Proxy di động — vũ khí nặng cho mạng xã hội và các nền tảng mà tài khoản được quản lý rất nghiêm ngặt. Một địa chỉ di động có hàng ngàn thuê bao thực, vì vậy việc cấm nó hoàn toàn là rất tốn kém cho nền tảng.
- Proxy trung tâm dữ liệu — cho các API nội bộ, môi trường thử nghiệm và các nguồn mở không có bảo vệ. Nhanh chóng và rẻ, nhưng trên các trang web bảo vệ, đại lý sẽ gặp thử thách gần như ngay lập tức.
Chi tiết hữu ích cho các kịch bản đại lý: việc thay đổi giao thức tại ProxyCove được thực hiện bằng cách thay thế tiền tố trong chuỗi kết nối — HTTP, HTTPS và SOCKS5 có sẵn trên cùng một proxy, không cần phải cấu hình lại proxy. Có hơn 195 quốc gia trong nhóm, vì vậy "hiển thị kết quả địa phương cho đại lý" được giải quyết bằng cách chọn quốc gia khi mua.
Kết luận
Kết nối proxy với AI-đại lý không chỉ là một dòng lệnh, mà là ba giải pháp liên tiếp: cách xác thực (đối với đại lý headless gần như luôn là danh sách trắng IP, không phải mật khẩu), nơi chỉ định proxy (cờ MCP, đối tượng thiết lập hoặc tham số phiên đám mây — nhưng nhất định ở nơi mà trình duyệt thực sự khởi động) và chế độ hoạt động (đối với các kịch bản nhiều bước — địa chỉ cố định, không phải quay vòng cho mỗi yêu cầu). Cùng với đó là việc kiểm tra bắt buộc về rò rỉ DNS và WebRTC trước khi khởi động thực tế.
Hãy làm điều này một lần một cách cẩn thận — và đại lý sẽ ngừng tiêu tốn token cho những cuộc trò chuyện với captcha. Proxy cư trú ProxyCove được kết nối với Playwright MCP và browser-use chỉ trong vài phút, thanh toán theo lưu lượng, danh sách trắng IP cho chế độ headless được kích hoạt trong tài khoản.
```