Vấn đề: Web crawler truyền thống đã chết, kỷ nguyên AI cần mô hình mới
Bạn viết một script crawler tuyệt đẹp, ngày hôm sau website thay đổi layout, tất cả đều hỏng. Bạn sửa lại selector, một tuần sau đường dẫn CDN thay đổi, lại hỏng. Bạn thêm xử lý ngoại lệ, nhưng captcha xuất hiện, hoàn toàn bị kẹt.
Tự động hóa web truyền thống có ba điểm yếu chí mạng:
- Mong manh — Cấu trúc trang thay đổi, script toàn bộ die
- Tĩnh — Chỉ thực thi quy trình định sẵn, không ứng phó được sự cố
- Bị động — Gặp captcha, popup, lỗi tải là bó tay
Chúng ta cần một phương thức tự động hóa như con người duyệt web — nhìn thấy trang, hiểu ý định, tự sửa chữa.
Browser Harness là gì?
Browser Harness là framework điều khiển trình duyệt tự phục hồi, cho phép LLM (mô hình ngôn ngữ lớn) tự động hoàn thành mọi tác vụ web như con người.
- 11,251+ Stars trên GitHub
- 1,019+ Forks
- Viết bằng Python
- Hỗ trợ Playwright và Selenium
- Được team browser-use duy trì
Slogan cốt lõi: “Self-healing harness that enables LLMs to complete any task.”
Khả năng cốt lõi
1. Tự phục hồi (Self-Healing)
Tự động hóa truyền thống:
# Selector mong manh, trang thay đổi là die
button = driver.find_element(By.CSS_SELECTOR, "#submit-btn")
button.click()
Browser Harness:
# LLM hiểu ngữ nghĩa trang, tự tìm nút đúng
# Dù id thay đổi cũng hiểu qua ngữ cảnh
result = harness.execute("Nhấn nút gửi")
# Nếu không tìm thấy nút, LLM phân tích trang và đề xuất phương án thay thế
Cơ chế tự phục hồi:
- Thao tác thất bại → Chụp màn hình phân tích → LLM chẩn đoán → Tạo chiến lược mới → Thử lại
- Lặp cho đến khi thành công hoặc xác nhận không thể hoàn thành
2. Hiểu ngữ nghĩa (Semantic Understanding)
Browser Harness không phụ thuộc CSS selector mà để LLM hiểu nội dung trang:
# Nói LLM mục tiêu, không phải bước
harness.execute("Tìm tai nghe không dây trên Amazon, sắp xếp theo đánh giá, chọn kết quả đầu tiên thêm vào giỏ")
# LLM tự động:
# 1. Tìm ô tìm kiếm
# 2. Nhập "wireless headphones"
# 3. Tìm menu sắp xếp
# 4. Chọn "Customer Reviews"
# 5. Tìm sản phẩm đầu tiên
# 6. Nhấn "Add to Cart"
3. Lập kế hoạch đa bước
from browser_harness import Harness
harness = Harness(model="gpt-4o")
# Tác vụ phức tạp đa bước
task = """
Đặt vé máy bay từ Bắc Kinh đến Thượng Hải thứ Tư tuần sau,
yêu cầu:
- Khởi hành buổi sáng
- Giá dưới 1000 tệ
- China Eastern hoặc Air China
- Không cần hành lý ký gửi
"""
result = harness.execute(task)
# LLM lập kế hoạch:
# 1. Mở Ctrip/Qu哪儿
# 2. Chọn một chiều
# 3. Nhập Bắc Kinh → Thượng Hải
# 4. Chọn ngày thứ Tư tuần sau
# 5. Lọc chuyến bay buổi sáng
# 6. Sắp xếp theo giá
# 7. Lọc China Eastern/Air China
# 8. Chọn vé không hành lý
# 9. Điền thông tin hành khách
# 10. Gửi đơn hàng
4. Nhận thức thị giác (Visual Perception)
Browser Harness gửi ảnh chụp màn hình cho LLM, cho phép mô hình “nhìn thấy” web:
# Phân tích ảnh chụp màn hình
screenshot = harness.screenshot()
analysis = harness.llm.analyze_image(screenshot,
"Trang này có biểu mẫu gì? Hãy mô tả nhãn và loại của mỗi ô nhập")
# LLM trả về:
# "Trang có biểu mẫu đăng nhập:
# - Ô nhập tên người dùng (type=text)
# - Ô nhập mật khẩu (type=password)
# - Hộp kiểm Ghi nhớ tôi
# - Nút đăng nhập"
5. So sánh với công cụ hiện có
| Tính năng | Browser Harness | Playwright | Selenium | Scrapy |
|---|---|---|---|---|
| Tự phục hồi | ✅ Tự sửa | ❌ Thủ công | ❌ Thủ công | ❌ Thủ công |
| Hiểu ngữ nghĩa | ✅ LLM điều khiển | ❌ Selector | ❌ Selector | ❌ XPath |
| Lập kế hoạch đa bước | ✅ Tự động | ⚠️ Cần code | ⚠️ Cần code | ⚠️ Cần code |
| Xử lý captcha | ✅ LLM giải | ❌ Cần bên thứ 3 | ❌ Cần bên thứ 3 | ❌ Cần bên thứ 3 |
| Nội dung động | ✅ Tự đợi | ⚠️ Cần cấu hình | ⚠️ Cần cấu hình | ⚠️ Cần cấu hình |
| Độ khó học | Thấp (ngôn ngữ tự nhiên) | Trung bình | Trung bình | Cao |
Thiết kế kiến trúc
Browser Harness
├── LLM Core (GPT-4o / Claude / Local LLM)
├── Browser Controller (Playwright / Selenium)
├── Self-Healing Engine
│ ├── Error Detection
│ ├── Screenshot Analysis
│ ├── Strategy Regeneration
│ └── Retry Logic
├── Task Planner
│ ├── Goal Decomposition
│ ├── Step Sequencing
│ └── Dependency Resolution
└── Safety Guardrails
├── URL Whitelist
├── Action Limits
└── Human-in-the-Loop
Cài đặt và sử dụng
Cài đặt
pip install browser-harness
# Cài đặt phụ thuộc trình duyệt
playwright install
Cách dùng cơ bản
from browser_harness import Harness
# Khởi tạo
harness = Harness(
model="gpt-4o", # hoặc "claude-3-5-sonnet"
browser="chromium",
headless=False # Chế độ hiển thị để debug
)
# Thực thi tác vụ đơn giản
result = harness.execute("Mở Google tìm kiếm 'Python tutorial'")
# Thực thi tác vụ phức tạp
task = """
1. Truy cập github.com
2. Tìm 'browser-use/browser-harness'
3. Nhấn nút Star
4. Trả về số star
"""
result = harness.execute(task)
print(result) # "Số Stars hiện tại: 11251"
Cấu hình nâng cao
from browser_harness import Harness, Config
config = Config(
max_retries=3, # Số lần thử lại tối đa
retry_delay=2, # Thời gian chờ thử lại (giây)
screenshot_on_error=True, # Chụp màn hình khi lỗi
human_in_the_loop=True, # Thao tác quan trọng cần xác nhận người
url_whitelist=[ # Danh sách trắng URL
"*.github.com",
"*.google.com"
]
)
harness = Harness(model="gpt-4o", config=config)
Kịch bản ứng dụng thực tế
Kịch bản 1: Kiểm thử tự động
# Để LLM kiểm thử website của bạn
test_cases = [
"Đăng ký người dùng mới, xác minh nhận email xác nhận",
"Thêm sản phẩm vào giỏ hàng, kiểm tra tính tổng giá đúng",
"Gửi biểu mẫu để trống trường bắt buộc, xác minh thông báo lỗi"
]
for test in test_cases:
result = harness.execute(test)
assert result.success, f"Kiểm thử thất bại: {test}"
Kịch bản 2: Thu thập dữ liệu
# Crawler thông minh, tự thích ứng thay đổi website
data = harness.execute("""
Truy cập example.com/products,
trích xuất tất cả sản phẩm:
- Tên
- Giá
- Đánh giá
- Tình trạng tồn kho
Lưu dạng JSON
""")
Kịch bản 3: Tự động hóa văn phòng
# Tự động xử lý tác vụ web hàng ngày
harness.execute("""
1. Đăng nhập hệ thống bồi thường công ty
2. Nộp đơn bồi thường công tác tháng trước
3. Tải lên PDF hóa đơn
4. Điền người phê duyệt
5. Gửi đơn
""")
Kịch bản 4: Giám sát đối thủ
# Kiểm tra giá đối thủ mỗi ngày
harness.execute("""
Truy cập amazon.com, tìm kiếm từ khóa sản phẩm cốt lõi của chúng ta,
ghi lại giá và đánh giá của 10 kết quả đầu,
tạo báo cáo so sánh
""")
So sánh với dự án tương tự
| Dự án | Stars | Đặc điểm | Kịch bản phù hợp |
|---|---|---|---|
| Browser Harness | 11K+ | Tự phục hồi, LLM điều khiển | Tác vụ web chung |
| Playwright | 66K+ | Hiệu năng cao, đa trình duyệt | Kiểm thử tự động |
| Selenium | 30K+ | Trưởng thành ổn định | Tự động hóa truyền thống |
| Scrapy | 52K+ | Crawl quy mô lớn | Thu thập dữ liệu |
| Crawl4AI | 8K+ | AI crawler | Trích xuất nội dung |
Hạn chế
- Chi phí — Gọi API LLM có phí (nhưng dùng được mô hình local)
- Tốc độ — Chậm hơn tự động hóa truyền thống (cần thời gian suy nghĩ)
- Bảo mật — Cần chính sách bảo mật nghiêm ngặt để tránh thao tác sai
- Captcha phức tạp — Một số captcha vẫn cần can thiệp người
Kết luận
Browser Harness đại diện cho mô hình mới của tự động hóa web — từ “selector cứng nhắc” đến “agent hiểu biết”.
- Khả năng tự phục hồi giảm đáng kể chi phí bảo trì
- Giao diện ngôn ngữ tự nhiên hạ thấp rào cản sử dụng
- Khả năng suy luận của LLM xử lý quy trình phức tạp
- Nhận thức thị giác giải quyết điểm mù của tự động hóa truyền thống
Nếu bạn đã chán việc sửa script crawler bị crash hàng tuần, Browser Harness đáng để thử.
GitHub: browser-use/browser-harness
Stars: 11,251+ | Ngôn ngữ: Python | Giấy phép: Mã nguồn mở

有问题或想法?欢迎在下方留下你的评论。使用 GitHub 账号登录即可参与讨论。