CAPSOLVER
Blog
Cách giải quyết Cloudflare bằng PHP

Cách giải quyết Cloudflare bằng PHP

Logo of CapSolver

Anh Tuan

Data Science Expert

26-Nov-2024

Có thể Cloudflare phát hiện ra công cụ scrape PHP của bạn không? Có cách nào để vượt qua các biện pháp bảo vệ mạnh mẽ của nó mà không bị chặn không? Cloudflare, nổi tiếng với các biện pháp bảo mật mạnh mẽ, sử dụng các công cụ như CAPTCHA Turnstile và Bot Management để lọc bỏ bot và hoạt động đáng ngờ. Những biện pháp bảo vệ này tạo ra những thách thức đáng kể đối với các công cụ scrape PHP, vì chúng dựa rất nhiều vào việc phát hiện các mẫu và chặn bất cứ thứ gì có vẻ tự động.

Hãy đi sâu vào các phương pháp có thể tăng khả năng scrape các trang web được Cloudflare bảo vệ bằng PHP, lưu ý rằng không có giải pháp nào được đảm bảo chống lại hệ thống bảo mật luôn phát triển này.

Cloudflare là gì?

Cloudflare là một mạng lưới phân phối nội dung (CDN) và bảo mật được sử dụng rộng rãi, được thiết kế để bảo vệ các trang web khỏi nhiều mối đe dọa trực tuyến, bao gồm bot, thư rác và các cuộc tấn công từ chối dịch vụ (DoS). Nó đóng vai trò là trung gian giữa máy chủ của trang web và khách truy cập của nó, lọc các yêu cầu dựa trên nhiều tiêu chí để đảm bảo chỉ có lưu lượng hợp pháp mới đến được máy chủ. Mạng lưới mạnh mẽ và các công cụ bảo mật của Cloudflare giúp đảm bảo các trang web tải nhanh hơn và được bảo vệ khỏi các tương tác không mong muốn hoặc có hại.

Tại sao Cloudflare lại khó khăn cho các công cụ scrape PHP?

Cloudflare đã trở thành một thách thức phổ biến đối với các công cụ scrape PHP do các hệ thống phát hiện bot tinh vi của nó. Khi phát hiện ra hoạt động tự động hoặc đáng ngờ, Cloudflare có thể triển khai nhiều biện pháp bảo mật để xác minh tính hợp pháp của khách truy cập. Các biện pháp này bao gồm:

Thử thách JavaScript

Cloudflare thường đưa ra các thử thách dựa trên JavaScript (còn được gọi là chế độ "Bị tấn công" của JavaScript), yêu cầu người dùng thực thi JavaScript trước khi truy cập vào trang web. Điều này đặc biệt khó khăn đối với các công cụ scrape PHP, vì PHP không xử lý việc thực thi JavaScript một cách tự nhiên. Các giải pháp thường liên quan đến việc tích hợp với các trình duyệt không đầu hoặc các công cụ khác có thể mô phỏng việc thực thi JavaScript.

CAPTCHA Turnstile và các CAPTCHA khác

CAPTCHA là một lớp bảo mật khác mà Cloudflare sử dụng để xác minh sự tương tác của con người. CAPTCHA Turnstile, đặc biệt, được sử dụng để ngăn chặn các bot tự động truy cập vào các trang được bảo vệ. Việc giải quyết các CAPTCHA này đòi hỏi các dịch vụ giải quyết CAPTCHA hoặc sự can thiệp thủ công, vì riêng PHP không có khả năng diễn giải và phản hồi CAPTCHA.

Quản lý Bot

Hệ thống quản lý bot tiên tiến của Cloudflare sử dụng máy học để phát hiện các mẫu và hành vi điển hình của bot. Bằng cách theo dõi các chi tiết như tần suất yêu cầu, tính nhất quán của tác nhân người dùng và danh tiếng IP, Cloudflare có thể xác định và chặn bot với độ chính xác cao. Điều này làm cho việc scrape đặc biệt khó khăn đối với các công cụ gửi yêu cầu với tần suất cao hoặc lặp đi lặp lại.

Chặn và giới hạn tốc độ dựa trên IP

