Xử lý tính năng chống Bot

Các trang web hiện đại sử dụng công nghệ phát hiện bot tiên tiến. Hướng dẫn này giải thích cách FourA xử lý các hệ thống chống bot và cách tối đa hóa tỷ lệ thành công của bạn.

Cách hoạt động của công nghệ phát hiện bot

Các trang web sử dụng nhiều lớp bảo vệ:

  • Danh tiếng IP: Các trung tâm dữ liệu và địa chỉ proxy đã biết sẽ bị chặn
  • Wire fingerprinting: Mỗi HTTP client có một chữ ký handshake độc nhất mà các trang web có thể phát hiện
  • Browser fingerprinting: JavaScript kiểm tra các dấu hiệu của trình duyệt headless
  • Phân tích hành vi: Các mẫu request, thời gian và luồng điều hướng
  • CAPTCHA: Các thử thách hình ảnh đóng vai trò là tuyến phòng thủ cuối cùng

Các nhà cung cấp giải pháp chống bot phổ biến bao gồm Cloudflare, DataDome, PerimeterX và Akamai Bot Manager.

Tuyến đường nhanh nhất: Auto

Nếu bạn chưa biết mức độ bảo vệ, hãy gọi /api/auto/ với một chuỗi con validate.data.accept mà chỉ trang thực sự mới có. Auto sẽ đi qua một thang đo tối ưu chi phí (thăm dò giá rẻ, xoay vòng proxy, kết xuất trình duyệt, trình duyệt qua proxy) và dừng lại ở nấc đầu tiên trả về một response mà các quy tắc của bạn chấp nhận. Trong các lệnh gọi lặp lại tới cùng một host, một phiên đang hoạt động (warm session) sẽ được phát lại, do đó lần gọi thứ hai sẽ rất rẻ.

curl -X POST https://eu.api.foura.ai/api/auto/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
  }'

Nếu không có validate.data.accept, auto không thể phân biệt một phản hồi 200 thực sự với một trang thử thách (challenge interstitial) được trả về với trạng thái 200 và có thể coi thử thách đó là thành công. Xem hướng dẫn Smart Fetch để biết hướng dẫn chi tiết.

Cách FourA hỗ trợ ở từng lớp

Các request ở cấp độ mạng thực tế

endpoint duy nhất (POST /api/single/) phát ra các đặc tính handshake khớp với một trình duyệt thực. Điều này giúp vượt qua các bước kiểm tra mạng phổ biến nhất mà không tốn chi phí chạy toàn bộ trình duyệt.

Bật unblocker để chèn thêm các header trình duyệt thực tế (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker được bật mặc định; chỉ thiết lập false để gửi một chữ ký client (client signature) cơ bản.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Kết xuất bằng trình duyệt thật

Endpoint browser (POST /api/browser/) chạy một phiên bản trình duyệt Chrome đầy đủ. Kết hợp với các bản vá chống phát hiện, nó vượt qua hầu hết các bài kiểm tra fingerprint dựa trên JavaScript. unblocker trên Browser kích hoạt trình giải quyết phòng thủ tự động (vượt qua Turnstile và các cổng tương tự); hãy giữ nguyên trừ khi bạn muốn nhận lại trang thử thách thô.

Xoay vòng proxy

Endpoint proxy (POST /api/proxy/) tự động xoay vòng qua các proxy residential và data center. Nếu một IP bị chặn, lần thử tiếp theo sẽ sử dụng một IP khác. Sử dụng ignoreProxies trong lệnh gọi tiếp theo để bỏ qua các exit bạn đã dùng; dùng maxTries (mặc định 5, tối đa 90) để kiểm soát số lần thử lại.

Các exit được giới hạn theo quốc gia

Truyền exitCountries vào /api/proxy/ để giới hạn lựa chọn ở các proxy có quốc gia hiển thị với mục tiêu khớp với một allowlist nghiêm ngặt. Các giá trị là mã gồm hai chữ cái (["CZ", "GB"]), được cắt bớt khoảng trắng, viết hoa và loại bỏ trùng lặp. FourA không bao giờ dự phòng sang một quốc gia không được yêu cầu; nếu pool hiện tại không có kết quả phù hợp, response sẽ trả về code: "no_eligible_proxy" với phạm vi đã được chuẩn hóa trong details.exitCountries để bạn có thể thử lại sau mà không cần nới lỏng yêu cầu.

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "exitCountries": ["CZ", "GB"],
    "request": {"method": "GET", "url": "https://target.example/pricing"}
  }'

