Sản phẩmTích hợpTài nguyênTài liệuGiá cả
Bắt đầu ngay

© 2026 CapSolver. All rights reserved.

Liên hệ chúng tôi

Slack: lola@capsolver.com

Sản phẩm

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Tiện ích trình duyệt
  • Thêm nhiều loại CAPTCHA

Tích hợp

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Đối tác
  • Xem tất cả tích hợp

Tài nguyên

  • Chương trình giới thiệu
  • Tài liệu
  • Tham chiếu API
  • Blog
  • Câu hỏi thường gặp
  • Thuật ngữ
  • Trạng thái

Pháp lý

  • Điều khoản dịch vụ
  • Chính sách bảo mật
  • Chính sách hoàn tiền
  • Không bán thông tin cá nhân của tôi
//Cách giải quyết thử thách CAPTCHA cho các tác nhân AI: Trích xuất dữ liệu với n8n, CapSolver và OpenClaw
Mar10, 2026

Cách giải quyết thử thách CAPTCHA cho các tác nhân AI: Trích xuất dữ liệu với n8n, CapSolver và OpenClaw

Anh Tuan

Anh Tuan

Data Science Expert

Trích xuất dữ liệu với n8n, CapSolver và OpenClaw

Cho phép trợ lý AI của bạn kích hoạt trích xuất dữ liệu tự động ở phía máy chủ — không cần chèn trình duyệt, không cần mã.

Thách thức: CAPTCHA cản trở hiệu quả của tác nhân AI của bạn

Khi Tác nhân AI của bạn điều hướng web, CAPTCHA là trở ngại chính. Các trang được bảo vệ chặn tác nhân, biểu mẫu không thể được gửi và các tác vụ bị đình trệ, chờ đợi sự can thiệp của con người. Điều này hạn chế đáng kể hiệu quả và tính tự chủ của các Tác nhân AI trong việc thu thập dữ liệu tự động và xử lý thông tin.

Để giải quyết vấn đề cốt lõi này, chúng tôi cung cấp hai giải pháp mạnh mẽ kết hợp OpenClaw và CapSolver:

Cách tiếp cận 1 — Tích hợp tiện ích mở rộng trình duyệt

Tải tiện ích mở rộng CapSolver Chrome vào môi trường trình duyệt của OpenClaw. Tiện ích mở rộng này phát hiện và giải quyết CAPTCHA một cách vô hình ở phía máy khách, không có sự tham gia của n8n, cho phép Tác nhân AI vượt qua xác minh một cách liền mạch trong khi điều hướng các trang. (Xem hướng dẫn đầy đủ của chúng tôi về cách tiếp cận tiện ích mở rộng)

Cách tiếp cận 2 — Đường ống tự động hóa n8n phía máy chủ (Trọng tâm của Hướng dẫn này)

OpenClaw kích hoạt một yêu cầu webhook duy nhất và n8n sau đó giải quyết CAPTCHA thông qua API CapSolver, gửi biểu mẫu và trả về nội dung trang sạch cho Tác nhân AI của bạn. Trong quá trình này, Tác nhân AI không bao giờ trực tiếp xử lý xác minh CAPTCHA.

Những gì bạn sẽ xây dựng:

Một đường ống tự động hóa CAPTCHA phía máy chủ mà OpenClaw kích hoạt thông qua webhook. n8n sẽ tận dụng CapSolver để giải quyết CAPTCHA, gửi biểu mẫu và trả về nội dung trang đã xử lý cho Tác nhân AI của bạn, đảm bảo thực hiện trơn tru các tác vụ trích xuất dữ liệu.


Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có môi trường và các công cụ sau:

  1. OpenClaw đã được cài đặt và cổng đang chạy (openclaw gateway start)
  2. n8n đang chạy cục bộ — hướng dẫn cài đặt
  3. Tài khoản CapSolver có khóa API — đăng ký tại đây
  4. Nút CapSolver có sẵn trong n8n (tích hợp chính thức — đã được tích hợp sẵn)

Thiết lập CapSolver trong n8n

