
Anh Tuan
Data Science Expert
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à 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.
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:
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 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.
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.
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.
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.
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
// 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ể:
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.
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
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ệ.
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" => "example@gmail.com",
"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();
Để 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
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.
Học cách giải quyết các thách thức AWS WAF và CAPTCHA mà không cần trình duyệt. Sử dụng API của CapSolver để tạo token và bypass mã trạng thái 405.

Cài đặt truy xuất dữ liệu web trên Linux với Python, máy chủ trung gian và xử lý CAPTCHA. Hướng dẫn thực hành cho nhà phát triển bao gồm Scrapy, Playwright, CapSolver và dòng dữ liệu.

Hãy học cách xác định nguyên nhân gây ra lỗi Cloudflare 1020 Truy cập Bị Từ Chối, cách Tường lửa Ứng dụng Web và phát hiện bot hoạt động, và cách các nhà phát triển giảm thiểu kết quả dương tính giả trong các quy trình tự động hợp lệ.