Cloudflare giám sát các địa chỉ IP và áp dụng giới hạn tốc độ để phát hiện và hạn chế lưu lượng đáng ngờ. Đối với các công cụ scrape, điều này có nghĩa là các yêu cầu lặp đi lặp lại từ cùng một địa chỉ IP có thể bị gắn cờ và chặn. Để tránh điều này, cần phải thường xuyên luân chuyển IP thông qua proxy hoặc dịch vụ proxy luân phiên, điều này có thể làm tăng độ phức tạp và chi phí.

Để xác minh thêm người dùng, Cloudflare theo dõi phiên và cookie. Các công cụ scrape PHP phải quản lý cookie và phiên một cách nhất quán để duy trì một phiên người dùng duy nhất trong các yêu cầu, điều này có thể khó thực hiện về mặt kỹ thuật nếu không có khả năng xử lý cookie nâng cao.

Tóm lại, các biện pháp phòng thủ nhiều lớp của Cloudflare được thiết kế đặc biệt để phát hiện và ngăn chặn lưu lượng tự động, làm cho nỗ lực scrape PHP trở nên đặc biệt khó khăn.

Cách giải quyết Cloudflare trong PHP

Cloudflare đặt ra những thách thức đáng kể đối với việc scrape web do các biện pháp bảo mật và phát hiện bot mạnh mẽ của nó, chẳng hạn như các thử thách JavaScript, CAPTCHA và các hệ thống quản lý bot tiên tiến. Khi cố gắng scrape các trang web được Cloudflare bảo vệ bằng PHP, các nhà phát triển thường gặp phải những trở ngại như thực thi JavaScript, xử lý phiên và giải quyết CAPTCHA.

Thử nghiệm 1: Sử dụng Tự động hóa với Selenium Stealth

Một cách tiếp cận phổ biến để giải quyết các biện pháp phòng thủ của Cloudflare là sử dụng các trình duyệt không đầu và các công cụ tự động hóa, chẳng hạn như Selenium Stealth. Selenium Stealth là một lớp tăng cường cho Selenium WebDriver, được thiết kế để giảm khả năng bị phát hiện bằng cách mô phỏng hành vi duyệt web giống con người hơn.

- Ví dụ Code: Selenium Stealth trong PHP

php Copy
// Load required libraries
require_once 'vendor/autoload.php';

use Facebook\WebDriver\Remote\RemoteWebDriver;
use SapiStudio\SeleniumStealth\SeleniumStealth;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Chrome\ChromeOptions;

// Selenium server URL
$serverUrl = 'http://localhost:4444';

// Define browser capabilities and options
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments(['--headless', '--disable-gpu', '--no-sandbox']); // Headless mode for automation

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $chromeOptions);

// Initialize WebDriver
$driver = RemoteWebDriver::create($serverUrl, $capabilities);

// Enhance WebDriver with Selenium Stealth
$stealthDriver = (new SeleniumStealth($driver))->usePhpWebriverClient()->makeStealth();

// Maximize browser window
$stealthDriver->manage()->window()->maximize();

// Navigate to target URL
$url = 'https://www.scrapingcourse.com/cloudflare-challenge';
$stealthDriver->get($url);

// Retrieve and print page source
$html = $stealthDriver->getPageSource();
echo $html;

// Close the browser session
$stealthDriver->quit();

Thách thức của việc sử dụng Selenium Stealth

Mặc dù Selenium Stealth là một phương pháp đầy hứa hẹn, nhưng nó có những nhược điểm đáng kể:

  1. Rủi ro phát hiện cao: Các cơ chế phát hiện tiên tiến của Cloudflare vẫn có thể gắn cờ các trình duyệt dựa trên Selenium là bot, đặc biệt là khi sử dụng nhiều.
  2. Vấn đề xử lý phần tử: Việc xác định và tương tác với các phần tử trang để giải quyết các thách thức có thể không đáng tin cậy.
  3. Chi phí hiệu năng: Việc chạy nhiều trình duyệt không đầu đồng thời tiêu tốn rất nhiều tài nguyên hệ thống, khiến việc mở rộng quy mô trở nên khó khăn.

Mặc dù Selenium Stealth có thể giải quyết các biện pháp phòng thủ đơn giản, nhưng nó không phải là giải pháp tốt nhất để xử lý các biện pháp bảo mật tinh vi của Cloudflare.

Thử nghiệm 2: Sử dụng CapSolver API