CapSolver có sẵn dưới dạng tích hợp chính thức trong n8n, không yêu cầu cài đặt thêm nút cộng đồng. Bạn có thể tìm thấy nó trực tiếp trong bảng điều khiển nút khi xây dựng quy trình làm việc của mình. Để cho phép nút CapSolver xác thực với tài khoản của bạn, bạn cần tạo thông tin xác thực trong n8n.

Mở canvas n8n của bạn, nhấp vào + để thêm nút và tìm kiếm CapSolver. Nút này xử lý việc tạo tác vụ, thăm dò ý kiến và truy xuất mã thông báo trong một đơn vị duy nhất.

Các bước để thêm thông tin xác thực của bạn:

  1. Trong n8n, đi tới Credentials → New Credential
  2. Tìm kiếm CapSolver
  3. Dán khóa API của bạn từ bảng điều khiển CapSolver
  4. Lưu

Quan trọng: Mọi nút CapSolver trong quy trình làm việc của bạn sẽ tham chiếu thông tin xác thực này. Bạn chỉ cần tạo nó một lần — tất cả các quy trình làm việc giải quyết CAPTCHA của bạn sẽ chia sẻ cùng một thông tin xác thực. Hơn nữa, CapSolver chính thức cung cấp một kho lưu trữ Kỹ năng GitHub phong phú, nơi bạn có thể khám phá thêm các tích hợp và trường hợp sử dụng liên quan đến CapSolver, mở rộng hơn nữa khả năng của Tác nhân AI của bạn.


Quy trình làm việc: Đường ống tự động hóa CAPTCHA OpenClaw

Mọi thứ bên dưới đều là ví dụ. Các URL, tên trường, loại CAPTCHA, điều kiện thành công, cấu trúc phản hồi — tất cả đều cụ thể cho trang web demo được sử dụng ở đây. Mục tiêu thực sự của bạn sẽ khác. Hãy coi mỗi cấu hình nút là một điểm khởi đầu, không phải là một thiết lập hoàn chỉnh.

Cách thức hoạt động

  1. Webhook — Nhận yêu cầu POST từ OpenClaw (hoặc bất kỳ máy khách HTTP nào).
  2. CapSolver — Giải quyết CAPTCHA bằng cách sử dụng loại tác vụ đã định cấu hình.
  3. Yêu cầu HTTP — Gửi mã thông báo đã giải quyết đến trang web mục tiêu.
  4. Nếu — Kiểm tra xem phản hồi cho biết thành công hay thất bại.
  5. Chỉnh sửa trường — Trích xuất pageText từ phản hồi.
  6. Phản hồi Webhook — Trả về kết quả cho người gọi.
Copy
Webhook ──► Giải quyết CAPTCHA ──► Gửi mã thông báo ──► Thành công? ──► Trích xuất kết quả ──► Phản hồi Webhook
                                                         └─► Đánh dấu thất bại ────┘

Chi tiết cấu hình nút

Tạo một quy trình làm việc mới có tên “OpenClaw/Capsolver/n8n Scraper” với các nút sau:

1. Nút Webhook

  • Loại: Webhook
  • Phương thức HTTP: POST
  • Đường dẫn: openclaw/scrape
  • Phản hồi: Nút phản hồi (làm cho cuộc gọi đồng bộ — người gọi đợi kết quả)

2. Nút CapSolver

  • Loại: CapSolver
  • Loại tác vụ: ReCaptchaV2TaskProxyless
  • URL trang web: https://example.com/protected-page
  • Khóa trang web: YOUR_SITE_KEY (tìm nó trong nguồn trang — tìm data-sitekey)
  • Thông tin xác thực: khóa API CapSolver của bạn

Sử dụng reCAPTCHA v3? Chuyển Loại tác vụ thành ReCaptchaV3TaskProxyless và thêm trường Hành động trang (ví dụ: login, submit, homepage). Điều này là bắt buộc đối với v3 — đó là tên hành động mà trang web đăng ký với Google. Bạn sẽ tìm thấy nó trong nguồn trang gần lệnh gọi grecaptcha.execute(...).

