
Anh Tuan
Data Science Expert

Khi trợ lý AI của bạn duyệt web thay bạn, CAPTCHAs là rào cản số một. Các trang được bảo vệ chặn trợ lý, các biểu mẫu từ chối gửi, và các nhiệm vụ dừng lại chờ can thiệp của con người.
Hermes Agent của Nous Research là một trợ lý AI tự cải tiến chạy ở bất kỳ đâu — từ VPS giá 5 đô la đến cụm GPU — và tiếp cận bạn trên mọi kênh bạn đã sử dụng: Telegram, Discord, Slack, WhatsApp, Signal, và email. Nó cũng có thể điều khiển trình duyệt để truy cập trang, nhấp nút, điền biểu mẫu và trích xuất dữ liệu thay bạn. Tuy nhiên, giống như bất kỳ trợ lý điều khiển trình duyệt nào khác, nó bị mắc kẹt ở CAPTCHAs.
CapSolver thay đổi hoàn toàn điều này. Bằng cách tải tiện ích mở rộng CapSolver Chrome vào trình duyệt mà Hermes kết nối, CAPTCHAs được giải tự động và vô hình ở nền. Không cần mã. Không cần gọi API từ phía bạn. Không cần các bài tập kỹ thuật tối ưu hóa câu lệnh.
Điều tốt nhất? Bạn thậm chí không cần nhắc đến CAPTCHAs với trợ lý. Bạn chỉ cần bảo nó đợi một lúc trước khi gửi — và khi nó nhấp vào Gửi, CAPTCHA đã được giải rồi.
Hermes Agent là một trợ lý AI tự động mã nguồn mở được xây dựng bởi Nous Research. Nó được thiết kế xung quanh ba nguyên tắc: bộ nhớ liên tục (nhớ bạn và các dự án của bạn qua các phiên), tự học kỹ năng (học quy trình từ kinh nghiệm và lặp lại chúng lần sau), và tính linh hoạt về cơ sở hạ tầng (chạy nó trên VPS nhỏ, container Docker, môi trường không máy chủ, hoặc máy tính GPU của riêng bạn).

