NHANWEB

[Python] Cách bypass Cloudflare để quét dữ liệu

Cloudflare

Bạn đang sử dụng Python để thu thập dữ liệu từ website đối thủ, đôi lúc đối thủ bật Cloudflare và thế là bạn bị Block ??? Chuyện bạn bị chặn bởi Cloudflare rất bình thường, vì vậy đừng lo lắng mà hãy tìm cách vượt qua nó. Trong bài viết này mình sẽ giới thiệu với bạn vài công cụ giúp bạn vượt qua Cloudflare dễ dàng với Python.

Cloudflare phát hiện trình thu thập dữ liệu nhưu thế nào ?

Cloudflare là một trong những chướng ngại vật mà bạn thường xuyên gặp phải nhất trong quá trình thu thập dữ liệu bằng trình cào (Scraper). Nó sử dụng nhiều kỹ thuật khác nhau với nhiều cấp độ khác nhau để phát hiện và ngăn chặn bạn nếu nó phát hiện ra bạn là bot (hoặc scraper). Một số trong đó có vẻ cũng dễ vượt qua chỉ với một vài tùy chỉnh đơn giản, nhưng ở một vài cấp độ cao hơn đòi hỏi bạn phải kết hợp nhiều phương án và phương pháp khác nhau mới có thể vượt qua được.

Python là một ngôn ngữ lập trình, vì vậy nó cũng dễ dàng bị Cloudflare phát hiện nếu bạn sử dụng những phương pháp cào đơn giản và không có nhiều thay đổi.

Ví dụ: thư viện Requests của Python – một client HTTP phổ biến, có thể sẽ không vượt qua được hàng phòng thủ của Cloudflare vì nó gửi các tham số giống bot như python-requests/2.32.3 User Agent. Đây là một trường hợp phổ biến mà Cloudflare chặn các yêu cầu Python, vì thư viện này thiếu các thuộc tính chính giống trình duyệt cần thiết để tránh bị phát hiện. Ngoài ra, nó không hỗ trợ hiển thị JavaScript và thiếu các tính năng giống trình duyệt để tự động hóa tương tác của người dùng với trang web.

Lấy một ví dụ đơn giản như thế này:

# import the required library
import requests

# send the request
response = requests.get("https://www.g2.com/products/jira/reviews")

# validate and print the response
if response.status_code!=200:
    print(f"The request failed with an error {response.status_code}")
else:
    print(response.text)

Với các website có sử dụng Cloudflare và bật chế độ Bot Fight, bạn sẽ chỉ nhận được responsive 403 với nội dung hiển thị

The request failed with an error 403

Cũng cần phải lưu ý, đây là cuộc chiến giữa ánh sáng và bóng tối; cho nên bản thân Cloudfare thường xuyên cập nhật thuật toán nhằm ngăn chặn bạn dùng scraper để cào nội dung của website. Do đó việc update thuật toán để bypass cũng là việc mà bạn thường xuyên phải làm. Đừng bao giờ nghĩ rằng lúc này bạn có thể cào được nghĩa là trong tương lai bạn cũng có thể làm điều đó với đoạn mã tương tự.

Ngoài ra, các website cũng thường xuyên cập nhật phương án chống DDOS, chống floor data liên tục do đó để cào được nội dung của họ bạn cũng cần có nhiều kỹ thuật và phương án phù hợp với từng website.

Sau đây mình sẽ chỉ cho bạn vào phương pháp bypass Cloudflare hiệu quả mà mình đã sử dụng. Như đã nói ở trên, có thể trong tương lai nó không còn hữu dụng nữa, lúc đó bạn phải tự tìm phương án khác hoặc đợi mình update.

Bypass Cloudflare với Python

Có một số thư viện trong Python có thể giúp bạn vượt qua tường lửa của Cloudflare nếu muốn thu thập dữ liệu từ website khác. Nếu bạn đang tìm kiếm chúng, mình sẽ giới thiệu cho bạn một vài thư viện Python như vậy ngay dưới đây.

Cloudscraper