Hãy nhớ rằng mỗi loại CAPTCHA có bộ tham số riêng — một số trường tùy chọn trong v2 trở thành bắt buộc trong v3 và v3 có thể hiển thị các trường hoàn toàn không tồn tại trong v2 (như minScore). Luôn kiểm tra tài liệu CapSolver để biết các tham số chính xác mà Loại tác vụ của bạn yêu cầu.

Nút này gọi API CapSolver, đợi giải quyết (thường là 5–20 giây) và trả về mã thông báo trong $json.data.solution.gRecaptchaResponse.

3. Nút yêu cầu HTTP

  • Phương thức: POST
  • URL: https://example.com/protected-page
  • Nội dung: form-urlencoded
    • g-recaptcha-response = ={{ $json.data.solution.gRecaptchaResponse }}
  • Tiêu đề: tiêu đề trình duyệt tiêu chuẩn (User-Agent, Accept, Referer, Origin, v.v.)

Điều này gửi biểu mẫu với mã thông báo đã giải quyết, chính xác như một trình duyệt sẽ làm.

Chú ý: Cách mã thông báo được gửi khác nhau tùy theo trang web. Hầu hết các biểu mẫu đều mong đợi nó trong phần thân yêu cầu dưới dạng g-recaptcha-response, nhưng một số trang web gửi nó dưới dạng trường JSON, tiêu đề tùy chỉnh hoặc thậm chí là cookie hoặc tên khác. Sử dụng DevTools của trình duyệt của bạn (tab Mạng) để kiểm tra xem một lần gửi thực sự trông như thế nào và phản chiếu điều đó trong nút Yêu cầu HTTP của bạn.

4. Nút Nếu (Kiểm tra thành công)

  • Điều kiện: $json.data chứa "recaptcha-success"
  • Nhánh đúng → Chỉnh sửa trường (thành công)
  • Nhánh sai → Chỉnh sửa trường1 (thất bại)

5. Các nút Chỉnh sửa trường / Chỉnh sửa trường1

Cả hai nhánh đều đặt một trường duy nhất:

  • pageText = {{ $json.data }}

Nhánh thành công và thất bại đều vượt qua pageText — người gọi có thể kiểm tra HTML để xác định kết quả.

Điều chỉnh điều này cho trang của bạn: Cách bạn phân tích cú pháp và sử dụng dữ liệu phản hồi hoàn toàn phụ thuộc vào những gì bạn muốn và những gì trang web mục tiêu trả về. Một số trang trả về JSON, những trang khác trả về HTML, một số chuyển hướng khi thành công. Bạn có thể muốn trích xuất một trường cụ thể, phân tích cú pháp bảng, kiểm tra cookie phiên hoặc loại bỏ hoàn toàn HTML. Điều kiện thành công ("recaptcha-success") cũng chỉ là một ví dụ — trang web của bạn sẽ có chỉ báo riêng. Các nút này là điểm khởi đầu; mong đợi sẽ tùy chỉnh chúng cho trường hợp sử dụng của bạn.

6. Nút Lưu kết quả

Nút này chuyển { pageText, savedAt } tới phản hồi webhook và tùy chọn duy trì kết quả vào bộ nhớ.

Lưu ý: Nút Mã của n8n chạy trong một máy ảo hộp cát chặn các phần tích hợp sẵn của Node.js như require('fs'). Sử dụng nút Thực thi lệnh để ghi vào đĩa hoặc thay thế hoàn toàn nút này bằng bất kỳ tích hợp n8n nào phù hợp với ngăn xếp của bạn.

Tùy chọn A — Tệp JSON cục bộ (Nút Thực thi lệnh):

Sử dụng hai nút được xâu chuỗi với nhau:

Nút 7a — Chuẩn bị dữ liệu (Nút mã):

javascript Copy
const item = $input.first().json;
const now = new Date();
const savedAt = now.toISOString();
const data = { pageText: item.pageText || '', savedAt };
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
const cmd = 'python3 /path/to/save-result.py ' + encoded;
return [{ json: { cmd, pageText: data.pageText, savedAt } }];