hermes modelHermes có thể điều khiển trình duyệt Chromium để thực hiện công việc thực tế — điều hướng, đọc DOM, nhấp, gõ, chụp màn hình, quét dữ liệu. Lớp công cụ trình duyệt của nó đặc biệt ở một cách cụ thể: thay vì buộc bạn vào một nền tảng duy nhất, Hermes hỗ trợ năm nhà cung cấp trình duyệt thay thế:
| Nhà cung cấp | Loại | Tiện ích mở rộng? |
|---|---|---|
| Browserbase | Cloud | ✗ |
| Browser Use | Cloud | ✗ |
| Firecrawl | Cloud | ✗ |
| Camoufox | Local (Firefox stealth) | ✗ |
| CDP attach | Local (mọi Chromium) | ✓ |
Các nhà cung cấp đám mây không thể tải tiện ích mở rộng — bạn không kiểm soát trình duyệt từ xa. Camoufox dựa trên Firefox và không thể chạy tiện ích mở rộng Chrome MV3. Điểm tích hợp sạch sẽ là tùy chọn thứ năm: CDP attach, nơi Hermes kết nối với Chromium bạn đã khởi chạy riêng. Đó là nơi CapSolver phù hợp.
Đây là mô hình khác so với các công cụ như OpenClaw (khởi chạy Chromium riêng và chấp nhận mảng browser.extensions) hoặc Crawlee (nơi bạn kiểm soát cờ khởi động Playwright). Với Hermes, bạn mang theo Chrome của riêng mình với tiện ích mở rộng đã tải trước, và Hermes kết nối với nó qua giao thức DevTools.
CapSolver là dịch vụ giải CAPTCHA hàng đầu cung cấp giải pháp dựa trên AI để vượt qua các thách thức CAPTCHA hiện đại. Với sự hỗ trợ cho mọi loại CAPTCHA chính và thời gian phản hồi nhanh, CapSolver tích hợp liền mạch vào các quy trình tự động hóa — dù bạn đang điều khiển trình duyệt qua Playwright, gọi API trực tiếp, hoặc, như trong hướng dẫn này, chạy tiện ích mở rộng Chrome của nó bên trong phiên trình duyệt của trợ lý.
Hầu hết các tích hợp giải CAPTCHA yêu cầu bạn viết mã — tạo các cuộc gọi API, kiểm tra kết quả, chèn các token vào các trường ẩn. Đó là cách hoạt động với các công cụ như Crawlee, Puppeteer hoặc Playwright.
Hermes + CapSolver hoàn toàn khác biệt:
| Truyền thống (dựa trên mã) | Hermes (ngôn ngữ tự nhiên) |
|---|---|
Viết lớp CapSolverService |
Khởi chạy Chrome một lần với --load-extension=... |
Gọi createTask() / getTaskResult() |
Chỉ cần trò chuyện với trợ lý của bạn |
Chèn token qua page.$eval() |
Tiện ích mở rộng xử lý mọi thứ |
| Xử lý lỗi, thử lại, thời gian chờ trong mã | Nói với trợ lý "đợi 60 giây, sau đó gửi" |
| Mã khác nhau cho mỗi loại CAPTCHA | Hoạt động cho mọi loại tự động |
Điểm nhận thức chính: Tiện ích mở rộng CapSolver chạy bên trong trình duyệt kết nối. Hermes kết nối với trình duyệt đó qua CDP và điều khiển nó bình thường. Khi trợ lý truy cập trang có CAPTCHA, tiện ích mở rộng — chạy trong cùng Chrome, hoàn toàn không bị trợ lý phát hiện — phát hiện widget, gọi API CapSolver và chèn token giải pháp vào trang. Khi trợ lý nhấp vào Gửi, biểu mẫu đã có token hợp lệ.
Bạn chỉ cần cho nó thời gian. Thay vì bảo trợ lý "giải CAPTCHA", bạn chỉ cần nói:
"Đến trang đó, đợi 60 giây, sau đó nhấp Gửi."
Đó là tất cả. Trợ lý không cần biết CapSolver tồn tại.
Trước khi thiết lập tích hợp, hãy đảm bảo bạn có:
Google Chrome 137+ (phát hành giữa năm 2025) đã ngầm loại bỏ hỗ trợ cho
--load-extensiontrong các phiên bản được thương mại hóa. Điều này có nghĩa là tiện ích mở rộng Chrome không thể được tải trong các phiên tự động hóa sử dụng Chrome tiêu chuẩn. Không có lỗi — cờ này đơn giản bị bỏ qua.
Điều này ảnh hưởng đến Google Chrome và Microsoft Edge. Bạn phải sử dụng một trong những tùy chọn sau:
| Trình duyệt | Tải tiện ích mở rộng | Được khuyến khích? |
|---|---|---|
| Google Chrome 137+ | Không hỗ trợ | Không |
| Microsoft Edge | Không hỗ trợ | Không |
| Chrome cho kiểm thử | Hỗ trợ | Có |
| Chromium (độc lập) | Hỗ trợ | Có |
| Chromium được đóng gói bởi Playwright | Hỗ trợ | Có |
Cách cài đặt Chrome cho kiểm thử:
# Tùy chọn 1: Qua Playwright (được khuyến khích — Hermes đã sử dụng Playwright bên trong)
npx playwright install chromium
# Đường dẫn sẽ là:
# ~/.cache/ms-playwright/chromium-XXXX/chrome-linux64/chrome (Linux)
# ~/Library/Caches/ms-playwright/chromium-XXXX/chrome-mac/Chromium.app/Contents/MacOS/Chromium (macOS)
# Tùy chọn 2: Tải trực tiếp Chrome cho kiểm thử
# Truy cập: https://googlechromelabs.github.io/chrome-for-testing/
# Tải phiên bản tương ứng với hệ điều hành của bạn
Sau khi cài đặt, ghi nhớ đường dẫn đầy đủ đến tệp nhị phân — bạn sẽ cần nó trong bước tiếp theo.
Tích hợp có hai phần hoạt động cùng nhau:
9222).config.yaml của Hermes để nói với nó kết nối đến cổng CDP đó thay vì khởi chạy trình duyệt riêng.Đó là tất cả — không cần mã, không cần sửa đổi Hermes.
Tải tiện ích mở rộng CapSolver Chrome và giải nén nó vào một vị trí ổn định:
CapSolver.Browser.Extension-chrome-vX.X.X.zip mới nhấtmkdir -p ~/.hermes/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/.hermes/capsolver-extension/
ls ~/.hermes/capsolver-extension/manifest.json
Bạn nên thấy manifest.json — điều này xác nhận tiện ích mở rộng ở đúng vị trí.
Lưu ý về đường dẫn: Sử dụng đường dẫn tuyệt đối, đã giải quyết (không phải
~) khi bạn truyền--load-extension=...cho Chrome sau này. Một số phiên bản Chrome MV3 có các trường hợp đặc biệt nơi các công cụ dịch vụ tiện ích mở rộng không đăng ký thông qua các liên kết mềm dưới các thư mục người dùng tùy chỉnh. Nếu bạn đang liên kết mềm tiện ích mở rộng từ vị trí khác, hãy sử dụngreadlink -fđể giải quyết đường dẫn thực tế và sử dụng đường dẫn đó.
Mở tệp cấu hình tiện ích mở rộng tại ~/.hermes/capsolver-extension/assets/config.js và thay giá trị apiKey bằng khóa của bạn:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← khóa của bạn ở đây
useCapsolver: true,
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
// ... phần còn lại của cấu hình
};
Bạn có thể lấy khóa API từ bảng điều khiển CapSolver.
Đây là bước quan trọng. Chúng ta khởi chạy Chrome một lần, riêng biệt khỏi Hermes, với ba cờ quan trọng:
--remote-debugging-port=9222 — mở giao thức DevTools để Hermes có thể kết nối--load-extension=... — tải trước tiện ích mở rộng CapSolver--user-data-dir=... — sử dụng một hồ sơ chuyên dụng để không xung đột với Chrome cá nhân của bạnHermes có quy ước nội bộ cho thư mục người dùng: ~/.hermes/chrome-debug. Sử dụng đường dẫn này có nghĩa là lệnh /browser connect trong ứng dụng Hermes cũng "hoạt động" mà không cần cờ bổ sung.
/path/to/chrome-for-testing/chrome \
--remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir="$HOME/.hermes/chrome-debug" \
--load-extension="$HOME/.hermes/capsolver-extension" \
--disable-extensions-except="$HOME/.hermes/capsolver-extension" \
--no-first-run \
--no-default-browser-check \
--no-sandbox
Thay /path/to/chrome-for-testing/chrome bằng nhị phân thực tế của bạn, ví dụ: ~/.cache/ms-playwright/chromium-1200/chrome-linux64/chrome.
Máy chủ không đầu: Nếu bạn đang chạy trên máy chủ Linux không có màn hình vật lý (VPS, EC2, v.v.), xem phần Thực hành tốt bên dưới để thiết lập
Xvfb. Hệ thống tiện ích mở rộng Chrome yêu cầu ngữ cảnh màn hình.
Đối với bất kỳ thiết lập nào sống lâu hơn một lần kiểm tra, bao bọc khởi chạy trong một tập lệnh nhỏ để bạn có thể giữ Chrome chạy nền, khởi động lại một cách sạch sẽ và giám sát nó với bất kỳ quản lý tiến trình nào bạn đã có (systemd, supervisor, runit, OpenRC, Docker, v.v.).
Lưu tập lệnh này dưới dạng ~/.hermes/chrome-debug.sh và cấp quyền thực thi:
#!/usr/bin/env bash
# ~/.hermes/chrome-debug.sh
# Khởi chạy Chrome-for-Testing với tiện ích mở rộng CapSolver đã tải trước
# và CDP được mở trên 127.0.0.1:9222.
CHROME_BIN="$HOME/.cache/ms-playwright/chromium-1200/chrome-linux64/chrome"
EXT_DIR="$HOME/.hermes/capsolver-extension"
USER_DATA_DIR="$HOME/.hermes/chrome-debug"
export DISPLAY=:99 # cho Linux không đầu — xem phần Thực hành tốt
exec "$CHROME_BIN" \
--remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir="$USER_DATA_DIR" \
--load-extension="$EXT_DIR" \
--disable-extensions-except="$EXT_DIR" \
--no-first-run \
--no-default-browser-check \
--no-sandbox \
--disable-dev-shm-usage \
--disable-features=Translate
Cách khởi chạy liên tục đơn giản nhất là:
nohup ~/.hermes/chrome-debug.sh > /tmp/chrome-debug.log 2>&1 &
Đối với sản xuất, giám sát tập lệnh bằng bất kỳ quản lý tiến trình nào bạn thích. Một đơn vị systemd tối thiểu tại ~/.config/systemd/user/chrome-debug.service:
[Unit]
Description=Chrome được trang bị CapSolver cho Hermes Agent
After=network.target
[Service]
ExecStart=%h/.hermes/chrome-debug.sh
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
Sau đó:
systemctl --user daemon-reload
systemctl --user enable --now chrome-debug
Bất kỳ thiết lập tương đương nào (chương trình supervisor, dịch vụ runit, Docker, v.v.) hoạt động giống nhau — tích hợp chỉ quan tâm đến việc ai đó giữ chrome-debug.sh chạy.
Chỉnh sửa tệp cấu hình Hermes tại ~/.hermes/config.yaml. Tìm phần browser: (thường chỉ có inactivity_timeout) và thêm cdp_url:
browser:
inactivity_timeout: 120
cdp_url: http://127.0.0.1:9222
Dòng duy nhất này nói với công cụ browser_cdp của Hermes định tuyến mọi thao tác trình duyệt thông qua phiên Chrome mà bạn đã khởi chạy ở Bước 3, thay vì khởi chạy riêng.
Khả năng đảo ngược: Đây là sự thay đổi duy nhất đối với Hermes. Để quay lại, xóa dòng
cdp_url. Hermes quay lại nhà cung cấp trình duyệt mặc định (Browserbase, Browser Use, v.v.) mà không có tác động phụ nào khác.
Nếu Hermes đang chạy, khởi động lại để nó nhận cdp_url mới:
# Chạy trực tiếp (chế độ nền hoặc dưới quản lý của bạn):
hermes gateway run
# Hoặc khởi động lại qua bất kỳ quản lý tiến trình nào bạn giám sát Hermes —
# chỉ yêu cầu là cấu hình/môi trường mới có hiệu lực.
Hermes đi kèm với lệnh chẩn đoán tích hợp kiểm tra mọi phần của tích hợp trong một lần:
hermes doctor
Bạn đang tìm các tín hiệu sau:
◆ Availability of Tools
✓ browser-cdp ← CDP attach đang hoạt động
✓ browser
...
◆ API Connectivity
Checking OpenRouter API... ✓ OpenRouter API
Nếu browser-cdp xuất hiện dưới Availability of Tools, Hermes đã phát hiện điểm cuối CDP của bạn và tích hợp đã được kết nối đúng. Nếu không, Hermes vô hiệu hóa công cụ đó một cách im lặng (không có lỗi) — đó là tín hiệu để theo dõi.
Bạn cũng có thể xác minh Chrome có thể truy cập trực tiếp:
curl -s http://127.0.0.1:9222/json/version
Một phản hồi như sau xác nhận rằng CDP đang hoạt động:
{
"Browser": "Chrome/<phiên bản của bạn>",
"Protocol-Version": "1.3",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/..."
}
Về tính khả kiến của dịch vụ worker CapSolver: Các dịch vụ worker MV3 của Chrome sẽ tạm dừng hoạt động một cách nghiêm ngặt, và trên các phiên bản Chrome gần đây,
/json/listcó thể hoàn toàn bỏ qua chúng ngay cả khi chúng đang chạy. Việc vắng mặt trong/json/listkhông phải là dấu hiệu chẩn đoán — xác minh rằng CapSolver đang hoạt động bằng cách tải trang reCAPTCHA thực tế thông qua agent và quan sát kết quả widget trên trang, chứ không phải bằng cách kiểm tra danh sách mục tiêu.
Đây là phần quan trọng nhất. Sau khi cài đặt xong, sử dụng CapSolver với Hermes là rất đơn giản.
Không đề cập đến CAPTCHAs hoặc CapSolver cho agent. Chỉ cần cho nó thời gian trước khi gửi biểu mẫu.
Agent không cần biết về CAPTCHAs. Mở rộng sẽ xử lý mọi thứ ở chế độ nền. Tất cả những gì bạn cần làm là thêm một thời gian chờ trong hướng dẫn của bạn để mở rộng có thời gian giải quyết thách thức trước khi biểu mẫu được gửi.
Chế độ một lần của Hermes (hermes -z "...") lý tưởng cho việc kiểm tra tích hợp. Chạy lệnh này từ bất kỳ terminal nào có sẵn CLI hermes:
hermes -z 'Mở https://www.google.com/recaptcha/api2/demo. Chờ 60 giây để trang tải hoàn toàn. Sau đó nhấp vào nút có nhãn "Gửi!" hoặc có id "recaptcha-demo-submit". Sau khi nhấp, chờ 5 giây và cho tôi biết văn bản hiển thị trên trang.' --yolo
Các bước diễn ra phía sau hậu trường:
g-recaptcha-responseChuỗi "Verification Success... Hooray!" là thông báo của Google — chỉ xuất hiện khi token reCAPTCHA hợp lệ được gửi cùng biểu mẫu.
Gửi từ bất kỳ kênh nào kết nối với cổng Hermes (Telegram, Discord, Slack, v.v.):
Đi đến https://example.com/login, điền trường email với
"me@example.com" và trường mật khẩu với "mypassword123",
sau đó chờ 30 giây và nhấp vào nút Đăng Nhập.
Hãy cho tôi biết trang nào tải sau khi đăng nhập.
Hermes sẽ chuyển yêu cầu đến agent, gắn kết với cùng Chrome, điền biểu mẫu, cho mở rộng thời gian để giải quyết bất kỳ CAPTCHA nào trên trang đăng nhập, nhấp vào Đăng Nhập, và trả lời với nội dung trang sau đăng nhập — tất cả mà bạn không bao giờ đề cập đến CAPTCHAs.
Mở https://example.com/contact và điền biểu mẫu liên hệ:
- Tên: "John Doe"
- Email: "john@example.com"
- Tin nhắn: "Xin chào, tôi có một câu hỏi về dịch vụ của bạn."
Chờ 45 giây, sau đó nhấp vào Gửi Tin Nhắn.
Thông báo nào xuất hiện trên trang?
| Loại CAPTCHA | Thời Gian Giải Thường | Thời Gian Chờ Được Đề Xuất |
|---|---|---|
| reCAPTCHA v2 (hộp kiểm) | 5–15 giây | 30–60 giây |
| reCAPTCHA v2 (ẩn) | 5–15 giây | 30 giây |
| reCAPTCHA v3 | 3–10 giây | 20–30 giây |
| AWS WAF CAPTCHA | 5–15 giây | 30 giây |
Lời khuyên: Khi không chắc, hãy sử dụng 60 giây. Tốt hơn là chờ lâu hơn một chút thay vì gửi quá sớm. Thời gian chờ thêm gần như miễn phí — hóa đơn CapSolver của bạn tính theo giải, không theo giây.
Dưới đây là các cách diễn đạt đã được kiểm chứng bạn có thể sử dụng trên bất kỳ kênh nào của Hermes:
Tránh các cách diễn đạt này — chúng có thể làm nhầm lẫn agent và đã được quan sát là gây từ chối trên một số mô hình được điều chỉnh an toàn (đặc biệt là họ GLM):
Đối với những người quan tâm đến kỹ thuật, đây là kiến trúc:
Tin nhắn của bạn Cổng Hermes
──────────────────────────────────────────────────────────
"đi đến trang, ──► Agent Hermes nhận tin nhắn
đợi 60s, gửi" │
▼
browser_cdp / công cụ trình duyệt
│ (gắn kết qua WebSocket
│ đến ws://127.0.0.1:9222)
▼
┌────────────────────────────────────┐
│ chrome-debug Chromium (nền)│
│ │
│ ┌───────────────────────────────┐ │
│ │ Mở rộng CapSolver MV3 │ │
│ │ (được tải qua --load-extension; │ │
│ │ yêu cầu Chrome để kiểm tra │ │
│ │ hoặc Chromium — Chrome 137+ bỏ qua cờ này) │ │
│ │ │ │
│ │ 1. script nội dung phát hiện CAPTCHA │
│ │ 2. service worker gọi API CapSolver │
│ │ 3. token nhận được │ │
│ │ 4. token chèn vào trường biểu mẫu │ │
│ └───────────────────────────────┘ │
└────────────────────────────────────┘
│
▼
Agent Hermes đợi 60 giây...
│
▼
browser_cdp: nhấp Gửi
│
▼
Biểu mẫu gửi với token hợp lệ
│
▼
Trang xác nhận sau khi gửi
Lớp công cụ trình duyệt của Hermes được xây dựng xung quanh năm nhà cung cấp thay thế (Browserbase, Browser Use, Firecrawl, Camoufox, Chromium không đầu). Ba trong số đó là đám mây — bạn không kiểm soát nhị phân trình duyệt, vì vậy không có nơi để đặt cờ --load-extension. Một (Camoufox) dựa trên Firefox. Năm thứ năm — gắn kết CDP — là điểm duy nhất nơi một Chromium do người dùng kiểm soát có thể được kết nối.
Điều trao đổi là rất tốt: Hermes vẫn có thể di chuyển trên đám mây mặc định, nhưng ngay khi bạn muốn quyền lực trình duyệt (CapSolver, trình chặn quảng cáo của riêng bạn, công cụ MV3 tùy chỉnh, cookie duy trì, bạn muốn gì), bạn khởi chạy Chrome của riêng mình và chỉ định Hermes đến đó. Một dòng cấu hình. Kiểm soát hoàn toàn.
--load-extension Thực Sự Làm GìKhi Chrome khởi động với --load-extension=/path/to/extension, nó xem thư mục đó là một mở rộng chưa đóng gói — cơ chế tương tự như chế độ phát triển của Chrome. Tệp manifesto, script nội dung và service worker của mở rộng được đăng ký chính xác như nếu bạn đã cài đặt nó từ Chrome Web Store. Không có khác biệt về cách đóng gói, không có truy cập API bị giảm — nó là một mở rộng có quyền đầy đủ.
Mở rộng CapSolver sau đó tiếp quản phần còn lại:
assets/config.js, gửi chi tiết thách thức và kiểm tra tokenAgent Hermes hoàn toàn không liên quan — nó thấy một trang bình thường, đợi thời gian bạn đã nói, và gửi. Trang chỉ đơn giản là có token hợp lệ trên đó.
Ghi chú môi trường: Tránh
--disable-background-networkingtrong cờ Chrome của bạn. Nó chặn XHR/fetch ra ngoài của service worker CapSolver — vì vậy mở rộng không bao giờ có thể truy cập API CapSolver. Công thức trong Bước 3 cố ý bỏ qua nó.
~/.hermes/config.yamlThay đổi duy nhất cần thiết là thêm cdp_url dưới khối browser::
browser:
inactivity_timeout: 120
cdp_url: http://127.0.0.1:9222
--load-extensionTất cả các cờ bạn nên truyền cho Chrome:
| Cờ | Mục đích |
|---|---|
--remote-debugging-port=9222 |
Truy cập CDP trên cổng TCP 9222 (cần thiết để Hermes gắn kết) |
--remote-debugging-address=127.0.0.1 |
Gắn CDP với loopback chỉ (an ninh — chưa bao giờ công khai CDP) |
--user-data-dir=$HOME/.hermes/chrome-debug |
Hồ sơ riêng biệt không xung đột với Chrome cá nhân của bạn |
--load-extension=/abs/path/to/capsolver-extension |
Mở rộng thực tế để tải |
--disable-extensions-except=/abs/path/to/capsolver-extension |
Tận dụng — chỉ tải mở rộng này |
--no-first-run --no-default-browser-check |
Bỏ qua trình hướng dẫn cài đặt Chrome |
--no-sandbox |
Tắt sandbox của Chrome. Tài liệu Chromium ghi chú đây là "dành cho mục đích kiểm tra", nhưng đây là giải pháp thay thế tiêu chuẩn cho môi trường Linux/Docker không có quyền user namespace / SYS_ADMIN để thiết lập sandbox đúng cách. |
--disable-dev-shm-usage |
Tránh vấn đề /dev/shm trong các container |
assets/config.jsCấu hình tối thiểu trong ~/.hermes/capsolver-extension/assets/config.js:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
useCapsolver: true,
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
// ... xem tài liệu CapSolver để xem toàn bộ các tùy chọn
};
hermes doctor không liệt kê browser-cdp trong Danh Sách Công CụTriệu chứng: Sau khi khởi động lại Hermes, công cụ browser-cdp bị thiếu trong đầu ra hermes doctor.
Nguyên nhân: Hermes chỉ đăng ký browser-cdp khi có endpoint CDP được cấu hình — hoặc browser.cdp_url được thiết lập trong config.yaml, biến môi trường BROWSER_CDP_URL, hoặc phiên kết nối /browser connect đang hoạt động. Kiểm tra là sự hiện diện của cấu hình, không phải khả năng truy cập (xem tools/browser_cdp_tool.py:_browser_cdp_check). Nguyên nhân phổ biến nhất của việc thiếu công cụ browser-cdp là lỗi gõ hoặc khóa bị lồng nhau trong config.yaml, chứ không phải Chrome không truy cập được.
Giải pháp:
# 1. Xác minh khóa được lồng đúng dưới "browser:" (không phải cấp độ đầu tiên)
grep -A2 '^browser:' ~/.hermes/config.yaml
# đầu ra mong muốn:
# browser:
# ...
# cdp_url: http://127.0.0.1:9222
# 2. Sau đó xác minh Chrome đang chạy tại endpoint đó
curl -s http://127.0.0.1:9222/json/version
# 3. Nếu Chrome bị treo, kiểm tra nhật ký chrome-debug:
tail -n 30 /tmp/chrome-debug.log # hoặc: journalctl --user -u chrome-debug -n 30
Triệu chứng: Chrome khởi động sạch sẽ nhưng CAPTCHA không bao giờ được giải — mọi lần gửi đều thất bại.
Nguyên nhân: Bạn đang sử dụng Chrome Google 137+, bị dán nhãn, sẽ bỏ qua --load-extension một cách im lặng.
Giải pháp: Chuyển sang Chrome for Testing hoặc Chromium. Xác minh nhị phân của bạn:
/path/to/your/chrome --version
# Chrome for Testing: "Chromium 143.0.7499.4"
# Chrome đã dán nhãn: "Google Chrome 143.0.7499.109" ← sẽ không hoạt động
Nguyên nhân có thể:
--disable-background-networking trong các tham số Chrome (nó sẽ giết các cuộc gọi API ra ngoài của mở rộng)Triệu chứng: Hành động trình duyệt đầu tiên sau khi khởi động Hermes bị thời gian chờ, nhưng các hành động tiếp theo hoạt động tốt.
Nguyên nhân: Giao tiếp CDP khởi động lạnh có thể vượt quá thời gian chờ mặc định của Hermes. Các hành động tiếp theo sử dụng WebSocket đã nóng và nhanh.
Giải pháp: Thử lại lệnh một lần. Nếu vẫn tiếp diễn, tăng browser.inactivity_timeout trong config.yaml.
Triệu chứng: Sau khi chuyển từ phiên bản Chrome này sang phiên bản khác, Chrome bị treo với lỗi bộ nhớ đệm đĩa.
Nguyên nhân: Hồ sơ user-data-dir được tạo bởi phiên bản Chrome khác và giờ không tương thích.
Giải pháp:
# 1. Dừng quá trình chrome-debug hiện tại (bằng cách nào bạn giám sát nó)
pkill -f "remote-debugging-port=9222"
# 2. Xóa hồ sơ lỗi
rm -rf ~/.hermes/chrome-debug
# 3. Khởi động lại chrome-debug (qua quản lý quá trình của bạn, hoặc chạy lại script)
nohup ~/.hermes/chrome-debug.sh > /tmp/chrome-debug.log 2>&1 &
/json/listTriệu chứng: curl http://127.0.0.1:9222/json/list chỉ trả về các mục page, không có service_worker.
Nguyên nhân: Các service worker MV3 của Chrome tạm dừng hoạt động nghiêm ngặt, và trên các phiên bản Chrome gần đây, điểm cuối /json/list có thể không hiển thị chúng hoàn toàn — ngay cả khi chúng đang xử lý sự kiện.
Giải pháp: Điều này không phải là dấu hiệu chẩn đoán. Không nên dựa vào /json/list để xác minh CapSolver đã được tải. Thay vào đó, điều hướng agent đến trang reCAPTCHA thực tế (ví dụ: https://www.google.com/recaptcha/api2/demo) và quan sát xem việc gửi biểu mẫu có thành công không. Một lần gửi thành công chính là bằng chứng mở rộng đã được tải và giải quyết thách thức; một mục bị thiếu trong danh sách mục tiêu không phải là tín hiệu lỗi.
Thời gian chờ dài hơn luôn an toàn hơn. CAPTCHA thường được giải trong 5–20 giây, nhưng độ trễ mạng, thách thức phức tạp hoặc thử lại có thể làm tăng thời gian. 30–60 giây là khoảng thời gian lý tưởng.
Thay vì:
"Đi đến URL, đợi giải CAPTCHA, sau đó gửi"
Sử dụng:
"Đi đến URL, đợi khoảng một phút, sau đó gửi biểu mẫu"
Phát biểu tự nhiên hoạt động tốt hơn với agent và thường thân thiện hơn với các mô hình được điều chỉnh an toàn — việc sử dụng ngôn ngữ đối kháng xung quanh CAPTCHA đã được ghi nhận là làm phát sinh sự từ chối trên một số mô hình lớp GLM.
Mỗi lần giải CAPTCHA sẽ tốn điểm số. Kiểm tra số dư của bạn tại capsolver.com/dashboard thường xuyên để tránh gián đoạn.
Không bao giờ chỉ định --user-data-dir đến hồ sơ Chrome thực tế. Sử dụng ~/.hermes/chrome-debug (mặc định cũng được Hermes /browser connect nhắm đến). Cách này đảm bảo trình duyệt của agent được tách biệt hoàn toàn khỏi trình duyệt cá nhân của bạn.
--remote-debugging-address=127.0.0.1 là bắt buộc trong môi trường sản xuất. Giao thức Phát triển Chrome (CDP) cung cấp quyền kiểm soát toàn bộ trình duyệt cho bất kỳ ai có thể truy cập cổng. Không bao giờ để cổng 9222 mở cho mạng công khai.
Xvfb trên máy chủ không giao diệnMở rộng Chrome yêu cầu môi trường hiển thị, ngay cả khi bạn không muốn xem trình duyệt. Trên máy chủ Linux không có màn hình vật lý, hãy chạy một màn hình ảo:
# Cài đặt Xvfb (Ubuntu/Debian)
sudo apt-get install xvfb
# Khởi động màn hình ảo
Xvfb :99 -screen 0 1920x1080x24 &
# Thông báo cho Chrome sử dụng nó (tệp khởi động chrome-debug.sh ở trên đã thiết lập DISPLAY=:99)
export DISPLAY=:99
Nếu bạn đang sử dụng tệp khởi động chrome-debug.sh từ Bước 3, dòng export DISPLAY=:99 ở đầu đã xử lý điều này — chỉ cần đảm bảo rằng Xvfb :99 đang chạy trên máy chủ.
Một lệnh chrome & không được quản lý sẽ bị dừng khi shell cha kết thúc, khi Chrome treo, hoặc khi máy chủ khởi động lại. Bao bọc lệnh khởi động trong chrome-debug.sh (Bước 3) và giám sát nó bằng bất kỳ công cụ nào bạn đã sử dụng cho phần còn lại của hệ thống — systemd, supervisord, runit, Docker, v.v. Tích hợp này không phụ thuộc vào trình quản lý tiến trình; chọn công cụ đã chạy trên máy chủ.
Vì mô hình không bao giờ nhìn thấy CAPTCHA — mở rộng sẽ giải nó một cách vô hình — bạn không cần mô hình tiên phong cho công việc có nhiều CAPTCHA. Một mô hình giá rẻ có khả năng công cụ là đủ (ví dụ, đặt provider: openrouter và default: z-ai/glm-4.6 trong config.yaml). Tất cả trí tuệ đều nằm trong mở rộng; mô hình chỉ cần điều hướng, nhập và nhấp.
Cơ sở hạ tầng CapSolver đang vận hành tích hợp Hermes đã xử lý các thách thức reCAPTCHA v2/v3, Cloudflare Turnstile và AWS WAF trên các luồng tự động hóa sản xuất — đây không phải là một giải pháp tạm thời được ghép nối cho hướng dẫn này, mà là lớp giải quyết mà các nhóm đã chạy tự động hóa quét và kiểm tra quy mô lớn.
Tích hợp Hermes + CapSolver đại diện cho cách tiếp cận hoàn toàn mới để giải CAPTCHA trong quy trình agent. Thay vì viết mã để phát hiện CAPTCHA, gọi API và chèn token, bạn chỉ cần:
--load-extension=/abs/path/to/capsolver-extension và --remote-debugging-port=9222cdp_url vào khối browser: trong ~/.hermes/config.yaml:
browser:
cdp_url: http://127.0.0.1:9222
cdp_url cấp cao sẽ bị bỏ qua một cách im lặng)Mở rộng Chrome CapSolver sẽ xử lý phần còn lại — phát hiện CAPTCHA, giải chúng thông qua API CapSolver và chèn token vào trang. Agent của bạn không bao giờ cần biết đến CAPTCHA.
Đây là cách giải CAPTCHA khi bạn có một agent AI tự động: vô hình, tự động và không cần mã hóa.
Sẵn sàng bắt đầu chưa? Đăng ký CapSolver và sử dụng mã thưởng
hermeđể nhận thêm số dư cho lần nạp đầu tiên!

