CAPSOLVER
Blog
Cách giải quyết reCAPTCHA bằng Puppeteer trong PHP cho Web Scraping

Cách giải quyết reCAPTCHA với Puppeteer trong PHP cho Web Scraping

Logo of CapSolver

Anh Tuan

Data Science Expert

28-Aug-2024

Bạn đã bao giờ gặp phải rào cản reCAPTCHA khi thu thập dữ liệu? Tôi cũng đã từng trải qua điều đó. Những thử thách CAPTCHA có thể biến một nhiệm vụ thu thập dữ liệu đơn giản thành một trở ngại lớn. Nhưng đừng lo lắng - tôi có một giải pháp giúp bạn vượt qua những rào cản đó một cách dễ dàng.

Trong bài viết này, tôi sẽ hướng dẫn bạn sử dụng Puppeteer, một thư viện Node.js mạnh mẽ, để giải quyết các thử thách reCAPTCHA. Sau đó, chúng ta sẽ tích hợp nó với PHP để làm cho các nhiệm vụ thu thập dữ liệu web của bạn trở nên mượt mà và hiệu quả hơn. Bạn đã sẵn sàng để giải quyết reCAPTCHA và lấy dữ liệu một cách liền mạch? Hãy bắt đầu!

reCAPTCHA là gì khi thu thập dữ liệu web?

Để cung cấp cho bạn một số ngữ cảnh, reCAPTCHA là một hệ thống được thiết kế để bảo vệ các trang web khỏi bị lạm dụng tự động. Nó yêu cầu người dùng hoàn thành các nhiệm vụ dễ dàng đối với con người nhưng đầy thách thức đối với bot, chẳng hạn như xác định đối tượng trong hình ảnh hoặc đánh dấu vào một ô. Mặc dù những thử thách này rất tốt cho bảo mật, nhưng chúng có thể gây khó khăn cho việc thu thập dữ liệu web. Dưới đây là các loại cơ bản mà bạn có thể gặp phải:

  • reCAPTCHA v2: Phiên bản này được biết đến với hộp kiểm "Tôi không phải là robot" và các thử thách dựa trên hình ảnh. Người dùng có thể cần phải nhấp vào hình ảnh hoặc hoàn thành các hành động cụ thể để chứng minh rằng họ là người. Nó hiệu quả trong việc phân biệt giữa người dùng thực và bot.
  • reCAPTCHA v3: Phiên bản này hoạt động trong nền. Thay vì yêu cầu người dùng tương tác, nó phân tích hành vi của người dùng trên toàn bộ trang web và gán một điểm số rủi ro. Điểm số này giúp các trang web xác định xem có nên cấp quyền truy cập hay chặn quyền truy cập dựa trên khả năng người dùng là bot.

  • reCAPTCHA Doanh nghiệp: Dành cho các doanh nghiệp có yêu cầu bảo mật cao hơn, reCAPTCHA Doanh nghiệp cung cấp bảo vệ nâng cao chống lại các mối đe dọa tinh vi. Nó bao gồm các tính năng như phân tích rủi ro nâng cao, điểm số có thể tùy chỉnh và khả năng mở rộng được cải thiện, phù hợp cho các tổ chức xử lý thông tin nhạy cảm hoặc các hoạt động quan trọng.

Bạn đang gặp khó khăn với việc giải quyết captcha gây phiền nhiễu?

Khám phá giải pháp tự động giải quyết captcha liền mạch với công nghệ Auto Web Unblock AI do Capsolver cung cấp!

Nhận Mã khuyến mãi 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

Hiểu rõ các phiên bản này sẽ giúp chúng ta vượt qua những thử thách của reCAPTCHA một cách hiệu quả. Hãy cùng tìm hiểu cách chúng ta có thể sử dụng Puppeteer và CapSolver để xử lý những thử thách này và tối ưu hóa nỗ lực thu thập dữ liệu web của mình.

CapSolver có thể giúp giải quyết reCAPTCHA như thế nào