Nút 7b — Lưu kết quả (Nút Thực thi lệnh):

  • Lệnh: ={{ $json.cmd }}

Trong đó save-result.py đọc đối số base64 và nối vào tệp JSON cục bộ.

Tùy chọn B — Bất kỳ bộ nhớ nào được n8n hỗ trợ:

n8n có các nút gốc cho hầu hết mọi hệ thống lưu trữ. Thay thế Nút 7 bằng bất kỳ nút nào sau đây:

Bộ nhớ Nút n8n
Google Sheets Nối một hàng với pageText + dấu thời gian
Airtable Tạo một bản ghi
Notion Tạo một mục cơ sở dữ liệu
PostgreSQL / MySQL CHÈN vào một bảng
AWS S3 / Cloudflare R2 Tải lên tệp JSON
Slack / Telegram Đăng kết quả lên một kênh

Chỉ cần kết nối nút giữa Chỉnh sửa trường và Phản hồi Webhook, đồng thời định cấu hình nút để lưu trữ $json.pageText và dấu thời gian.

7. Nút Phản hồi Webhook

  • Phản hồi bằng: JSON
  • Nội dung phản hồi: ={{ JSON.stringify($json) }}
  • Tiếp tục khi thất bại: đã bật

Kích hoạt quy trình làm việc sau khi nó được xây dựng. Đường dẫn webhook sẽ hoạt động tại:

Copy
POST http://127.0.0.1:3005/webhook/openclaw/scrape

Nhập quy trình làm việc này

Sao chép JSON bên dưới và nhập nó vào n8n qua Menu → Import from JSON. Sau khi nhập, hãy chọn thông tin xác thực CapSolver của bạn trong nút Giải quyết CAPTCHA.