Phản hồi bao gồm exitCountry khi có yêu cầu phân phạm vi. Xác minh rằng nó thuộc allowlist của bạn trước khi tin cậy payload, sau đó sử dụng lại ID proxy được trả về trên bất kỳ lệnh gọi Browser tiếp theo nào để quá trình kết xuất JavaScript diễn ra thông qua cùng một lối ra.

FourA cho bạn biết điều gì đã ngăn chặn bạn

Bạn không cần phải đoán hệ thống nào đã chặn request. Khi mục tiêu chạy quá trình kiểm tra bot, phản hồi sẽ nêu tên hệ thống đó.

  • POST /api/single/POST /api/proxy/ trả về một đối tượng defense: defense.vendor là hệ thống, defense.solved cho biết liệu quá trình kiểm tra đã được vượt qua hay chưa, và defense.present liệt kê mọi thứ được nhận diện trên phản hồi đó.
  • POST /api/browser/ trả về defenseSolved cùng với defenses.presentdefenses.cleared.
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

Có hai quy tắc bắt nguồn từ điều này:

  1. solved: false có nghĩa là body có thể là một challenge, không phải là trang web. FourA không bao giờ nguỵ trang một challenge chưa được giải quyết thành nội dung, vì vậy hãy kiểm tra cờ (flag) trước khi phân tích cú pháp (parsing).
  2. Một giải pháp (solve) mang lại cho bạn quyền truy cập. Khi có defense.cookie, hãy gửi lại nó dưới dạng một header Cookie trên cùng một lối ra (exit) với cùng một User-Agent và các request tiếp theo sẽ bỏ qua hoàn toàn việc kiểm tra.

FourA nhận dạng Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA và challenge riêng của eBay. Việc nhận dạng rộng hơn việc vượt qua (clearing): một hệ thống mà chúng tôi có thể gọi tên nhưng không thể vượt qua sẽ được báo cáo và không bao giờ làm thay đổi chi phí của request. Xem Anti-Bot Defenses để biết mọi trường, sự phân chia giữa vượt qua và phát hiện (clear-versus-detect) hiện tại và một ví dụ về phát lại (replay).

Chiến lược theo mức độ bảo vệ

Bảo vệ không xác định

Sử dụng auto. Tùy chọn này thăm dò bằng phương pháp rẻ nhất trước và chỉ leo thang khi mục tiêu bắt buộc, do đó bạn chỉ trả phí khám phá một lần cho mỗi host.

Bảo vệ mức độ thấp (hầu hết các trang)

Sử dụng endpoint duy nhất với unblocker. Sự trùng khớp cấp độ đường truyền (wire-level) là đủ.

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'

Bảo vệ trung bình (Cloudflare, WAF cơ bản)

Sử dụng endpoint của trình duyệt để vượt qua các thử thách JavaScript:

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'

Mức bảo vệ cao (DataDome, PerimeterX)

Sử dụng proxy endpoint với nhiều lần thử lại:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 10,
    "request": {
      "method": "GET",
      "url": "https://heavily-protected.com/prices",
      "unblocker": true
    }
  }'

Đối với các thử thách WAF liên tiếp (Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager) mà bạn cần trang đã được render sau khi thử thách hoàn tất, hãy xem MCP Recipes. Công thức "Protected page: proxy first, browser when JavaScript is needed" chỉ ra chính xác quá trình chuyển giao từ proxy sang browser.