CapSolver là một giải pháp mạnh mẽ để xử lý các thử thách CAPTCHA, bao gồm reCAPTCHA. Dưới đây là cách bạn có thể tích hợp CapSolver vào quy trình của mình để đơn giản hóa việc giải quyết CAPTCHA:

  1. Truy xuất Khóa Trang web
    • Tìm kiếm trong nhật ký yêu cầu trình duyệt để tìm yêu cầu như /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf. Tham số k= là khóa trang web bạn cần.
    • Nếu bạn cung cấp khóa không chính xác, bạn sẽ nhận được thông báo lỗi như:
      Copy
      Giải quyết thất bại! phản hồi: {"errorId":1,"errorCode":"ERROR_INVALID_TASK_DATA","errorDescription":"Khóa trang web không hợp lệ","taskId":"1cd1e687-96dd-4f14-b8ef-18b5d144d9b8","status":"failed"}
  • Nếu bạn sử dụng phiên bản reCAPTCHA sai (V2 hoặc V3), hoặc nếu có sự không khớp giữa loại trang web mục tiêu và loại yêu cầu API, bạn có thể thấy:
    Copy
    Solve failed! response: {"errorId":1,"errorCode":"ERROR_CAPTCHA_SOLVE_FAILED","errorDescription":"Failed to solve the captcha: 1001","taskId":"da450cbc-ff9d-439d-908a-77e7eb8852dd","status":"failed"}
  1. Cài đặt môi trường của bạn

    • Cài đặt các gói cần thiết:
      bash Copy
      npm install axios puppeteer-core
  2. Viết mã tích hợp

php Copy
<?php

require_once 'vendor/autoload.php';
use Nesk\Puphpeteer\Puppeteer;
use Nesk\Rialto\Data\JsFunction;
use GuzzleHttp\Client;

$puppeteer = new Puppeteer;
$browser = $puppeteer->launch();

// TODO: đặt cấu hình của bạn
$api_key = "YOUR_API_KEY"; // khóa API của bạn của CapSolver
$site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"; // khóa trang của trang web mục tiêu của bạn
$site_url = "https://www.google.com/recaptcha/api2/demo"; // URL trang của trang web mục tiêu của bạn

function capsolver()
{
    global $api_key, $site_key, $site_url;
    $client = new Client();
    $payload = [
        'clientKey' => $api_key,
        'task' => [
            'type' => 'ReCaptchaV2TaskProxyLess',
            'websiteKey' => $site_key,
            'websiteURL' => $site_url,
        ]
    ];

    try {
        $response = $client->post("https://api.capsolver.com/createTask", [
            'json' => $payload
        ]);
        $data = json_decode($response->getBody(), true);
        $task_id = $data['taskId'] ?? null;
        if (!$task_id) {
            echo "Tạo nhiệm vụ thất bại: " . json_encode($data) . PHP_EOL;
            return null;
        }
        echo "Đã nhận taskId: " . $task_id . PHP_EOL;

        while (true) {
            sleep(1);

            $getResultPayload = [
                'clientKey' => $api_key,
                'taskId' => $task_id
            ];
            $resp = $client->post("https://api.capsolver.com/getTaskResult", [


```php
<?php

function capsolver()
{
    try {
        $client = new \GuzzleHttp\Client();
        $resp = $client->post('https://api.capsolver.com/createTask', [
            'json' => $getResultPayload
        ]);
        $data = json_decode($resp->getBody(), true);
        $status = $data['status'] ?? null;

        if ($status === "ready") {
            return $data['solution']['gRecaptchaResponse'];
        }
        if ($status === "failed" || isset($data['errorId'])) {
            echo "Solve failed! response: " . json_encode($data) . PHP_EOL;
            return null;
        }
    } catch (\Exception $e) {
        echo "Error: " . $e->getMessage() . PHP_EOL;
        return null;
    }
}

function reqSite()
{
    global $site_url, $browser;
    $token = capsolver();
    if ($token === null) {
        return;
    }
    echo $token . PHP_EOL;

    $page = $browser->newPage();
    $page->goto($site_url);
    $evaluate_script = <<<EOD
        document.getElementById("g-recaptcha-response").value="$token";
        onSuccess("$token");
    EOD;
    $page->evaluate(JsFunction::createWithBody($evaluate_script));
    $product_element = $page->querySelector('#recaptcha-demo-submit');
    if ($product_element instanceof ElementHandle) {
        $product_element->click();
    } else {
        echo 'Element not found.' . PHP_EOL;
    }
}

reqSite();

Cho dù bạn đang xử lý reCAPTCHA v2, v3 hay Enterprise, việc tích hợp CapSolver với Puppeteer có thể đơn giản hóa quy trình làm việc của bạn và nâng cao hiệu quả thu thập dữ liệu. Nếu bạn gặp phải bất kỳ vấn đề nào hoặc cần hỗ trợ thêm, cả CapSolver và Puppeteer đều cung cấp tài liệu và hỗ trợ đầy đủ để giúp bạn vượt qua mọi thách thức.

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