2026 là năm các AI agent ngừng chỉ là bản demo. browser-use, các agent kiểu Operator của OpenAI, computer use của Anthropic, và cả tá framework xây trên Playwright giờ đây điều khiển trình duyệt thật chống lại các website thật — đặt vé, mua hàng, nghiên cứu, giám sát. Và tất cả đều đâm vào cùng một bức tường: các site mà chúng vận hành coi chúng là bot, bởi vì chúng đúng là bot.
Hướng dẫn này bàn riêng về lớp proxy cho các AI agent điều khiển trình duyệt. Nếu agent của bạn dùng thư viện HTTP thay vì trình duyệt (công cụ LangChain, scraper bên trong CrewAI), hãy xem Proxy cho AI Agent: LangChain, AutoGPT & CrewAI — bài viết này nói về các agent điều khiển một trình duyệt đầy đủ.
Phản trực giác nhưng đúng: một LLM agent điều khiển trình duyệt Chrome thật thường bị chặn nhanh hơn một scraper Python thuần. Ba lý do:
navigator.webdriver, các artifact thời gian đặc trưng của CDP, và các dấu hiệu headless. Kết hợp với một IP bị gắn cờ, điểm số vượt ngưỡng chặn ngay tức khắc.IP là thứ rẻ nhất trong ba thứ để sửa, và chỉ sửa nó thôi cũng giải quyết được hầu hết các trường hợp bị chặn: định tuyến agent qua proxy residential để câu chuyện về IP khớp với câu chuyện về trình duyệt.
browser-use nằm trên Playwright, nên hỗ trợ proxy là sẵn có. Mẫu hình: một sticky session cho mỗi task của agent, để IP giữ ổn định trong khi agent làm việc, và một IP mới cho task tiếp theo.
from browser_use import Agent, Browser, BrowserConfig
from langchain_openai import ChatOpenAI
import uuid
task_id = uuid.uuid4().hex[:8]
browser = Browser(config=BrowserConfig(
proxy={
"server": "http://us.jibaoproxy.com:913",
"username": f"USERNAME-session-{task_id}", # sticky: same IP for this task
"password": "PASSWORD",
},
))
agent = Agent(
task="Find the current price of the Sony WH-1000XM6 on the three largest US retailers.",
llm=ChatOpenAI(model="gpt-4o"),
browser=browser,
)
result = await agent.run()
Chi tiết then chốt: hậu tố session-{task_id}. Không có nó, một gateway xoay vòng có thể giao cho agent một IP mới giữa chừng task — nội dung giỏ hàng biến mất, đăng nhập rớt, và agent phí các lần gọi LLM để làm lại các bước. Có nó, task chạy trên một IP từ đầu đến cuối, và task tiếp theo nhận được một IP sạch.
Nếu bạn đã tự xây vòng lặp agent của riêng mình trên Playwright (mẫu hình đằng sau hầu hết các triển khai kiểu Operator và computer-use), proxy được đặt trên browser context:
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
context = await browser.new_context(
proxy={
"server": "http://us.jibaoproxy.com:913",
"username": "USERNAME-session-agent42",
"password": "PASSWORD",
},
viewport={"width": 1366, "height": 768},
locale="en-US",
timezone_id="America/Chicago", # match the proxy country
)
page = await context.new_page()
# ... agent loop: screenshot -> LLM -> action -> repeat
Đặt locale và timezone_id khớp với quốc gia của proxy. Một agent duyệt web từ một IP của Mỹ với đồng hồ UTC+8 là một sự không nhất quán mà các hệ thống hành vi chấm điểm chống lại bạn.
Proxy theo từng context cũng cho bạn một trình duyệt, nhiều agent: mỗi new_context() có thể mang hậu tố session riêng, nên mười task agent đồng thời chạy trên mười IP residential khác nhau mà không cần mười tiến trình Chrome.
| Khối lượng công việc của agent | Chiến lược session | Tại sao |
|---|---|---|
| Nghiên cứu / kiểm tra giá (không đăng nhập) | Sticky, 10 phút, session mới cho mỗi task | Ổn định trong task, IP mới giữa các task |
| Thao tác tài khoản đã đăng nhập | Sticky 30 phút, cùng một session ID mỗi lần chạy | Các site gắn cờ tài khoản nhảy quốc gia giữa các lần đăng nhập |
| Luồng checkout / đặt chỗ | Sticky 30 phút | IP đổi giữa chừng checkout giết session và kích hoạt rà soát gian lận |
| Giám sát số lượng lớn (hàng trăm trang) | Xoay vòng, không ghim session | Tối đa hóa độ đa dạng IP, không có trạng thái để bảo toàn |
Lưu lượng residential được tính theo GB, và một browser agent kéo về toàn bộ trang — hình ảnh, font, tracker — khác với một scraper HTTP. Không được quản lý, một task agent có thể ngốn 20–50 MB. Ba cách sửa, theo thứ tự tác động:
await context.route("**/*.{png,jpg,jpeg,webp,gif,woff,woff2,mp4}",
lambda route: route.abort())
Nếu agent của bạn đọc ảnh chụp màn hình, hãy giữ hình ảnh trên trang mục tiêu nhưng vẫn chặn video và font. Nếu nó đọc DOM/cây accessibility, hãy chặn cả hình ảnh — cắt giảm lưu lượng 60–80%.Với việc chặn hình ảnh và định tuyến có phạm vi, các task browser-agent điển hình rơi vào khoảng 2–8 MB — ở mức $2/GB thì chỉ vài cent cho mỗi trăm task.
Phần thành thật. Một IP residential sửa được sự lệch pha ASN và uy tín IP, vốn là tín hiệu đơn lẻ nặng ký nhất trong chấm điểm anti-bot 2026. Nó không sửa được:
requests sau này. Xem giải thích JA3/JA4.Xếp chồng cả ba thứ này trên một IP residential thì các browser agent vượt qua cùng những kiểm tra mà người dùng thật vượt qua. Với những mục tiêu khó nhất (DataDome, PerimeterX), hãy xem hướng dẫn DataDome/PerimeterX của chúng tôi.
timezone_id/locale với quốc gia của proxy.500MB lưu lượng miễn phí — đủ cho vài trăm task browser-agent với chặn tài nguyên được bật.
Bắt Đầu Dùng Thử Miễn PhíNgười dùng mới nhận 500MB khi đăng ký, cùng tiền thưởng cho lần nạp đầu tiên. Ưu đãi có thời hạn.