CapSolver cung cấp một phương pháp mạnh mẽ, dựa trên API để giải quyết các thách thức của Cloudflare. Thay vì dựa vào tự động hóa nặng về tài nguyên, nó tận dụng công nghệ giải quyết CAPTCHA mạnh mẽ để xử lý các thách thức của Cloudflare như CAPTCHA Turnstile và các thách thức dựa trên JavaScript.

Lợi ích của việc sử dụng CapSolver

  1. Hiệu quả: Giải quyết CAPTCHA và các thách thức khác một cách nhanh chóng mà không cần can thiệp thủ công.
  2. Khả năng mở rộng: Thích hợp cho các hoạt động quy mô lớn vì nó tránh được chi phí của việc chạy nhiều trình duyệt.
  3. Tính đơn giản: Cung cấp tích hợp đơn giản với PHP và các ngôn ngữ lập trình khác.
  4. Độ tin cậy: Xử lý ngay cả những thách thức phức tạp nhất với độ chính xác cao.

Ví dụ Code: CapSolver trong PHP

Code sau đây minh họa cách sử dụng CapSolver để giải quyết các thách thức của Cloudflare và đăng nhập vào một trang web được bảo vệ.

php Copy
require 'vendor/autoload.php';

use GuzzleHttp\Client;

define("CAPSOLVER_API_KEY", "CAI-API_KEY");
define("PAGE_URL", "https://dash.cloudflare.com/login");
define("SITE_KEY", "0x4AAAAAAAJel0iaAR3mgkjp");

function callCapsolver() {
    $client = new Client();
    $data = [
        "clientKey" => CAPSOLVER_API_KEY,
        "task" => [
            "type" => "AntiTurnstileTaskProxyLess",
            "websiteURL" => PAGE_URL,
            "websiteKey" => SITE_KEY,
            "metadata" => ["action" => "login"]
        ]
    ];

    try {
        // Create task
        $response = $client->post('https://api.capsolver.com/createTask', [
            'json' => $data
        ]);
        $resp = json_decode($response->getBody(), true);
        $taskId = $resp['taskId'] ?? null;

        if (!$taskId) {
            echo "No taskId found: " . $response->getBody() . PHP_EOL;
            return null;
        }

        echo "Created taskId: $taskId" . PHP_EOL;

        // Poll for task result
        while (true) {
            sleep(1); // Wait 1 second
            $resultResponse = $client->post('https://api.capsolver.com/getTaskResult', [
                'json' => [
                    "clientKey" => CAPSOLVER_API_KEY,
                    "taskId" => $taskId
                ]
            ]);
            $result = json_decode($resultResponse->getBody(), true);
            $status = $result['status'] ?? '';

            if ($status === "ready") {
                echo "Successfully solved: " . $resultResponse->getBody() . PHP_EOL;
                return $result['solution'] ?? null;
            }

            if ($status === "failed" || isset($result['errorId'])) {
                echo "Failed: " . $resultResponse->getBody() . PHP_EOL;
                return null;
            }
        }
    } catch (Exception $e) {
        echo "Error: " . $e->getMessage() . PHP_EOL;
        return null;
    }
}

function login($token, $userAgent) {
    $client = new Client();
    $headers = [
        'Cookie' => "cf_clearance=$token",
        'Host' => 'dash.cloudflare.com',
        'User-Agent' => $userAgent
    ];

    $data = [
        "cf_challenge_response" => $token,
        "email" => "[email protected]",
        "password" => "example_password"
    ];

    try {
        $response = $client->post('https://dash.cloudflare.com/api/v4/login', [
            'headers' => $headers,
            'form_params' => $data
        ]);

        echo "Login Response Status Code: " . $response->getStatusCode() . PHP_EOL;
        if ($response->getStatusCode() !== 403) {
            echo "Login Response: " . $response->getBody() . PHP_EOL;
        }
    } catch (Exception $e) {
        echo "Login Error: " . $e->getMessage() . PHP_EOL;
    }
}

