So Sánh

Kiểm tra tính toàn vẹn của trình duyệt Cloudflare so với thử thách CAPTCHA

Cloudflare cung cấp hai biện pháp bảo vệ riêng biệt mà các nhà phát triển thường kết hợp: Kiểm tra tính toàn vẹn của trình duyệt (BIC)thử thách CAPTCHA. BIC là một kiểm tra cấp tiêu đề, thụ động, chặn lưu lượng truy cập không phải của trình duyệt mà không gặp bất kỳ thách thức nào — nó chỉ trả về 403. Các thử thách CAPTCHA (Turnstile, thử thách JavaScript, Thử thách được quản lý) đưa ra một nhiệm vụ có thể giải quyết được mà các trình duyệt hợp pháp có thể vượt qua. Sự khác biệt rất quan trọng vì mỗi loại yêu cầu một chiến lược xử lý khác nhau.


Họ so sánh như thế nào

tính năng Kiểm tra tính toàn vẹn của trình duyệt Thử thách CAPTCHA
Nó kiểm tra những gì Chỉ tiêu đề HTTP Hành vi trình duyệt + môi trường
Yêu cầu phải có JavaScript? Không (cấp tiêu đề)
Người dùng nhìn thấy Không có gì (đạt) hoặc 403 (không đạt) Tiện ích thử thách hoặc trang JS
Trạng thái HTTP không thành công 403 503
Có thể giải quyết được? Không - sửa tiêu đề nếu không nó sẽ chặn Có — giải CAPTCHA
Đã phát hành cookie Không <staging-session-cookie>
Cần CaptchaAI? Không - sửa tiêu đề yêu cầu
Bật mặc định Có (tất cả các gói Cloudflare) Không (được định cấu hình theo quy tắc)
Áp dụng cho Mọi yêu cầu Chỉ phù hợp với quy tắc WAF

Kiểm tra tính toàn vẹn của trình duyệt (BIC)

BIC đánh giá các tiêu đề yêu cầu HTTP để phát hiện lưu lượng truy cập không phải trình duyệt. Nó chạy trước bất kỳ thử thách JavaScript hoặc CAPTCHA nào.

BIC kiểm tra những gì

Kiểm tra Nó tìm kiếm cái gì Những hư hỏng thường gặp
Xác thực tác nhân người dùng UA bị thiếu, trống hoặc UA đã biết là xấu python-requests/2.31, cuộn tròn, wget
Thứ tự tiêu đề Tiêu đề có thứ tự bất thường Thư viện HTTP không phải trình duyệt
Thiếu tiêu đề trình duyệt Thiếu Accept, Accept-Language, Accept-Encoding Máy khách HTTP tối thiểu
Chữ ký bot đã biết UA gửi thư rác, UA quét Googlebot từ các IP không phải của Google
Lạm dụng danh sách đen IP IP độc hại đã biết IP trung tâm dữ liệu trên danh sách chặn

dòng chảy BIC

Request hits Cloudflare edge
    ↓
BIC evaluates HTTP headers:
  ├─ User-Agent present and valid?
  ├─ Required headers (Accept, Accept-Language) present?
  ├─ Header order consistent with browser?
  └─ IP not on abuse list?
    ↓
Pass → Request forwarded to origin
    OR
Fail → 403 Forbidden (no challenge offered)

Đậu BIC

BIC được giải quyết bằng cách gửi các tiêu đề giống trình duyệt thích hợp. Không cần giải pháp CAPTCHA:

import requests

# ❌ FAILS BIC — minimal headers
response = requests.get("https://cloudflare-protected.com")
# User-Agent: python-requests/2.31.0
# Result: 403 Forbidden

# ✅ PASSES BIC — browser-like headers
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/120.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,"
              "image/avif,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",
}

response = requests.get("https://cloudflare-protected.com", headers=headers)
# Result: 200 OK (passed BIC)

Node.js

const axios = require("axios");

// Browser-like headers to pass BIC
const headers = {
  "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0",
  Accept:
    "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,*/*;q=0.8",
  "Accept-Language": "en-US,en;q=0.9",
  "Accept-Encoding": "gzip, deflate, br",
  Connection: "keep-alive",
  "Upgrade-Insecure-Requests": "1",
  "Sec-Fetch-Dest": "document",
  "Sec-Fetch-Mode": "navigate",
  "Sec-Fetch-Site": "none",
  "Sec-Fetch-User": "?1",
};

async function fetchWithBIC(url) {
  const response = await axios.get(url, { headers });
  console.log(`Status: ${response.status}`);
  return response.data;
}