Cloudscraper được xây dựng để giả lập một trình duyệt dễ sử dụng để vượt qua Cloudflare. Nó tương tự như Python Requests cho Cloudflare nhưng tăng cường thêm chức năng nhập thêm các tham số và biên dịch Javascript – thứ công cụ mà Cloudflare đang dùng phân tích sự khác nhau giữa bot và người. Nói chung nó mô phỏng hành vi của người dùng duyệt web bình thường để khiến cho Cloudflare không nhận ra việc bạn đang dùng bot để truy cập và cào dữ liệu.

Clouscraper hỗ trợ nhiều trình duyệt khác nhau, bao gồm Chrome và Firefox, mô phỏng fingerprint, chẳng hạn như bộ mã hóa, để tạo kết nối máy khách-máy chủ an toàn.

Tuy nhiên, nó cũng có một nhược điểm là không thể mô tả cấc bài test fingerprinting nâng cao như Cloudflare Turnstile CAPTCHA khiến cho nó không thể vượt qua các trình kiểm tra như CAPTCHA. Tuy nhiên, ở mức độ này thì bạn cũng đã vượt qua được kha khá website đang bật Bot Fighting rồi.

Nếu có nhu cầu cao hơn, bạn có thể thử kết hợp thêm proxy, cùng với một dịch vụ vượt CAPTCHA có trả phí như 2Captcha. Với mình thì chỉ cần có Cloudscraper là quá đủ để phân tích và cào dữ liệu rồi.

Ưu điểm:

Khuyết điểm

Undetected-chromedriver

Undetected-chromedriver là một phiên bản chỉnh sửa của Selenium ChromeDriver giúp ngăn chặn anti-bot detection. Thư viện này tự động tải một tệp nhị phân ChromeDriver giúp mô phỏng một fingerprint hợp lệ của trình duyệt.

Undetected-chromedriver

Một trong những mô phỏng quan trọng của Undetected-chromedriver là nó hỗ trợ được việc thực thi  Javascript để tương tác động lên trang web. Chính tính năng này giúp nó bổ sung yếu tố con người vào request của bạn và tăng cơ hội bypass được Cloudflare.

Điểm mạnh

Điểm yếu:

Curl_cffi

Curl_cffi là một phiên bản nâng cấp và cải tiến của thư viện cURL mặc định của Python. Nó vá lại các thiếu sót của cURL mặc định bằng cách bổ sung thêm browser fingerprint, cho phép bạn giả lập các trình duyệt phổ biến như Chrome, Safari, và Edge.

Nó vượt qua các chương trình chống bot như Cloudflare bằng cách thay thế các tín hiệu giống bot có thể phát hiện được, chẳng hạn như thư viện OpenSSL của cURL, bằng BoringSSL của Chrome. Tuy nhiên, curl_cffi không phải là trình duyệt không giao diện và không thể thực thi JavaScript. Vì vậy, nó có những hạn chế về fingerprinting và vẫn có thể bị phát hiện bằng các phương pháp bảo mật chống bot nâng cao.

Ưu điểm:

Khuyết điểm:

Cfscrape

Thư viện cfscrape là một thư viện của Python cho phép bạn giả lập trình duyệt cũng khá phổ biến với nhiều người có nhu cầu vượt qua Cloudflare. Công cụ này về cơ bản nó cũng giống như Cloudscraper nhưng nó có một điểm khác biệt là nó không cho phép bạn chọn trình duyệt mà sẽ mặc định các thông số và cấu hình của Chrome.

Curl_cffi

Tuy nhiên, cfscrape không phải là một thư viện hoàn hảo: nó không hỗ trợ urllib3 mà yêu cầu bạn sử dụng 1 phên bản thấp hơn. Ngoài ra, nó cũng chỉ có thể bypass một số phương pháp fingerprintings test ở mức độ thấp, hoàn toàn bó tay với các phương pháp phát hiện bot nâng cao của Cloudflare.

Ưu điểm:

Khuyết điểm:

Bạn có thể phải sử dụng lệnh sau để cài đặt hoặc hạ cấp

pip install "urllib3<2"
Exit mobile version