function run() {
    $solution = callCapsolver();
    $token = $solution['token'] ?? null;

    if ($token) {
        login($token, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36");
    }
}

run();

Tại sao nên chọn CapSolver hơn Selenium Stealth?

  1. Hiệu quả tài nguyên: Không cần chạy trình duyệt không đầu, giảm chi phí máy chủ và mức tiêu thụ bộ nhớ.
  2. Dễ dàng triển khai: Tích hợp API đơn giản mà không cần cấu hình trình duyệt phức tạp.
  3. Tỷ lệ thành công: Độ tin cậy cao hơn trong việc bỏ qua các biện pháp phòng thủ nâng cao của Cloudflare.
  4. Khả năng mở rộng cho Doanh nghiệp: Lý tưởng cho các trường hợp cần giải quyết CAPTCHA với khối lượng lớn.

Để biết thêm chi tiết về CapSolver và khả năng của nó, hãy truy cập tài liệu CapSolver.

Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn

Suy nghĩ cuối cùng

Các biện pháp phòng thủ của Cloudflare luôn phát triển, khiến việc giải quyết chúng ngày càng khó khăn hơn đối với các công cụ scrape PHP. Mặc dù các công cụ tự động hóa như Selenium Stealth có thể xử lý các trường hợp cơ bản, nhưng CapSolver cung cấp giải pháp mạnh mẽ, hiệu quả và khả năng mở rộng hơn để giải quyết các thách thức nâng cao. Với API của CapSolver, bạn có thể đảm bảo kết quả nhanh hơn, đáng tin cậy hơn mà không gặp phải những khó khăn khi quản lý tự động hóa trình duyệt phức tạp.

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

Nhận dạng ảnh bằng AI: Kiến thức cơ bản và cách giải quyết
Nhận dạng ảnh bằng AI: Kiến thức cơ bản và cách giải quyết

Tạm biệt những khó khăn với CAPTCHA hình ảnh – CapSolver Vision Engine giải quyết chúng nhanh chóng, thông minh và dễ dàng!

Logo of CapSolver

Anh Tuan

25-Apr-2025

Các User Agent Tốt Nhất để Scrape Web & Cách Sử Dụng Chúng
Các User Agent Tốt Nhất để Scrape Web & Cách Sử Dụng Chúng

Hướng dẫn về các user agent tốt nhất để scrape web và cách sử dụng hiệu quả để tránh bị phát hiện. Khám phá tầm quan trọng của user agent, các loại và cách triển khai chúng để scrape web liền mạch và không bị phát hiện.

Logo of CapSolver

Anh Tuan

07-Mar-2025

Cách giải quyết thử thách Cloudflare JS để thu thập dữ liệu web và tự động hóa
Cách giải quyết thử thách Cloudflare JS để thu thập dữ liệu web và tự động hóa

Tìm hiểu cách giải quyết thử thách JavaScript của Cloudflare để thu thập dữ liệu web và tự động hóa liền mạch. Khám phá các chiến lược hiệu quả, bao gồm sử dụng trình duyệt không đầu, luân phiên proxy, và tận dụng khả năng giải quyết CAPTCHA nâng cao của CapSolver.

Cloudflare
Logo of CapSolver

Anh Tuan

05-Mar-2025

Dấu vân tay TLS của Cloudflare: Nó là gì và cách giải quyết
Dấu vân tay TLS của Cloudflare: Nó là gì và cách giải quyết

Tìm hiểu về việc Cloudflare sử dụng dấu vân tay TLS để bảo mật, cách nó phát hiện và chặn bot, và khám phá các phương pháp hiệu quả để giải quyết vấn đề này cho các tác vụ thu thập dữ liệu web và duyệt web tự động.

Cloudflare
Logo of CapSolver

Anh Tuan

28-Feb-2025

Tại sao tôi cứ bị yêu cầu xác minh rằng tôi không phải là người máy?
Tại sao tôi cứ bị yêu cầu xác minh rằng tôi không phải là người máy?

Tìm hiểu lý do tại sao Google yêu cầu bạn xác minh rằng bạn không phải là robot và khám phá các giải pháp như sử dụng API của CapSolver để giải quyết các thử thách CAPTCHA một cách hiệu quả.

Logo of CapSolver

Anh Tuan

27-Feb-2025

Cách trích xuất dữ liệu từ trang web được bảo vệ bởi Cloudflare
Cách trích xuất dữ liệu từ trang web được bảo vệ bởi Cloudflare

Trong hướng dẫn này, chúng ta sẽ khám phá các kỹ thuật đạo đức và hiệu quả để trích xuất dữ liệu từ các trang web được bảo vệ bởi Cloudflare.

Cloudflare
Logo of CapSolver

Anh Tuan

20-Feb-2025