Nhấp để mở rộng JSON quy trình làm việc
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## OpenClaw CAPTCHA Automation Pipeline\n\n### How it works\n\n1. Initiates the process with a webhook trigger.\n2. Attempts to solve CAPTCHA using a specialized service.\n3. Submits the CAPTCHA token for validation.\n4. Evaluates whether the token submission was successful.\n5. Sets the result and responds back via the webhook.\n\n### Setup steps\n\n- [ ] Configure the webhook trigger with the desired endpoint URL.\n- [ ] Set up CAPTCHA solving service credentials.\n- [ ] Ensure HTTP request configurations are valid for token submission.\n- [ ] Customize the success and failure response messages.\n\n### Customization\n\nYou can customize the success and failure conditions and responses in the 'Success?' node.",
        "width": 480,
        "height": 656
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1312,
        -352
      ],
      "id": "de683912-ba9c-4879-9a8e-38190c4b236c",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Initialization and CAPTCHA solving\n\nStarts with a webhook trigger and solves the CAPTCHA using an external service.",
        "width": 800,
        "height": 272,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -768,
        -352
      ],
      "id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "openclaw/scrape",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -704,
        -256
      ],
      "id": "b2c3d4e5-f6a7-8901-2345-6789abcdef01",
      "name": "Webhook",
      "webhookId": "c3d4e5f6-a7b8-9012-3456-789abcdef012"
    },
    {
      "parameters": {
        "taskType": "ReCaptchaV2TaskProxyless",
        "websiteUrl": "https://example.com/protected-page",
        "websiteKey": "YOUR_SITE_KEY"
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -480,
        -256
      ],
      "id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
      "name": "Solve CAPTCHA",
      "credentials": {
        "capSolverApi": {
          "id": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://example.com/protected-page",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "g-recaptcha-response",
              "value": "={{ $json.data.solution.gRecaptchaResponse }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        -256,
        -256
      ],
      "id": "f6a7b8c9-d0e1-2345-6789-abcdef012345",
      "name": "Submit Token"
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.data }}",
              "operation": "contains",
              "value2": "recaptcha-success"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        -32,
        -256
      ],
      "id": "a7b8c9d0-e1f2-3456-789a-bcdef0123456",
      "name": "Success?"
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "pageText",
              "value": "={{ $json.data }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        192,
        -352
      ],
      "id": "b8c9d0e1-f2a3-4567-89ab-cdef01234567",
      "name": "Extract Result"
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "pageText",
              "value": "={{ $json.data }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        192,
        -160
      ],
      "id": "c9d0e1f2-a3b4-5678-9abc-def012345678",
      "name": "Mark Failed"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        416,
        -352
      ],
      "id": "d0e1f2a3-b4c5-6789-abcd-ef0123456789",
      "name": "Respond to Webhook"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        416,
        -160
      ],
      "id": "e1f2a3b4-c5d6-789a-bcde-f0123456789a",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Solve CAPTCHA",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve CAPTCHA": {
      "main": [
        [
          {
            "node": "Submit Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Token": {
      "main": [
        [
          {
            "node": "Success?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success?": {
      "main": [
        [
          {
            "node": "Extract Result",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Mark Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Result": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Failed": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

Tích hợp OpenClaw

Để kết nối OpenClaw với quy trình làm việc này, hãy tạo một tập lệnh kích hoạt và đăng ký nó.

Tạo tập lệnh kích hoạt:

bash Copy
cat > ~/.openclaw/scripts/extract-data << 'EOF'
#!/usr/bin/env bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
EOF
chmod +x ~/.openclaw/scripts/extract-data

Đây là điều duy nhất OpenClaw chạy. Không có đối số, không có khóa trang web, không có URL — quy trình làm việc biết những gì cần thu thập.

Cách OpenClaw lấy dữ liệu: Tập lệnh đợi n8n kết thúc (CapSolver giải quyết + gửi biểu mẫu), sau đó nhận trực tiếp { pageText, savedAt } trong phản hồi Webhook. Không liên quan đến việc đọc tệp — dữ liệu quay trở lại đồng bộ qua HTTP. Hình dạng phản hồi chỉ là những gì quy trình làm việc này trả về — nếu bạn cần các trường khác nhau (ví dụ: giá đã phân tích cú pháp, trạng thái đăng nhập, đối tượng JSON có cấu trúc), hãy sửa đổi các nút Chỉnh sửa trường và Lưu kết quả để trả về bất kỳ thứ gì trường hợp sử dụng của bạn yêu cầu.

Đăng ký lệnh trong TOOLS.md:

Mở ~/.openclaw/workspace/TOOLS.md và thêm mục nhập sau để OpenClaw biết về lệnh:

markdown Copy
### extract-data

Chạy: `/root/.openclaw/scripts/extract-data`
Trả về `{ pageText, savedAt }` mới từ đường ống trực tiếp. Trả về trường `pageText` từ phản hồi JSON.

Kiểm tra luồng tự động hóa tác nhân AI của bạn

Kích hoạt từ OpenClaw — gửi lệnh này tới Tác nhân AI của bạn (qua Discord, Telegram, WhatsApp hoặc bất kỳ kênh nào):

Copy
extract data

OpenClaw chạy tập lệnh extract-data, kích hoạt webhook và chờ đợi. n8n giải quyết CAPTCHA, gửi biểu mẫu và trả về { pageText, savedAt } trực tiếp trong phản hồi HTTP. OpenClaw nhận và tóm tắt kết quả — thường trong vòng 10–40 giây.

Kiểm tra từ thiết bị đầu cuối:

bash Copy
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape

Điều chỉnh quy trình làm việc cho trang web mục tiêu của bạn

Quy trình làm việc của hướng dẫn này được xây dựng cho một trang web demo cụ thể. Đối với mục tiêu thực tế của bạn, mọi phần của đường ống có thể yêu cầu điều chỉnh. Đây là những gì cần xem xét:

1. Loại CAPTCHA

Không phải tất cả các trang web đều sử dụng reCAPTCHA v2. Thay đổi Loại tác vụ của nút CapSolver để khớp với những gì mục tiêu sử dụng:

Những gì bạn thấy trên trang web Hoạt động của nút n8n
Hộp kiểm "Tôi không phải là người máy" reCAPTCHA v2
reCAPTCHA vô hình (tự động kích hoạt) reCAPTCHA v2
Điểm reCAPTCHA v3 reCAPTCHA v3
Tiện ích Cloudflare Turnstile Cloudflare Turnstile
Thử thách Cloudflare (trang 5s) Cloudflare Challenge
Câu đố GeeTest (v3) GeeTest V3
Câu đố GeeTest (v4) GeeTest V4
Bảo vệ bot DataDome DataDome
AWS WAF CAPTCHA AWS WAF
MTCaptcha MTCaptcha

Đồng thời cập nhật URL trang web và Khóa trang web để khớp với mục tiêu của bạn. Bạn có thể tìm thấy khóa trang web trong nguồn trang (tìm thuộc tính data-sitekey hoặc tiện ích mở rộng trình duyệt CapSolver tự động phát hiện nó).

2. Cách mã thông báo được gửi

Đây là phần thay đổi nhiều nhất giữa các trang web. Trang web demo sử dụng một POST biểu mẫu đơn giản với mã thông báo trong trường nội dung. Mục tiêu của bạn có thể khác:

Dưới dạng trường biểu mẫu (phổ biến nhất)

Copy
POST /submit
Content-Type: application/x-www-form-urlencoded

g-recaptcha-response=TOKEN&other_field=value

Trong nội dung JSON

Copy
POST /api/login
Content-Type: application/json

{ "username": "...", "password": "...", "captchaToken": "TOKEN" }

Trong một tiêu đề

Copy
POST /api/action
X-Captcha-Token: TOKEN

Dưới dạng cookie

Copy
POST /submit
Cookie: cf_clearance=TOKEN

Trong URL dưới dạng tham số truy vấn

Copy
GET /search?q=query&token=TOKEN

Kiểm tra tab mạng trong công cụ dành cho nhà phát triển của trình duyệt khi bạn giải quyết CAPTCHA theo cách thủ công trên trang web mục tiêu của mình. Tìm kiếm yêu cầu kích hoạt ngay sau khi giải quyết — điều đó cho bạn thấy chính xác mã thông báo đi đến đâu.

3. Nút yêu cầu HTTP

Khi bạn biết cách mã thông báo được gửi, hãy định cấu hình nút Yêu cầu HTTP cho phù hợp:

  • Phương thức: khớp với trang web (POST, GET, PUT)
  • URL: điểm cuối chính xác nhận biểu mẫu hoặc lệnh gọi API
  • Tiêu đề: sao chép tiêu đề trình duyệt từ tab mạng của bạn — User-Agent, Referer, Origin, Accept, Content-Type thường được yêu cầu
  • Nội dung: sử dụng form-urlencoded, JSON hoặc nhiều phần tùy thuộc vào điểm cuối
  • Cookie: nếu trang web sử dụng cookie phiên, hãy chuyển chúng dưới dạng tiêu đề hoặc sử dụng nút Yêu cầu HTTP trước đó để lấy chúng thông qua bước đăng nhập

4. Trích xuất dữ liệu bạn cần

Quy trình làm việc hiện chuyển toàn bộ HTML của phản hồi dưới dạng pageText. Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể muốn xử lý hậu kỳ nó:

  • Thêm nút Mã sau Yêu cầu HTTP để phân tích cú pháp HTML và trích xuất các trường cụ thể (tên sản phẩm, giá cả, trạng thái)
  • Sử dụng nút Trích xuất HTML của n8n để lấy dữ liệu từ các bộ chọn CSS cụ thể mà không cần viết mã
  • Lưu trữ các trường có cấu trúc thay vì HTML thô — dễ truy vấn và so sánh hơn giữa các lần chạy

5. Luồng nhiều bước

Một số mục tiêu yêu cầu nhiều hơn một yêu cầu:

  1. GET trang để lấy mã thông báo CSRF hoặc cookie phiên
  2. Giải quyết CAPTCHA
  3. POST biểu mẫu với mã thông báo CSRF + mã thông báo captcha + thông tin xác thực

Chuỗi nhiều nút Yêu cầu HTTP trong n8n để xử lý việc này. Truyền các giá trị giữa các nút bằng biểu thức $json.


Khắc phục sự cố

"Không thể tiếp cận trình thu thập dữ liệu n8n"

json Copy
{"success": false, "error": "Failed to reach n8n scraper. Is the OpenClaw CAPTCHA Scraper workflow active?"}

Kiểm tra: n8n có đang chạy không? Quy trình làm việc có được kích hoạt không? Mở n8n và xác minh quy trình làm việc đang Hoạt động (chuyển đổi màu xanh lá cây).

Hết thời gian CapSolver / Không có mã thông báo

Nguyên nhân có thể:

  • Khóa API không hợp lệ — kiểm tra ~/.n8n/credentials
  • Số dư không đủ — nạp tiền tại capsolver.com/dashboard
  • Sự cố mạng giữa máy chủ n8n và API CapSolver

pageText trống hoặc chứa trang lỗi

  • URL yêu cầu HTTP hoặc tên trường biểu mẫu có thể sai đối với mục tiêu của bạn
  • Kiểm tra tên trường g-recaptcha-response — một số trang web sử dụng tên trường khác
  • Bật fullResponse: true trong nút Yêu cầu HTTP để xem mã trạng thái

Tham chiếu cấu hình hoàn chỉnh

Tóm tắt các nút quy trình làm việc n8n

Nút Loại Cấu hình chính
Webhook n8n-nodes-base.webhook POST, đường dẫn: openclaw/scrape, responseMode: responseNode
Thu thập trang web n8n-nodes-capsolver.capSolver Tác vụ: ReCaptchaV2TaskProxyless
Yêu cầu HTTP n8n-nodes-base.httpRequest POST tới URL mục tiêu với mã thông báo trong nội dung
Nếu n8n-nodes-base.if Kiểm tra $json.data chứa "recaptcha-success"
Chỉnh sửa trường n8n-nodes-base.set pageText = $json.data
Lưu kết quả n8n-nodes-base.executeCommand hoặc bất kỳ nút lưu trữ nào Duy trì kết quả (tệp, DB, Trang tính, v.v.)
Phản hồi Webhook n8n-nodes-base.respondToWebhook JSON, continueOnFail: true

Các loại tác vụ CAPTCHA

CAPTCHA Hoạt động của nút n8n
reCAPTCHA v2 (hộp kiểm) reCAPTCHA v2
reCAPTCHA v2 (vô hình) reCAPTCHA v2
reCAPTCHA v3 reCAPTCHA v3
Cloudflare Turnstile Cloudflare Turnstile
Thử thách Cloudflare Cloudflare Challenge
GeeTest V3 GeeTest V3
GeeTest V4 GeeTest V4
DataDome DataDome
AWS WAF AWS WAF
MTCaptcha MTCaptcha

Phần kết luận

Đường ống OpenClaw + n8n + CapSolver cung cấp thiết lập trích xuất dữ liệu cấp sản xuất:

  • Chạy theo yêu cầu khi Tác nhân AI của bạn yêu cầu qua webhook.
  • Không bao giờ yêu cầu trình duyệt hoặc màn hình.
  • Giữ cho việc xử lý CAPTCHA hoàn toàn vô hình — đối với bạn và đối với Tác nhân AI.

Tác nhân AI chỉ cần đưa ra lệnh "extract data" và nhận nội dung trang sạch. CapSolver xử lý phần khó khăn, n8n điều phối luồng và OpenClaw đóng vai trò là giao diện.


Sẵn sàng để bắt đầu? Đăng ký CapSolver và sử dụng mã thưởng OPENCLAW để nhận thêm 6% tiền thưởng cho lần nạp tiền đầu tiên của bạn!


Các câu hỏi thường gặp

Tôi có cần nói với OpenClaw về CapSolver hoặc CAPTCHA không?

Không. OpenClaw chỉ cần chạy một tập lệnh kích hoạt yêu cầu HTTP. n8n xử lý mọi thứ khác. Tác nhân AI của bạn không có kiến thức về CAPTCHA — nó chỉ kích hoạt một công việc và đọc kết quả.

Tôi có thể trỏ cái này vào một trang web khác không?

Có, nhưng bạn có thể sẽ cần điều chỉnh nhiều thứ hơn là chỉ URL. Mỗi trang web gửi mã thông báo CAPTCHA theo cách khác nhau — một số sử dụng các trường biểu mẫu, một số nội dung JSON, một số tiêu đề hoặc cookie. Xem phần "Điều chỉnh quy trình làm việc cho trang web mục tiêu của bạn" ở trên để biết bảng phân tích đầy đủ về những gì cần kiểm tra và thay đổi.

Điều gì xảy ra nếu mục tiêu của tôi sử dụng Turnstile thay vì reCAPTCHA?

Thay đổi Loại tác vụ của nút CapSolver thành AntiTurnstileTaskProxyless. Sau đó, kiểm tra các yêu cầu mạng của mục tiêu của bạn để tìm nơi mã thông báo Turnstile được gửi — nó thường nằm trong một trường biểu mẫu ẩn có tên cf-turnstile-response, nhưng một số triển khai chuyển nó trong nội dung JSON, tiêu đề hoặc cookie thay thế.

Có bao nhiêu kết quả được lưu trữ?

Điều đó phụ thuộc vào lựa chọn lưu trữ của bạn. Với tệp JSON cục bộ, bạn có thể giữ bao nhiêu tùy thích. Với Google Sheets hoặc cơ sở dữ liệu, mỗi lần chạy sẽ nối thêm một hàng vô thời hạn. Định cấu hình nút Lưu kết quả để phù hợp với nhu cầu lưu giữ của bạn.

Tôi có thể kích hoạt điều này từ một công việc cron thay vì OpenClaw không?

Có — điểm cuối webhook chỉ là một HTTP POST. Bất cứ thứ gì có thể thực hiện yêu cầu HTTP đều có thể kích hoạt nó:

bash Copy
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape

Mỗi lần trích xuất có giá bao nhiêu?

Mỗi lần chạy tốn một tín dụng CapSolver cho việc giải quyết CAPTCHA. reCAPTCHA v2 là một trong những loại rẻ nhất. Kiểm tra giá hiện tại tại capsolver.com.

OpenClaw có miễn phí không?

OpenClaw là mã nguồn mở và miễn phí để tự lưu trữ. Bạn sẽ cần tín dụng API cho nhà cung cấp mô hình AI của mình và CapSolver để giải quyết CAPTCHA.

Xem thêm

n8nMar 09, 2026

Cách Giải reCAPTCHA v2/v3 Sử Dụng CapSolver và n8n

Xây dựng API giải eCAPTCHA v2/v3 bằng CapSolver và n8n. Tìm hiểu cách tự động hóa việc giải token, gửi token đến website và trích xuất dữ liệu được bảo vệ mà không cần lập trình.

Anh Tuan
Anh Tuan
n8nMar 12, 2026

Cách giải quyết GeeTest V3 trong n8n với CapSolver: Hướng dẫn tích hợp đầy đủ

Hãy tìm hiểu cách tích hợp CapSolver với n8n để giải quyết bài toán GeeTest V3 và xây dựng các quy trình tự động hóa đáng tin cậy.

Emma Foster
Emma Foster
n8nMar 16, 2026

Cách giải bài toán ImageToText bằng CapSolver và n8n

Chuyển đổi ảnh thành văn bản, giải mã captcha, captcha OCR, capsolver, n8n, quy trình làm việc n8n, tự động hóa, API OCR, tự động hóa captcha, ảnh base64, nhận dạng hình ảnh, OCR AI, webhook, quy trình làm việc theo lịch trình, tự động hóa biểu mẫu, bỏ qua captcha, xử lý phiên, captcha không cần proxy, OCR tức thời, nhận dạng văn bản

Sora Fujimoto
Sora Fujimoto
n8nMar 12, 2026

Cách giải GeeTest V4 trong n8n với CapSolver: Hướng dẫn tích hợp hoàn chỉnh

Tìm hiểu cách tích hợp CapSolver với n8n để giải GeeTest V4 và xây dựng quy trình tự động hóa đáng tin cậy.

Sora Fujimoto
Sora Fujimoto

Nội dung

Blog
n8n