
Sora Fujimoto
AI Solutions Architect

CAPTCHA (Kiểm tra Turing công khai tự động để phân biệt máy tính và con người) là một biện pháp bảo mật được thiết kế để phân biệt người dùng con người với các bot tự động. Nó thường đưa ra các thử thách như nhận diện hình ảnh, chữ bị biến dạng hoặc các câu đố tương tác, những điều dễ dàng cho con người nhưng khó khăn cho bot. Mặc dù CAPTCHA bảo vệ các trang web khỏi việc lạm dụng tự động, nhưng nó có thể là một rào cản lớn đối với các hoạt động tự động hóa hợp pháp và quét web.
Trong bài viết này, chúng ta sẽ khám phá cách giải CAPTCHA bằng Playwright với phần mở rộng CapSolver. Ngoài ra, chúng ta cũng sẽ xem xét cách giải reCAPTCHA bằng API của CapSolver với Python và Go.
CAPTCHA là một cơ chế bảo mật được các trang web sử dụng để ngăn truy cập tự động và đảm bảo người dùng là con người. Các loại phổ biến bao gồm:
CapSolver là công cụ mạnh mẽ được thiết kế để tự động giải các loại CAPTCHA khác nhau, bao gồm cả CAPTCHA và reCAPTCHA. Nó cung cấp các phần mở rộng trình duyệt và API để tích hợp liền mạch vào quy trình tự động hóa web của bạn.
Nhận mã khuyến mãi CapSolver
Tăng ngay ngân sách tự động hóa của bạn!
Sử dụng mã khuyến mãi CAPN khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% khuyến mãi cho mỗi lần nạp – không giới hạn.
Nhận mã khuyến mãi ngay tại bảng điều khiển CapSolver của bạn https://dashboard.capsolver.com/dashboard/overview/?utm_source=offcial&utm_medium=blog&utm_campaign=unlimited-captchas-solver
.
Đầu tiên, bạn cần cài đặt Playwright. Bạn có thể làm điều này thông qua npm:
npm install playwright
./CapSolver.Browser.Extension tại gốc dự án của bạn../assets/config.json. Đảm bảo enabledForcaptcha được đặt thành true và đặt captchaMode thành token để giải tự động.Thay đổi cấu hình ví dụ:
{
"enabledForcaptcha": true,
"captchaMode": "token"
}
Dưới đây là đoạn mã ví dụ sử dụng Playwright để giải CAPTCHA với phần mở rộng CapSolver:
const { chromium } = require('playwright');
const path = require('path');
(async () => {
const extensionPath = path.join(__dirname, 'CapSolver.Browser.Extension');
const browser = await chromium.launchPersistentContext('', {
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`
]
});
const page = await browser.newPage();
await page.goto('https://site.example');
// Xác định hộp kiểm CAPTCHA hoặc khung và tương tác tương ứng
await page.waitForSelector('selector-for-captcha', { state: 'visible' });
await page.click('selector-for-captcha');
// Thêm các bước bổ sung theo yêu cầu của bạn
// ...
await browser.close();
})();
Đối với reCAPTCHA, bạn có thể sử dụng API của CapSolver. Dưới đây là các ví dụ bằng Python và Go.
import requests
import time
api_key = "YOUR_API_KEY"
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
site_url = "https://www.google.com/recaptcha/api2/demo"
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Không thể tạo nhiệm vụ:", res.text)
return
print(f"Đã nhận taskId: {task_id} / Đang lấy kết quả...")
while True:
time.sleep(3)
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Giải CAPTCHA thất bại! Trả lời:", res.text)
return
token = capsolver()
print(token)
package main
import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
"time"
)
type capSolverResponse struct {
ErrorId int32 `json:"errorId"`
ErrorCode string `json:"errorCode"`
ErrorDescription string `json:"errorDescription"`
TaskId string `json:"taskId"`
Status string `json:"status"`
Solution map[string]any `json:"solution"`
}
func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
uri := "https://api.capsolver.com/createTask"
res, err := request(ctx, uri, map[string]any{
"clientKey": apiKey,
"task": taskData,
})
if err != nil {
return nil, err
}
if res.ErrorId == 1 {
return nil, errors.New(res.ErrorDescription)
}
uri = "https://api.capsolver.com/getTaskResult"
for {
select {
case <-ctx.Done():
return res, errors.New("thời gian giải CAPTCHA hết hạn")
case <-time.After(time.Second):
break
}
res, err = request(ctx, uri, map[string]any{
"clientKey": apiKey,
"taskId": res.TaskId,
})
if err != nil {
return nil, err
}
if res.ErrorId == 1 {
return nil, errors.New(res.ErrorDescription)
}
if res.Status == "ready" {
return res, err
}
}
}
func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
payloadBytes, err := json.Marshal(payload)
if err != nil {
return nil, err
}
req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
responseData, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
capResponse := &capSolverResponse{}
err = json.Unmarshal(responseData, capResponse)
if err != nil {
return nil, err
}
return capResponse, nil
}
func main() {
apikey := "YOUR_API_KEY"
ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
defer cancel()
res, err := capSolver(ctx, apikey, map[string]any{
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})
if err != nil {
panic(err)
}
fmt.Println(res.Solution["gRecaptchaResponse"])
}
Sử dụng các công cụ như Playwright và CapSolver, bạn có thể tự động hóa việc giải CAPTCHA, giúp các nhiệm vụ quét web và tự động hóa trở nên hiệu quả hơn. Dù bạn đang đối mặt với CAPTCHA hay reCAPTCHA, các phương pháp được nêu trên cung cấp giải pháp mạnh mẽ để vượt qua các thử thách này.
Tính hợp pháp của việc giải CAPTCHA phụ thuộc vào Điều khoản Dịch vụ của trang web, luật địa phương áp dụng và cách bạn sử dụng tự động hóa. CapSolver là công cụ trung lập được thiết kế cho các trường hợp sử dụng hợp pháp như kiểm thử, tự động hóa kiểm tra chất lượng, khả năng truy cập và thu thập dữ liệu được phép. Trước khi triển khai bất kỳ giải pháp nào giải CAPTCHA, bạn nên đảm bảo có sự cho phép từ trang web mục tiêu và việc sử dụng của bạn tuân thủ các quy định liên quan.
CapSolver hỗ trợ nhiều hệ thống CAPTCHA hiện đại, bao gồm nhưng không giới hạn ở:
Hỗ trợ có sẵn thông qua cả phần mở rộng trình duyệt (cho Playwright, Puppeteer, v.v.) và giải pháp dựa trên API cho tự động hóa phía máy chủ.
Sử dụng phần mở rộng CapSolver khi:
Sử dụng API CapSolver khi:
Trong nhiều thiết lập sản xuất, các nhóm thường kết hợp cả hai phương pháp này tùy theo tình huống.
CapSolver được tối ưu hóa để đạt tỷ lệ thành công cao và độ trễ thấp. Trong hầu hết các trường hợp, các thử thách reCAPTCHA v2 được giải trong vài giây, tùy thuộc vào điều kiện mạng và độ phức tạp của nhiệm vụ. Đối với tự động hóa quy mô lớn, CapSolver cũng hỗ trợ đồng thời và lưu lượng ổn định, khiến nó phù hợp cho các quy trình quét web và kiểm thử cấp doanh nghiệp.
Đang gặp phải lỗi "reCAPTCHA Invalid Site Key" hoặc "token reCAPTCHA không hợp lệ"? Khám phá các nguyên nhân phổ biến, các giải pháp từng bước và mẹo khắc phục sự cố để giải quyết các vấn đề xác minh reCAPTCHA thất bại. Học cách sửa lỗi xác minh reCAPTCHA, vui lòng thử lại.

Học cách giải reCAPTCHA v2 bằng Python và API. Hướng dẫn toàn diện này bao gồm các phương pháp Proxy và không dùng Proxy cùng với mã nguồn có thể triển khai cho tự động hóa.