Best Practices

  1. Bắt đầu với auto cho các mục tiêu không xác định. Truyền một quy tắc validate, để hệ thống tự động chọn engine có chi phí thấp nhất, sau đó đọc meta.rung trong response để xem engine nào đã hoạt động. Khi bạn đã biết, hãy gọi trực tiếp engine đó cho các traffic lặp lại.

  2. Tái sử dụng session đã chiến thắng. Sau một lời gọi auto, session được trả về (proxy ID + cookies + userAgent) có thể được replay thông qua /api/single/ hoặc /api/browser/ cho các trang tiếp theo trên cùng một host, với mức giá của Single.

  3. Tôn trọng rate limit. Ngay cả khi có proxy rotation, việc gửi hàng trăm request mỗi giây đến một trang web duy nhất sẽ kích hoạt phát hiện hành vi. Hãy giãn cách các request của bạn ít nhất từ 1 đến 2 giây.

  4. Giữ unblocker bật. Đối với các request Single, Proxy, và Browser, unblocker: true (mặc định) sẽ tự động inject các header browser thực tế. Chỉ tắt nó đi khi bạn đặc biệt cần một client signature thông thường hoặc một raw challenge page.

  5. Theo dõi tỷ lệ thành công. Kiểm tra các số liệu Dashboard để theo dõi tỷ lệ thành công của bạn theo thời gian. Sự sụt giảm đột ngột thường có nghĩa là trang web mục tiêu đã cập nhật lớp bảo vệ của nó.

  6. Bỏ qua các burned exit. Nếu một lời gọi /api/proxy/ hoặc /api/auto/ trả về một proxy ID mà sau đó bắt đầu gặp lỗi, hãy truyền nó vào ignoreProxies trong lời gọi tiếp theo để FourA chọn một exit khác.

  7. Đọc defense trước khi bạn retry. Tên vendor sẽ cho bạn biết liệu có đáng để thử một browser profile khác hay không, liệu bạn có cần một full render hay không, hoặc liệu quá trình kiểm tra có phải là thứ mà không ai có thể vượt qua mà không cần một solving service.

  8. Thay đổi trình duyệt mà bạn present. Một số mục tiêu chấp nhận trình duyệt này và từ chối trình duyệt khác. Đặt browser, os, hoặc version trên Single và Proxy, và đọc GET /api/profiles cho danh mục hiện tại. Chi tiết có trong endpoint reference.

What FourA Can't Bypass

Một số kịch bản yêu cầu xử lý bổ sung bên ngoài API:

  • Nội dung yêu cầu đăng nhập: FourA không quản lý các phiên đăng nhập dài hạn cho bạn. Browser endpoint chấp nhận cookies trên mỗi request; bạn cần tự truyền session cookie của mình vào.
  • Interactive CAPTCHA: reCAPTCHA và hCaptcha cần một dịch vụ giải mã. FourA nhận diện cả hai và báo cáo chúng trong defense.present, nhưng không tự động giải quyết chúng. Turnstile được xử lý bởi Browser.
  • Nội dung giới hạn địa lý: sử dụng exitCountries trên /api/proxy/ để ghim lựa chọn vào các quốc gia được phép. Các trang web có thêm giới hạn theo ISP hoặc ASN (một số nhà cái được cấp phép tại quốc gia, một số dịch vụ chính phủ nhất định) vẫn có thể chặn các residential exit thông thường; request sẽ trả về no_eligible_proxy khi pool hiện tại không có exit nào phù hợp.
  • Trang web có giới hạn pháp lý: Luôn đảm bảo việc thu thập dữ liệu của bạn tuân thủ các điều khoản dịch vụ của trang web mục tiêu và luật pháp hiện hành.

Bước tiếp theo

Cập nhật: 12 tháng 8, 2026