Cách giải CAPTCHA trên Nanobot bằng CapSolver

Anh Tuan
Data Science Expert
26-Feb-2026

Khi trợ lý AI của bạn tự động hóa các nhiệm vụ trên web, CAPTCHA là rào cản số một. Các trang được bảo vệ sẽ không gửi, quy trình đăng nhập bị treo, và toàn bộ chu trình tự động hóa dừng lại chờ người dùng.
Nanobot là khung phần mềm trợ lý AI cá nhân siêu nhẹ có thể chạy trên phần cứng của bạn. Nó kết nối với các kênh bạn đã sử dụng — WhatsApp, Telegram, Discord, Slack, Email và nhiều hơn nữa — và đi kèm với công cụ exec tích hợp cho phép trợ lý viết và chạy script tự động.
CapSolver cung cấp API giải CAPTCHA được hỗ trợ bởi AI. Bằng cách kết hợp khả năng thực thi script của Nanobot với API REST của CapSolver, trợ lý của bạn có thể phát hiện CAPTCHA, giải chúng, chèn token và gửi biểu mẫu — tất cả mà không cần can thiệp của con người.
Điều tuyệt nhất? Bạn chỉ cần nói với trợ lý điều bạn muốn thực hiện bằng ngôn ngữ thông thường. Nó sẽ viết script Playwright, trích xuất sitekey, gọi CapSolver, chèn token và gửi biểu mẫu — tất cả tự động.
Nanobot là gì?
Nanobot là khung phần mềm trợ lý AI cá nhân với khoảng 3.500 dòng mã Python cốt lõi. Nó được thiết kế để nhẹ, dễ mở rộng và tự lưu trữ.