Thử thách CAPTCHA

Thử thách CAPTCHA diễn ra sau khi BIC vượt qua. Chúng yêu cầu thực thi JavaScript và đưa ra một thách thức có thể giải quyết được:

Các loại thử thách CAPTCHA của Cloudflare

Loại thử thách Trình kích hoạt Hiển thị với người dùng? Phương pháp CaptchaAI
Tiện ích cửa quay Được nhà phát triển nhúng vào trang Tiện ích trên biểu mẫu turnstile
Thử thách được quản lý Trận đấu quy tắc WAF Thích ứng (vô hình/checkbox) turnstile
Thử thách JavaScript Quy tắc IUAM hoặc WAF Trang "Kiểm tra trình duyệt của bạn" cloudflare_challenge
Thử thách tương tác Sự nghi ngờ cao Thử thách toàn trang cloudflare_challenge

Luồng thử thách (khác với BIC)

Request passes BIC check
    ↓
WAF rules evaluate bot score, IP, path
    ↓
Rule triggers CAPTCHA challenge (HTTP 503)
    ↓
Browser executes JavaScript challenge
    ↓
Challenge solved → <staging-session-cookie> cookie issued
    ↓
Subsequent requests pass with cookie

Phân biệt các khối BIC với các thử thách CAPTCHA

Khi yêu cầu của bạn bị chặn, việc xác định loại sẽ xác định cách khắc phục:

import requests

def diagnose_cloudflare_block(url):
    """Determine if block is BIC or CAPTCHA."""
    # Intentionally use minimal headers to trigger BIC
    minimal_response = requests.get(url, timeout=15, allow_redirects=False)

    # Use browser headers to bypass BIC
    browser_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 Chrome/120.0.0.0",
        "Accept": "text/html,application/xhtml+xml,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.9",
        "Accept-Encoding": "gzip, deflate, br",
    }
    browser_response = requests.get(
        url, headers=browser_headers, timeout=15, allow_redirects=False
    )

    result = {
        "minimal_headers_status": minimal_response.status_code,
        "browser_headers_status": browser_response.status_code,
    }

    if minimal_response.status_code == 403 and browser_response.status_code == 200:
        result["diagnosis"] = "BIC only — fix headers to pass"
        result["fix"] = "Add browser-like headers"

    elif minimal_response.status_code == 403 and browser_response.status_code == 403:
        result["diagnosis"] = "IP or WAF block — not just BIC"
        result["fix"] = "Change IP or check WAF rules"

    elif browser_response.status_code == 503:
        html = browser_response.text
        if "jschl" in html:
            result["diagnosis"] = "IUAM JavaScript challenge"
            result["fix"] = "Use CaptchaAI cloudflare_challenge method"
        elif "cf-turnstile" in html or "challenge-platform" in html:
            result["diagnosis"] = "Managed/Turnstile challenge"
            result["fix"] = "Use CaptchaAI turnstile method"
        else:
            result["diagnosis"] = "Unknown Cloudflare challenge"
            result["fix"] = "Inspect page source for challenge type"

    elif browser_response.status_code == 200:
        html = browser_response.text
        if "cf-turnstile" in html:
            result["diagnosis"] = "Page loads but has Turnstile widget"
            result["fix"] = "Use CaptchaAI turnstile method for form submission"
        else:
            result["diagnosis"] = "No challenge — page accessible"
            result["fix"] = "None needed"

    return result

# Usage
diagnosis = diagnose_cloudflare_block("https://example-cf-site.com")
print(f"Diagnosis: {diagnosis['diagnosis']}")
print(f"Fix: {diagnosis['fix']}")

Các tình huống phổ biến

Tình huống 1: Chỉ khối BIC

Request with python-requests UA → 403
Request with Chrome UA → 200 ✓

Fix: Add proper browser headers. No CaptchaAI needed.

Tình huống 2: Vượt qua BIC, sau đó là CAPTCHA

Request with Chrome UA → 503 (challenge page)

Fix: Headers are fine. Dùng CaptchaAI để solve the challenge.

Tình huống 3: BIC + CAPTCHA kết hợp

Request with python-requests UA → 403 (BIC block)
Request with Chrome UA → 503 (CAPTCHA challenge)

Fix: First fix headers, then solve CAPTCHA with CaptchaAI.

Kịch bản 4: Không - Khối IP

Request with python-requests UA → 403
Request with Chrome UA → 403

Fix: Neither BIC nor solvable challenge. IP is blocked.
Try different IP/proxy.