Không. Thực tế, bạn nên tránh đề cập đến CAPTCHA hoặc CapSolver trong các thông điệp của mình. Mở rộng hoạt động ẩn trong nền. Chỉ cần thêm thời gian chờ trong hướng dẫn của bạn (ví dụ: "chờ 60 giây, sau đó gửi") để mở rộng có thời gian giải CAPTCHA trên trang.
Chrome 137+ (phát hành giữa năm 2025) đã xóa bỏ hỗ trợ cho cờ dòng lệnh --load-extension trong các bản dựng thương hiệu. Điều này có nghĩa là mở rộng Chrome không thể được tải trong các phiên tự động. Bạn cần Chrome for Testing hoặc Chromium độc lập, vẫn hỗ trợ cờ này.
Không — các nhà cung cấp đám mây chạy trình duyệt trên cơ sở hạ tầng của người khác, vì vậy bạn không thể tải các mở rộng tùy ý vào phiên. Mẫu gắn kết CDP trong hướng dẫn này là cách duy nhất để kết hợp Hermes với mở rộng Chrome. (Khi browser.cdp_url được thiết lập trong config.yaml, Hermes định tuyến lưu lượng trình duyệt qua Chrome cục bộ và các nhà cung cấp đám mây im lặng cho đến khi bạn xóa dòng.)
Có — bất kỳ trình duyệt dựa trên Chromium nào vẫn hỗ trợ --load-extension đều hoạt động. Bạn có thể sử dụng:
npx playwright install)Công thức tích hợp là giống nhau: chỉ định --remote-debugging-port=9222 --load-extension=/path/to/capsolver-extension đến bất kỳ tệp nhị phân nào bạn thích.
Điều không hoạt động:
--load-extension một cách im lặngCó — Camoufox là một trong năm nhà cung cấp trình duyệt tích hợp của Hermes, và là lựa chọn tinh vi dựa trên Firefox cho các tác vụ không liên quan đến mở rộng Chrome. Vấn đề là Camoufox dựa trên Firefox, và mở rộng CapSolver được xây dựng theo định dạng Chrome MV3 — vì vậy hai thứ này không thể chạy cùng nhau trong một phiên.
Tin tốt: Với Hermes, bạn không cần phải chọn vĩnh viễn. Dòng browser.cdp_url trong ~/.hermes/config.yaml là một công tắc — chỉ định nó đến Chrome đã tích hợp CapSolver khi cần giải CAPTCHA, chỉ định đến Camoufox khi cần tính tinh vi của Firefox. Một cấu hình thông thường giữ cả hai chạy:
# Dòng hoạt động: chuyển đổi giữa các hồ sơ bằng cách ghi chú/loại bỏ ghi chú
browser:
cdp_url: http://127.0.0.1:9222 # Chrome CapSolver (hướng dẫn này)
# cdp_url: http://127.0.0.1:9333 # Điểm cuối Camoufox
Sau đó khởi động lại Hermes (hermes gateway run, hoặc kích hoạt khởi động lại thông qua công cụ giám sát gateway trên máy của bạn) và thay đổi sẽ có hiệu lực trong vài giây. Cùng một Hermes, cùng các kênh, cùng kỹ năng — trình duyệt khác nhau cho từng tác vụ.
/browser connect của Hermes có hoạt động với cấu hình này không?Có. Lệnh /browser connect tích hợp của Hermes (trong giao diện TUI hermes tương tác) nhắm đến cùng thư mục dữ liệu người dùng mặc định mà chúng tôi đã sử dụng (~/.hermes/chrome-debug) và cùng cổng (9222). Một khi bạn đã thiết lập sidecar chrome-debug, bạn có thể sử dụng /browser connect từ bên trong Hermes tương tác, hoặc để browser.cdp_url trong config.yaml để gắn kết vĩnh viễn — cả hai đều hoạt động với cùng Chrome.
Tích hợp hoàn toàn không phụ thuộc vào kênh. Một khi browser.cdp_url được thiết lập trong config.yaml, mọi hành động trình duyệt — dù đến từ hermes -z trên CLI, giao diện TUI hermes tương tác, hoặc tin nhắn từ Telegram, Discord, Slack, WhatsApp, Signal hoặc email — đều được định tuyến qua Chrome đã tích hợp CapSolver. Mở rộng giải CAPTCHA giống nhau trong mọi trường hợp.
Sử dụng trang demo chỉ dành cho kiểm tra nhanh. Trong FAQ chính thức của Google reCAPTCHA, họ khuyên tạo các khóa trang kiểm tra riêng biệt cho các bài kiểm tra tự động thay vì dựa vào trang demo công khai trong các luồng sản xuất.
Mở rộng Chrome CapSolver tự động giải reCAPTCHA v2 (hộp kiểm và không hiển thị), reCAPTCHA v3, Cloudflare, AWS WAF CAPTCHA và các widget phổ biến khác. Script nội dung phát hiện loại CAPTCHA trên trang và giải nó tương ứng — không cần cấu hình theo loại. (Lưu ý: Cloudflare Turnstile và Cloudflare 5-second Challenge không được giải bởi mở rộng trình duyệt; chúng chỉ có sẵn qua API CapSolver và nằm ngoài phạm vi hướng dẫn này.)
CapSolver cung cấp giá cả cạnh tranh dựa trên loại CAPTCHA và khối lượng. Truy cập capsolver.com để xem giá hiện tại.
Hermes Agent là mã nguồn mở (github.com/NousResearch/hermes-agent) và miễn phí để chạy trên phần cứng của bạn. Bạn sẽ cần khóa API cho nhà cung cấp mô hình AI bạn chọn (OpenRouter được khuyến khích — Hermes hỗ trợ hơn 200 mô hình qua đó) và, để giải CAPTCHA, một tài khoản CapSolver với số dư.
Đối với hầu hết CAPTCHA, 30–60 giây là đủ. Thời gian giải thực tế thường là 5–20 giây, nhưng thêm thời gian dự phòng đảm bảo độ tin cậy. Nếu không chắc, hãy dùng 60 giây.
Có. Bạn sẽ cần Xvfb (X Virtual Framebuffer) cho màn hình vì mở rộng Chrome yêu cầu môi trường hiển thị. Chạy Xvfb :99 -screen 0 1920x1080x24 & trên máy chủ và đảm bảo DISPLAY=:99 được xuất trong tệp khởi động chrome-debug.sh (tệp khởi động ở Bước 3 đã làm điều này). Cũng nên giữ --no-sandbox trong tham số Chrome vì hầu hết các kernel máy chủ không cấp quyền mà Chrome sandbox yêu cầu.
Về mặt kỹ thuật thì có, nhưng bạn sẽ phải quản lý xung đột tab/phiên tự thân. Đối với hầu hết tác vụ, một Hermes ↔ một chrome-debug là cấu hình sạch sẽ nhất. Nếu bạn cần tính song song thực sự, chạy nhiều sidecar chrome-debug trên các cổng khác nhau (9222, 9223, ...) và chỉ định mỗi Hermes đến riêng mình.
Có. Hermes Skills là trí nhớ quy trình — chuỗi các bước mà agent đã học. Một kỹ năng liên quan đến trang web có CAPTCHA sẽ tự động hưởng lợi từ tích hợp CapSolver giống như một tin nhắn ad-hoc, vì chính công cụ trình duyệt được tăng cường. Không cần thay đổi kỹ năng.
Một bài đánh giá Composio dựa trên bằng chứng bao gồm các phiên, 1.000+ bộ công cụ, xác thực được quản lý, MCP, giá cả, ưu điểm, hạn chế và các lựa chọn thay thế.

Học cách tích hợp CapSolver với Composio, Playwright và SDK Agents của OpenAI để tự động hóa trình duyệt CAPTCHA hình ảnh và reCAPTCHA v2 được ủy quyền.