Tính năng chính
- Hộp thư đa kênh: Giao tiếp với AI của bạn qua WhatsApp, Discord, Telegram, Slack, Email, QQ và nhiều hơn nữa
- Công cụ tích hợp: Trợ lý có thể đọc/viết tệp, thực thi lệnh shell, tìm kiếm trên web, truy xuất trang, gửi tin nhắn qua các kênh và khởi chạy tác vụ nền
- Không phụ thuộc nhà cung cấp: Hoạt động với Anthropic, OpenAI, DeepSeek, Gemini, Qwen, Moonshot, Zhipu, Groq, vLLM và các nhà cung cấp cổng như OpenRouter
- Tập trung vào dữ liệu địa phương: Chạy trên phần cứng của bạn — dữ liệu của bạn sẽ ở lại với bạn
- Hệ thống nhớ: Ghi chú hàng ngày và trí nhớ dài hạn được lưu giữ qua các cuộc trò chuyện
- Hệ thống kỹ năng: Mở rộng với các kỹ năng được tích hợp hoặc tùy chỉnh cho các nhiệm vụ chuyên biệt
Công cụ Exec
Công cụ exec của Nanobot là yếu tố khiến tự động hóa trình duyệt có thể thực hiện được. Trợ lý có thể chạy bất kỳ lệnh shell nào, bao gồm các script Node.js điều khiển trình duyệt không đầu. Khi bạn yêu cầu trợ lý tương tác với một trang web, nó:
- Viết script Playwright
- Chạy nó thông qua công cụ
exec - Đọc đầu ra và hình ảnh chụp màn hình
- Báo cáo kết quả lại cho bạn qua kênh trò chuyện
Hãy tưởng tượng bạn đang cấp quyền truy cập dòng lệnh đầy đủ cho trợ lý AI — nó có thể cài đặt công cụ, viết script và thực thi chúng, tất cả từ một chỉ định bằng ngôn ngữ tự nhiên.
CapSolver là gì?
CapSolver là dịch vụ giải CAPTCHA hàng đầu cung cấp các giải pháp được hỗ trợ bởi AI để vượt qua các thách thức CAPTCHA khác nhau. Với sự hỗ trợ cho nhiều loại CAPTCHA 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.
Các loại CAPTCHA được hỗ trợ
- reCAPTCHA v2 (dựa trên hình ảnh & không hiển thị)
- reCAPTCHA v3 & v3 Enterprise
- Cloudflare Turnstile
- Cloudflare 5-second Challenge
- AWS WAF CAPTCHA
- Các cơ chế CAPTCHA và chống bot phổ biến khác
Tại sao Cách tiếp cận của Nanobot Khác Biệt?
Hầu hết các tích hợp giải CAPTCHA rơi vào hai loại: tích hợp API cấp mã nơi bạn viết một lớp dịch vụ chuyên dụng, hoặc mở rộng trình duyệt nơi một tiện ích mở rộng Chrome xử lý mọi thứ một cách vô hình. Nanobot chọn cách thứ ba: tích hợp API do trợ lý điều khiển.
Trợ lý AI tự mình điều phối toàn bộ quy trình giải CAPTCHA một cách tự động — viết script Playwright, trích xuất sitekey, gọi API CapSolver và chèn token giải pháp — tất cả thông qua các script mà nó viết và thực thi theo yêu cầu.
| Cách tiếp cận bằng tiện ích mở rộng trình duyệt | Cách tiếp cận do trợ lý điều khiển của Nanobot |
|---|---|
| Yêu cầu cài đặt tiện ích mở rộng Chrome | Không cần tiện ích mở rộng — chỉ cần khóa API |
| Cần phiên bản Chrome tương thích | Hoạt động với bất kỳ trình duyệt không đầu nào |
| Tiện ích mở rộng phát hiện CAPTCHA tự động | Trợ lý trích xuất sitekey từ DOM trang |
| Tiện ích mở rộng gọi API ở nền | Trợ lý gọi API REST của CapSolver trực tiếp |
| Yêu cầu màn hình hiển thị (Xvfb trên máy chủ) | Chạy hoàn toàn không đầu, không cần màn hình |
Điểm mấu chốt: Trợ lý của Nanobot không cần tiện ích mở rộng trình duyệt vì nó có thể gọi API CapSolver một cách chương trình, trích xuất sitekey từ DOM trang và chèn token giải pháp — tất cả thông qua các script Playwright mà nó thực thi qua công cụ exec. Điều này hoạt động trong môi trường hoàn toàn không đầu mà không cần thiết lập màn hình.
Yêu cầu tiên quyết
Lưu ý: Các ví dụ dưới đây được kiểm tra trên Ubuntu 22.04 / 24.04. Các lệnh sử dụng
aptvàbash— điều chỉnh cho phân phối của bạn nếu cần.
Trước khi thiết lập tích hợp, hãy đảm bảo bạn có:
- Ubuntu 22.04+ (hoặc bất kỳ Linux dựa trên Debian nào — các phân phối khác hoạt động với các gói tương đương)
- Python 3.11+ đã cài đặt (
sudo apt install python3 python3-pip python3-venv) - Nanobot đã cài đặt và chạy (
pip install nanobot-aihoặcpip install -e ".[dev]") - Tài khoản CapSolver với khóa API (đăng ký tại đây)
- Node.js 18+ đã cài đặt (để chạy script Playwright)
- Playwright đã cài đặt trong không gian làm việc của bạn
Hướng dẫn Thiết lập Bước theo Bước
Bước 1: Cài đặt Nanobot
bash
# Cài đặt từ PyPI
pip install nanobot-ai
# Hoặc cài đặt từ nguồn cho phát triển
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
pip install -e ".[dev]"
# Khởi tạo cấu hình và không gian làm việc
nanobot onboard
Bước 2: Thiết lập Khóa API CapSolver
Thêm khóa API CapSolver của bạn dưới dạng biến môi trường:
bash
export CAPSOLVER_API_KEY="CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Bạn có thể nhận khóa API từ bảng điều khiển CapSolver của mình (https://www.capsolver.com/?utm_source=official&utm_medium=blog&utm_campaign=nanobot).
Để cấu hình bền vững, thêm nó vào hồ sơ shell của bạn (~/.bashrc hoặc ~/.zshrc).
Bước 3: Cài đặt Công cụ Tự động Hóa Trình duyệt
Cài đặt Playwright và các phụ thuộc hệ thống trên Ubuntu:
bash
# Cài đặt phụ thuộc trình duyệt Playwright (Ubuntu)
sudo apt install -y libnss3 libatk-bridge2.0-0 libdrm2 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libasound2t64
# Cài đặt Playwright trong không gian làm việc nanobot
cd ~/.nanobot/workspace
npm init -y
npm install playwright
npx playwright install chromium
Bước 4: Khởi động Cổng
bash
# Khởi động dịch vụ kênh (Telegram, Discord, v.v.)
nanobot gateway
# Hoặc để kiểm tra tương tác
nanobot agent
Bước 5: Xác minh Cài đặt
Gửi một tin nhắn kiểm tra đến trợ lý của bạn qua bất kỳ kênh nào đã kết nối:
Bạn có những công cụ nào sẵn có?
Trợ lý nên liệt kê exec trong số các công cụ của nó — đây là cách nó chạy script tự động hóa trình duyệt.
Kỹ năng CapSolver Tích hợp Sẵn
Nanobot bao gồm một kỹ năng capsolver tích hợp sẵn mà luôn được tải vào prompt hệ thống của trợ lý. Điều này có nghĩa là mỗi lần người dùng gửi tin nhắn, trợ lý đã có tài liệu API CapSolver đúng, loại nhiệm vụ, mẫu mã code và hướng dẫn thực thi trong ngữ cảnh — nó không bao giờ phải đoán hoặc tra cứu.
Cách Kỹ năng Hoạt động trong Nanobot
Kỹ năng là các tệp markdown tại nanobot/skills/{name}/SKILL.md với phần frontmatter YAML. Khi always: true được đặt trong metadata, nội dung kỹ năng đầy đủ được chèn tự động vào prompt hệ thống của trợ lý. Trợ lý không cần gọi read_file — nó chỉ cần biết.
Tệp Kỹ năng (nanobot/skills/capsolver/SKILL.md)
Để cài đặt kỹ năng, tạo tệp nanobot/skills/capsolver/SKILL.md với nội dung sau:
markdown
---
name: capsolver
description: "Giải CAPTCHA bằng API REST của CapSolver với Playwright. Hỗ trợ reCAPTCHA v2, reCAPTCHA v3 và Cloudflare Turnstile. Sử dụng khi tự động hóa việc gửi biểu mẫu hoặc tương tác trang gặp phải thách thức CAPTCHA."
metadata: {"nanobot":{"emoji":"🔓","always":true,"requires":{"bins":["node"],"env":["CAPSOLVER_API_KEY"]}}}
---
# CapSolver
## LƯU Ý: THỰC THI BẮT BUỘC
Khi người dùng yêu cầu bạn giải CAPTCHA, bạn **phải gọi công cụ ngay lập tức**. Đừng trả lời bằng văn bản như "Đang chạy..." hoặc "Tôi sẽ bắt đầu..." hoặc "Tôi đã bắt đầu tự động hóa...".
Hành động đầu tiên của bạn phải là:
1. Gọi `write_file` để lưu script Node.js, sau đó gọi `exec` để chạy nó
2. Gọi `spawn` với mô tả nhiệm vụ chi tiết để thực thi nền
Nếu bạn chỉ trả lời bằng văn bản mà không có gọi công cụ, người dùng sẽ không thấy bất kỳ điều gì xảy ra. Luôn thực thi.
## Các điểm cuối API
- **Tạo nhiệm vụ**: `POST https://api.capsolver.com/createTask`
- **Lấy kết quả**: `POST https://api.capsolver.com/getTaskResult`
## Loại nhiệm vụ
| CAPTCHA | Loại nhiệm vụ | Vị trí sitekey |
|---|---|---|
| reCAPTCHA v2 | `ReCaptchaV2TaskProxyLess` | thuộc tính `data-sitekey` |
| reCAPTCHA v3 | `ReCaptchaV3TaskProxyLess` | cuộc gọi `grecaptcha.execute` hoặc nguồn trang |
| Cloudflare Turnstile | `AntiTurnstileTaskProxyLess` | `data-sitekey` trên div Turnstile |
Phiên bản doanh nghiệp: `ReCaptchaV2EnterpriseTaskProxyLess`, `ReCaptchaV3EnterpriseTaskProxyLess`.
## Quy trình làm việc
1. Điều hướng đến trang bằng Playwright (Chromium không đầu)
2. Trích xuất sitekey từ DOM (`[data-sitekey]` thuộc tính)
3. Gọi `createTask` với sitekey và URL trang
4. Lặp lại `getTaskResult` mỗi 2 giây cho đến khi `status: "ready"`
5. Chèn token vào trang (trường biểu mẫu ẩn)
6. Gửi biểu mẫu
## Mẫu mã cốt lõi
```javascript
const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY;
// Bước 1: Tạo nhiệm vụ
const createRes = await fetch('https://api.capsolver.com/createTask', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
task: {
type: 'ReCaptchaV2TaskProxyLess', // hoặc ReCaptchaV3TaskProxyLess, AntiTurnstileTaskProxyLess
websiteURL: pageUrl,
websiteKey: siteKey
}
})
});
const { taskId } = await createRes.json();
// Bước 2: Lặp lại để lấy kết quả
let token;
while (true) {
await new Promise(r => setTimeout(r, 2000));
const res = await fetch('https://api.capsolver.com/getTaskResult', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clientKey: CAPSOLVER_API_KEY, taskId })
});
const result = await res.json();
if (result.status === 'ready') { token = result.solution.gRecaptchaResponse || result.solution.token; break; }
if (result.status === 'failed') throw new Error('Giải thất bại');
}
// Bước 3: Chèn token (reCAPTCHA)
await page.evaluate((t) => {
document.querySelectorAll('textarea[name="g-recaptcha-response"]')
.forEach(el => { el.value = t; el.innerHTML = t; });
}, token);
```
Đối với Turnstile, trường token thường là `input[name="cf-turnstile-response"]` và giải pháp nằm trong `result.solution.token`.
## Tài liệu API đầy đủ
Xem `{baseDir}/references/api.md` để có tài liệu tham khảo đầy đủ về tham số, trường tùy chọn và phản hồi ví dụ cho tất cả các loại nhiệm vụ.
Điểm chính:
- Cờ
always: trueđảm bảo kỹ năng này được tải vào mỗi cuộc trò chuyện — trợ lý luôn có tài liệu API trong ngữ cảnh - Trường
requireskiểm tra xemnodecó được cài đặt vàCAPSOLVER_API_KEYcó được thiết lập không - Phần "Thực thi Bắt buộc" ngăn trợ lý chỉ mô tả những gì nó sẽ làm — nó buộc gọi công cụ thực tế
Tài liệu API (references/api.md)
Kỹ năng cũng bao gồm tài liệu API đầy đủ mà trợ lý có thể đọc khi cần để có tài liệu tham khảo chi tiết về tham số. Dưới đây là những gì nó bao gồm:
reCAPTCHA v2
Tham số bắt buộc: type, websiteURL, websiteKey
Tham số tùy chọn: isInvisible (Boolean), pageAction (String), recaptchaDataSValue (String), enterprisePayload (Object), apiDomain (String)
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"isInvisible": false
}
}
Token phản hồi: solution.gRecaptchaResponse → chèn vào textarea[name="g-recaptcha-response"]
reCAPTCHA v3
Tham số bắt buộc: type, websiteURL, websiteKey
Tham số tùy chọn: pageAction (String — từ grecaptcha.execute(key, {action: "..."}), các giá trị phổ biến: login, submit, homepage), enterprisePayload (Object), apiDomain (String)
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": "https://www.example.com",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
"pageAction": "login"
}
}
Token phản hồi: solution.gRecaptchaResponse → chèn vào textarea[name="g-recaptcha-response"]
Cloudflare Turnstile
Tham số bắt buộc: type (AntiTurnstileTaskProxyLess), websiteURL, websiteKey
Tham số tùy chọn: metadata.action (String — từ thuộc tính data-action), metadata.cdata (String — từ thuộc tính data-cdata)
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.example.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login",
"cdata": "0000-1111-2222-3333-example-cdata"
}
}
}
Token phản hồi: solution.token → chèn vào input[name="cf-turnstile-response"]
Thời gian giải trung bình
| Loại CAPTCHA | Thời gian giải |
|---|---|
| reCAPTCHA v2 | 1-10 giây |
| reCAPTCHA v3 | 1-10 giây |
| Cloudflare Turnstile | 1-20 giây |
Cách Hoạt động
Khi bạn yêu cầu Nanobot tương tác với trang web bị bảo vệ bởi CAPTCHA, đây là những gì xảy ra bên trong:
Tin nhắn của bạn Trợ lý Nanobot
────────────────────────────────────────────────────
"Đi đến trang đó, ──► Trợ lý nhận được tin nhắn
điền biểu mẫu, │
giải CAPTCHA, ▼
và gửi nó" Trợ lý viết script tự động hóa
│
▼
công cụ exec chạy script
┌─────────────────────────────────┐
│ Chromium không đầu │
│ │
│ 1. Điều hướng đến trang đích │
│ 2. Trích xuất sitekey từ DOM │
│ (thuộc tính data-sitekey) │
│ │
│ 3. Gọi API CapSolver REST: │
│ POST /createTask │
│ POST /getTaskResult (poll) │
│ │
│ 4. Chèn token vào các trường │
│ textarea/input ẩn │
│ │
│ 5. Nhấn Submit │
│ 6. Xác minh thành công │
│ 7. Chụp màn hình │
└─────────────────────────────────┘
│
▼
Agent đọc đầu ra + ảnh chụp màn hình
│
▼
"Biểu mẫu đã được gửi thành công!
Trang hiển thị: Xác minh
Thành công... Hooray!"
### Luồng API của CapSolver
Nội dung cốt lõi của tích hợp là hai cuộc gọi API:
**1. Tạo một nhiệm vụ** — Gửi sitekey CAPTCHA và URL trang web đến CapSolver:
```javascript
const response = await fetch('https://api.capsolver.com/createTask', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
task: {
type: 'ReCaptchaV2TaskProxyLess',
websiteURL: pageUrl,
websiteKey: siteKey
}
})
});
2. Kiểm tra kết quả — Kiểm tra mỗi 2 giây cho đến khi CapSolver trả về token đã giải:
javascript
const result = await fetch('https://api.capsolver.com/getTaskResult', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
taskId: taskId
})
});
// result.solution.gRecaptchaResponse chứa token
3. Chèn token — Thiết lập nó vào trường biểu mẫu ẩn mà reCAPTCHA mong đợi:
javascript
await page.evaluate((token) => {
const textarea = document.querySelector('textarea[name="g-recaptcha-response"]');
if (textarea) {
textarea.value = token;
textarea.innerHTML = token;
}
}, captchaToken);
Ví dụ Hoạt động Hoàn chỉnh
Đây là đoạn mã thực tế mà agent của Nanobot tạo ra và thực thi để giải CAPTCHA trên trang demo của Google. Agent viết đoạn mã này bằng write_file, sau đó chạy nó với exec — tất cả tự động từ một tin nhắn Discord:
javascript
const { chromium } = require('playwright');
const https = require('https');
const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY;
const PAGE_URL = 'https://www.google.com/recaptcha/api2/demo';
function httpsPost(url, data) {
return new Promise((resolve, reject) => {
const req = https.request(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' }
}, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => resolve(JSON.parse(body)));
});
req.on('error', reject);
req.write(JSON.stringify(data));
req.end();
});
}
async function solveRecaptcha(siteKey, pageUrl) {
console.log('Tạo nhiệm vụ Capsolver...');
const createRes = await httpsPost('https://api.capsolver.com/createTask', {
clientKey: CAPSOLVER_API_KEY,
task: {
type: 'ReCaptchaV2TaskProxyLess',
websiteURL: pageUrl,
websiteKey: siteKey
}
});
const { taskId } = createRes;
console.log(`ID nhiệm vụ: ${taskId}`);
let token;
while (true) {
await new Promise(r => setTimeout(r, 2000));
const res = await httpsPost('https://api.capsolver.com/getTaskResult', {
clientKey: CAPSOLVER_API_KEY,
taskId
});
if (res.status === 'ready') {
token = res.solution.gRecaptchaResponse;
console.log(`Token nhận được! Độ dài: ${token.length}`);
break;
}
if (res.status === 'failed') {
throw new Error('Nhiệm vụ Capsolver thất bại');
}
}
if (!token) throw new Error('Không thể nhận token');
return token;
}
async function main() {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
console.log('Đang điều hướng đến trang...');
await page.goto(PAGE_URL, { waitUntil: 'domcontentloaded', timeout: 30000 });
console.log('Trích xuất sitekey...');
const siteKey = await page.locator('[data-sitekey]').getAttribute('data-sitekey');
console.log(`Sitekey: ${siteKey}`);
console.log('Giải CAPTCHA bằng Capsolver...');
const token = await solveRecaptcha(siteKey, PAGE_URL);
console.log('Chèn token...');
await page.evaluate((t) => {
document.querySelectorAll('textarea[name="g-recaptcha-response"])
.forEach(el => { el.value = t; el.innerHTML = t; });
}, token);
console.log('Gửi biểu mẫu...');
await page.locator('input[type="submit"]').click();
console.log('Chờ kết quả...');
await page.waitForTimeout(3000);
const successText = await page.textContent('body');
if (successText.includes('Thành công') || successText.includes('Xác minh')) {
console.log('\n✅ THÀNH CÔNG! CAPTCHA đã được giải và biểu mẫu đã được gửi!');
console.log('Thông báo thành công:', successText.slice(0, 200));
} else {
console.log('\n❌ Kết quả không rõ ràng. Nội dung trang:', successText.slice(0, 300));
}
await page.screenshot({ path: 'recaptcha_result.png' });
console.log('Ảnh chụp màn hình được lưu tại recaptcha_result.png');
await browser.close();
}
main().catch(console.error);
Chạy nó:
bash
CAPSOLVER_API_KEY=CAP-XXX node solve_recaptcha.js
Cách Sử dụng với Nanobot
Sau khi cài đặt xong, sử dụng CapSolver với Nanobot đơn giản chỉ cần gửi một tin nhắn.
Ví dụ 1: Giải CAPTCHA Demo
Gửi tin nhắn này đến agent của bạn qua Telegram, Discord, WhatsApp, hoặc bất kỳ kênh nào đã kết nối:
Truy cập https://www.google.com/recaptcha/api2/demo và giải CAPTCHA
bằng API CapSolver, sau đó gửi biểu mẫu
và cho tôi biết liệu nó có thành công không.
Các bước thực hiện:
- Agent tạo một đoạn mã Playwright
- Đoạn mã điều hướng đến trang và trích xuất sitekey CAPTCHA từ DOM
- Gọi API
createTaskcủa CapSolver với sitekey - Kiểm tra
getTaskResultmỗi 2 giây cho đến khi token sẵn sàng (~18 giây) - Chèn token vào trường
g-recaptcha-responseẩn - Nhấn Submit và kiểm tra thành công
- Agent báo cáo lại: "Biểu mẫu đã được gửi thành công! Trang hiển thị: Xác minh
Thành công... Hooray!"
Ví dụ 2: Đăng nhập vào trang được bảo vệ
Truy cập https://example.com/login, điền email là
"[email protected]" và mật khẩu là "mypassword", phát hiện và
giải bất kỳ CAPTCHA nào trên trang,
sau đó nhấn Đăng nhập và cho tôi biết điều gì xảy ra.
Ví dụ 3: Gửi biểu mẫu liên hệ
Mở https://example.com/contact, điền vào các trường tên, email và
nội dung, giải CAPTCHA, gửi biểu mẫu và cho tôi biết
thông báo xác nhận.
Tại sao điều này hoạt động
Vì agent của Nanobot có:
- Công cụ
exec— chạy bất kỳ lệnh shell nào, bao gồm cả các đoạn mã Node.js - Công cụ
web_fetch— truy xuất nội dung trang để hiểu cấu trúc trang - Công cụ tệp — có thể ghi, chỉnh sửa và đọc các đoạn mã tự động hóa
- Bộ nhớ — ghi nhớ các phương pháp làm việc cho các nhiệm vụ tương lai
- Kỹ năng tích hợp
capsolver— luôn được nạp vào ngữ cảnh của agent (xem Kỹ năng CapSolver tích hợp phía trên), bao gồm các loại nhiệm vụ, mẫu mã, tài liệu tham khảo API và hướng dẫn thực thi đảm bảo agent tạo và chạy các đoạn mã thay vì chỉ mô tả những gì nó sẽ làm
Cơ chế Thử lại khi bị ảo tưởng: Đảm bảo agent thực hiện hành động
Một thách thức với các agent dựa trên LLM là một số mô hình trả lời bằng văn bản như "Đang chạy tự động hóa ngay bây giờ..." mà không thực sự gọi bất kỳ công cụ nào. Người dùng thấy một tin nhắn dường như tiến triển, nhưng không có hành động nào xảy ra phía sau.
Nanobot giải quyết vấn đề này bằng cơ chế thử lại khi bị ảo tưởng được tích hợp vào vòng lặp agent. Khi LLM trả lời bằng văn bản trong lần lặp đầu tiên và nội dung đó chứa các cụm từ hành động như "đang chạy ngay bây giờ", "tôi đã bắt đầu", hoặc "đang thực thi" — nhưng không thực hiện bất kỳ cuộc gọi công cụ nào, Nanobot phát hiện điều này và tự động gửi một tin nhắn sửa đổi:
"Bạn đã mô tả bắt đầu một nhiệm vụ nhưng không gọi bất kỳ công cụ nào. Người dùng không thể thấy tiến trình của bạn trừ khi bạn sử dụng các công cụ như exec, write_file hoặc spawn. Vui lòng gọi công cụ phù hợp ngay bây giờ để thực hiện nhiệm vụ."
LLM sau đó thử lại và gọi công cụ thực tế (ví dụ: spawn để khởi chạy một nhiệm vụ tự động hóa nền). Điều này xảy ra một cách tự động — người dùng chỉ thấy kết quả xuất hiện vài giây sau.
Đây là tính năng chung của Nanobot giúp cải thiện độ tin cậy cho tất cả các nhiệm vụ sử dụng công cụ, không chỉ riêng giải CAPTCHA.
Thay đổi Mã Đề xuất
Để kích hoạt cơ chế thử lại khi bị ảo tưởng và các cải tiến độ tin cậy khác, áp dụng ba thay đổi sau vào cài đặt Nanobot của bạn:
1. Thử lại khi bị ảo tưởng (nanobot/agent/loop.py)
Trong phương thức _process_message, thay nhánh else xử lý các phản hồi không gọi công cụ:
python
else:
# Không có cuộc gọi công cụ — nhưng kiểm tra xem LLM có mô tả hành động mà không gọi công cụ không
if iteration == 1 and self._seems_like_hallucinated_action(response.content):
logger.warning("LLM mô tả hành động mà không gọi công cụ — đang thử lại với thông báo sửa đổi")
messages.append({"role": "assistant", "content": response.content})
messages.append({
"role": "user",
"content": (
"[Hệ thống: Bạn đã mô tả bắt đầu một nhiệm vụ nhưng không gọi bất kỳ công cụ nào. "
"Người dùng không thể thấy tiến trình của bạn trừ khi bạn sử dụng các công cụ như exec, "
"write_file hoặc spawn. Vui lòng gọi công cụ phù hợp ngay bây giờ để "
"thực hiện nhiệm vụ.]"
),
})
continue
final_content = response.content
break
Và thêm phương thức phát hiện này vào lớp AgentLoop:
python
@staticmethod
def _seems_like_hallucinated_action(content: str | None) -> bool:
"""Phát hiện xem LLM có mô tả bắt đầu một hành động mà không gọi công cụ không."""
if not content:
return False
lower = content.lower()
phrases = [
"đang chạy ngay bây giờ", "tôi đã bắt đầu", "tôi sẽ bắt đầu", "bắt đầu nhiệm vụ",
"tôi đã bắt đầu", "tôi sẽ bắt đầu", "đang thực thi", "tôi đang xử lý",
"hãy để tôi chạy", "đang chạy", "tôi đã khởi động", "đã khởi chạy",
"tôi đã khởi tạo", "đang xử lý",
]
return any(phrase in lower for phrase in phrases)
2. Kỹ năng trong Subagent (nanobot/agent/subagent.py)
Không có thay đổi này, các subagent được khởi chạy qua công cụ spawn sẽ không có kỹ năng capsolver trong ngữ cảnh của chúng. Thêm import và chèn kỹ năng luôn được nạp vào prompt subagent:
python
# Thêm import
from nanobot.agent.skills import SkillsLoader
# Trong __init__, thêm:
self._skills = SkillsLoader(workspace)
# Cuối cùng của _build_subagent_prompt(), trước khi return:
always_skills = self._skills.get_always_skills()
if always_skills:
skills_content = self._skills.load_skills_for_context(always_skills)
if skills_content:
prompt += f"\n\n## Tài liệu tham khảo\n\n{skills_content}"
return prompt
3. Thời gian chờ exec (nanobot/config/schema.py)
Các đoạn mã tự động hóa trình duyệt cần nhiều hơn 60 giây mặc định — việc kiểm tra API CapSolver có thể mất 20 giây trở lên. Tăng thời gian chờ:
python
class ExecToolConfig(BaseModel):
"""Cấu hình công cụ exec shell."""
timeout: int = 120 # trước đây là 60
Sau khi áp dụng các thay đổi này, khởi động lại Nanobot (pm2 restart nanobot hoặc chạy lại dịch vụ.
Kết quả Hiệu suất
Chúng tôi đã kiểm tra tích hợp này trên trang demo reCAPTCHA v2 của Google. Dưới đây là các kết quả thực tế từ lần chạy thử nghiệm của chúng tôi:
| Chỉ số | Giá trị |
|---|---|
| Tư duy của agent + tạo mã | ~10 giây |
| Thực thi mã (tổng cộng) | ~34 giây |
| Tải trang (domcontentloaded) | ~2 giây |
| Trích xuất sitekey | < 1 giây |
| Giải CAPTCHA (API CapSolver) | ~20 giây |
| Chèn token + gửi biểu mẫu | ~3 giây |
| Xác minh thành công + chụp màn hình | ~3 giây |
| Toàn bộ (tin nhắn → phản hồi) | ~45 giây |
| Kết quả | Xác minh thành công |
Agent đã lưu một ảnh chụp màn hình cuối cùng (recaptcha_result.png) hiển thị trang thành công sau khi gửi biểu mẫu.
Xử lý Sự cố
"Không thể tìm thấy module 'playwright'"
Playwright chưa được cài đặt trong không gian làm việc. Chạy:
bash
cd ~/.nanobot/workspace && npm install playwright && npx playwright install chromium
Thư viện trình duyệt bị thiếu trên Ubuntu
Nếu Chromium không thể khởi chạy với các lỗi về thư viện chia sẻ bị thiếu, cài đặt các thư viện hệ thống:
bash
sudo apt install -y libnss3 libatk-bridge2.0-0 libdrm2 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libasound2t64
Thời gian chờ giải CAPTCHA
- Kiểm tra xem khóa API CapSolver của bạn có hợp lệ không
- Kiểm tra số dư tài khoản CapSolver tại capsolver.com/dashboard
- Đoạn mã kiểm tra mỗi 2 giây cho đến khi CapSolver trả về
readyhoặcfailed— nếu nó treo, kiểm tra khóa API và số dư của bạn
sitekey không tìm thấy
Đoạn mã trích xuất sitekey từ thuộc tính data-sitekey trên phần tử DOM reCAPTCHA. Nếu không tìm thấy phần tử nào có data-sitekey, trang có thể nhúng khóa theo cách khác — agent có thể viết một đoạn mã sửa đổi để trích xuất nó từ URL iframe hoặc nguồn trang khi cần.
Trình duyệt bị treo trong Docker/containers
Thêm các cờ này vào tùy chọn khởi chạy Playwright:
javascript
chromium.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage']
});
Agent không sử dụng CapSolver
Đảm bảo biến môi trường CAPSOLVER_API_KEY được thiết lập trước khi khởi chạy Nanobot. Agent kiểm tra nó khi chạy script.
Nguyên Tắc Tốt
1. Thiết lập khóa API dưới dạng biến môi trường
Không nên ghi cứng khóa trong script. Sử dụng process.env.CAPSOLVER_API_KEY để agent có thể tự động nhận được.
2. Sử dụng chế độ không đầu (headless) trên máy chủ
Cách tiếp cận API của Nanobot hoạt động trong môi trường hoàn toàn không đầu — không cần Xvfb hoặc màn hình ảo. Đây là lợi thế lớn so với các cách tiếp cận dựa trên tiện ích mở rộng.
3. Giám sát số dư CapSolver
Mỗi lần giải CAPTCHA sẽ tiêu tốn tín dụng. Hãy kiểm tra số dư của bạn thường xuyên tại capsolver.com/dashboard.
4. Cập nhật Playwright
Các nhà cung cấp CAPTCHA liên tục phát triển. Hãy cập nhật Playwright và Chromium để tránh các vấn đề phát hiện:
bash
cd ~/.nanobot/workspace && npm update playwright && npx playwright install chromium
Kết luận
Tích hợp Nanobot + CapSolver tiếp cận vấn đề CAPTCHA theo cách hoàn toàn khác so với các giải pháp dựa trên tiện ích mở rộng. Thay vì tải tiện ích mở rộng Chrome, trí tuệ nhân tạo (AI) sẽ điều phối toàn bộ quy trình giải CAPTCHA:
- Truy cập trang đích bằng Playwright
- Trích xuất sitekey từ thuộc tính
data-sitekey - Giải bằng cách gọi API REST của CapSolver trực tiếp
- Chèn mã giải vào trường ẩn
- Gửi biểu mẫu và xác minh thành công
Điều này mang lại cho bạn:
- Không cần phụ thuộc vào tiện ích mở rộng Chrome — hoạt động với bất kỳ trình duyệt không giao diện nào
- Hỗ trợ máy chủ không giao diện — không cần màn hình hoặc Xvfb
- Kiểm soát bằng ngôn ngữ tự nhiên — chỉ cần nói với trợ lý điều bạn muốn thực hiện
Sẵn sàng bắt đầu? Đăng ký CapSolver và sử dụng mã thưởng NANOBOT để nhận thêm 6% thưởng cho lần nạp đầu tiên!

Câu hỏi thường gặp
Nanobot giải CAPTCHA khác gì so với tiện ích mở rộng trình duyệt?
Nanobot sử dụng trực tiếp API REST của CapSolver. Trí tuệ nhân tạo viết và thực thi các tập lệnh gọi createTask và getTaskResult để nhận mã giải, sau đó chèn chúng vào DOM trang. Không cần tiện ích mở rộng trình duyệt.
Bạn có cần phiên bản Chrome đặc biệt không?
Không. Khác với các phương pháp dựa trên tiện ích mở rộng yêu cầu Chrome for Testing (vì Chrome có thương hiệu 137+ đã vô hiệu hóa việc tải tiện ích mở rộng), Nanobot hoạt động với bất kỳ bản Chromium nào — bao gồm Chromium được tích hợp trong Playwright, các gói Chromium tiêu chuẩn, hoặc thậm chí Chrome không giao diện.
CapSolver hỗ trợ loại CAPTCHA nào?
CapSolver hỗ trợ reCAPTCHA v2 (hộp kiểm và ẩn), reCAPTCHA v3, Cloudflare Turnstile, AWS WAF CAPTCHA, và nhiều loại khác. Chúng tôi đã kiểm tra tích hợp Nanobot với reCAPTCHA v2 sử dụng loại nhiệm vụ ReCaptchaV2TaskProxyLess. Đối với các loại CAPTCHA khác, trí tuệ nhân tạo có thể viết tập lệnh sử dụng loại nhiệm vụ CapSolver phù hợp — xem tài liệu CapSolver để xem danh sách đầy đủ.
Bạn có thể sử dụng điều này trên máy chủ không giao diện không?
Có — và đây chính là điểm mạnh của cách tiếp cận Nanobot. Vì không có tiện ích mở rộng trình duyệt, bạn không cần Xvfb hoặc màn hình ảo. Playwright chạy ở chế độ không giao diện hoàn toàn.
Chi phí của CapSolver là bao nhiêu?
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.
Nanobot có miễn phí không?
Nanobot là mã nguồn mở và miễn phí để chạy trên phần cứng của bạn. Bạn sẽ cần khóa API từ nhà cung cấp mô hình AI bạn chọn và, để giải CAPTCHA, một tài khoản CapSolver với tín dụng.
Thời gian giải CAPTCHA mất bao lâu?
Trong thử nghiệm với reCAPTCHA v2, API CapSolver trả về kết quả trong khoảng 20 giây. Trí tuệ nhân tạo kiểm tra mỗi 2 giây và tiếp tục ngay khi mã token sẵn sàng. Thời gian thực thi tập lệnh tổng thể (truy cập + giải + chèn + gửi) là khoảng 34 giây, và thời gian toàn bộ từ tin nhắn đến phản hồi là khoảng 45 giây bao gồm cả việc trí tuệ nhân tạo viết tập lệnh.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Cách giải CAPTCHA trên Nanobot bằng CapSolver
Tự động hóa việc giải CAPTCHA với Nanobot và CapSolver. Sử dụng Playwright để giải reCAPTCHA và Cloudflare tự động.

Anh Tuan
26-Feb-2026

Dữ liệu dưới dạng dịch vụ (DaaS): Nó là gì và tại sao nó quan trọng vào năm 2026
Hiểu về Dịch vụ Dữ liệu (DaaS) vào năm 2026. Khám phá lợi ích, trường hợp sử dụng và cách nó thay đổi doanh nghiệp với phân tích thời gian thực và tính mở rộng.

Emma Foster
12-Feb-2026

Cách sửa các lỗi thu thập dữ liệu web phổ biến vào năm 2026
Nắm vững việc sửa chữa các lỗi trình gỡ mã web đa dạng như 400, 401, 402, 403, 429, 5xx, và Cloudflare 1001 vào năm 2026. Học các chiến lược tiên tiến về chuyển đổi IP, tiêu đề, và giới hạn tốc độ thích ứng với CapSolver.

Nikolai Smirnov
05-Feb-2026

Cách khắc phục bảo vệ Cloudflare khi quét web
Học cách giải quyết bảo vệ Cloudflare khi quét dữ liệu web. Khám phá các phương pháp đã được chứng minh như xoay đổi IP, tinh vân TLS và CapSolver để xử lý các thách thức.

Nikolai Smirnov
05-Feb-2026

Cách giải Captcha trong RoxyBrowser với tích hợp CapSolver
Tích hợp CapSolver với RoxyBrowser để tự động hóa các nhiệm vụ trình duyệt và vượt qua reCAPTCHA, Turnstile và các CAPTCHA khác.

Anh Tuan
04-Feb-2026

Cách giải reCAPTCHA v2 trong Relevance AI với tích hợp CapSolver
Xây dựng một công cụ AI của Relevance để giải quyết reCAPTCHA v2 bằng CapSolver. Tự động hóa việc gửi biểu mẫu qua API mà không cần tự động hóa trình duyệt.

Anh Tuan
03-Feb-2026