Các phương pháp hay nhất về tiêu đề

Các tiêu đề cần thiết để vượt qua BIC

CLOUDFLARE_SAFE_HEADERS = {
    # Mandatory
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/120.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",

    # Strongly recommended
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",

    # Sec-Fetch headers (modern Chrome)
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",

    # Recommended for consistency
    "Sec-Ch-Ua": '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    "Sec-Ch-Ua-Mobile": "?0",
    "Sec-Ch-Ua-Platform": '"Windows"',
}

Tiêu đề kích hoạt chặn BIC

tiêu đề Tại sao nó thất bại
User-Agent: python-requests/2.31.0 Mã định danh thư viện HTTP đã biết
User-Agent: curl/7.81.0 Mã định danh công cụ CLI
Thiếu tiêu đề Accept Không có trình duyệt nào bỏ qua Chấp nhận
Thiếu Accept-Language Tất cả các trình duyệt gửi cái này
User-Agent: "" (trống) Không hợp lệ - tự động hóa rõ ràng
User-Agent: Googlebot/2.1 từ IP không phải của Google Danh tính bot giả

Khắc phục sự cố

Triệu chứng nguyên nhân sửa chữa
403 với tiêu đề tối thiểu, 200 với tiêu đề trình duyệt chỉ có BIC Sử dụng tiêu đề giống trình duyệt
403 với tất cả các kết hợp tiêu đề IP bị chặn hoặc quy tắc WAF Hãy thử IP hoặc proxy khác
503 với trang thử thách Thử thách CAPTCHA (không phải BIC) Sử dụng CaptchaAI
403 không liên tục Giới hạn tỷ lệ hoặc dựa trên phiên Tỷ lệ yêu cầu thấp hơn, duy trì phiên
Tiêu đề đúng nhưng vẫn 403 Kiểm tra dấu vân tay TLS (JA3) Sử dụng curl_cffi hoặc trình duyệt thực

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

Tôi có thể tắt BIC cho trang web của mình không?

Vâng. Người vận hành trang web có thể tắt BIC trong bảng điều khiển Cloudflare trong phần Bảo mật > Cài đặt. Nó được bật theo mặc định trên tất cả các gói.

BIC có kiểm tra dấu vân tay TLS không?

Không trực tiếp. BIC tập trung vào tiêu đề HTTP. Tuy nhiên, giải pháp Quản lý Bot (doanh nghiệp) rộng hơn của Cloudflare sẽ kiểm tra dấu vân tay JA3/JA4 TLS riêng biệt với BIC.

Nếu tôi vượt qua BIC, liệu tôi có còn nhận được CAPTCHA không?

Vâng. Các thử thách BIC và CAPTCHA là các lớp độc lập. Việc vượt qua BIC có nghĩa là tiêu đề của bạn trông hợp pháp. Bạn vẫn có thể kích hoạt CAPTCHA từ các quy tắc WAF, tính điểm bot hoặc chế độ IUAM.

CaptchaAI có hỗ trợ BIC không?

Không — BIC không đưa ra một thách thức có thể giải quyết được. Sửa tiêu đề HTTP của bạn để vượt qua BIC. CaptchaAI xử lý các thử thách CAPTCHA (Thử thách Turnstile, JavaScript, Thử thách được quản lý) xuất hiện sau khi BIC vượt qua.

Tiêu đề Sec-Fetch ảnh hưởng đến BIC như thế nào?

Chrome hiện đại tự động gửi tiêu đề Sec-Fetch-*. Sự vắng mặt của chúng không phải lúc nào cũng kích hoạt BIC, nhưng việc bao gồm chúng sẽ khiến hồ sơ yêu cầu của bạn nhất quán hơn với trình duyệt thực.


Tóm tắt

Kiểm tra tính toàn vẹn trình duyệt của Cloudflare chặn các yêu cầu có giao diện rõ ràng không phải của trình duyệt (403), trong khi các thử thách CAPTCHA đưa ra các nhiệm vụ có thể giải quyết được (503). BIC được sửa bằng cách sử dụng các tiêu đề giống trình duyệt thích hợp - khôngCaptchaAIcần thiết. Các thử thách CAPTCHA yêu cầu Bộ giải CaptchaAI hoặc Cloudflare Challenge của CaptchaAI. Luôn chẩn đoán loại khối trước tiên: sửa tiêu đề cho BIC, sử dụng CaptchaAI cho CAPTCHA và thay đổi IP cho khối cứng.

bài viết liên quan

Os comentários estão desativados para este artigo.