- vừa được xem lúc

Cách Bỏ qua Cloudflare vào năm 2024: 8 Phương pháp Tốt nhất

0 0 3

Người đăng: jamespaul

Theo Viblo Asia

Khoảng 1/5 số trang web bạn cần thu thập dữ liệu sử dụng Cloudflare, một hệ thống bảo vệ chống bot mạnh mẽ khiến bạn dễ bị chặn. Vậy bạn có thể làm gì? 😥

Chúng tôi đã chi một triệu đô la để tìm ra cách vượt qua Cloudflare vào năm 2024 để bạn không phải làm vậy và đã viết hướng dẫn đầy đủ nhất (bạn đang đọc!). Đây là một số kỹ thuật bạn sẽ nhận được về nhà ngày hôm nay:

**Phương pháp 1: Vượt qua Cloudflare CDN. Phương pháp 2: Bỏ qua phòng chờ và thiết kế ngược thử thách. Phương pháp 3: Sử dụng trình giải quyết Cloudflare. Phương pháp 4: Trình duyệt không đầu được tăng cường. Phương pháp 5: Proxy thông minh. Phương pháp 6: Thu thập bộ nhớ đệm của Google. Phương pháp 7: Tránh CAPTCHA. Phương pháp 8: API để vượt qua Cloudflare (dễ nhất và đáng tin cậy nhất). Hãy là người chiến thắng trong câu chuyện thu thập dữ liệu này. Cuộn xuống! **

Quản lý bot Cloudflare là gì

Cloudflare là một công ty bảo mật và hiệu suất web. Về mặt bảo mật, họ cung cấp cho khách hàng Tường lửa ứng dụng web (WAF). WAF có thể bảo vệ các ứng dụng khỏi một số mối đe dọa bảo mật, chẳng hạn như mã lệnh chéo trang (XSS), nhồi thông tin xác thực và các cuộc tấn công DDoS.

Một trong những hệ thống cốt lõi có trong WAF của họ là Trình quản lý bot của Cloudflare. Là một giải pháp bảo vệ bot, mục tiêu chính của nó là giảm thiểu các cuộc tấn công từ bot độc hại mà không ảnh hưởng đến người dùng thực.

Cloudflare thừa nhận tầm quan trọng của một số bot nhất định. Ví dụ, không có trang web nào muốn cố tình chặn Google hoặc các công cụ tìm kiếm khác thu thập dữ liệu trang web của mình. Để giải quyết vấn đề này, Cloudflare duy trì danh sách cho phép đối với các bot tốt đã biết.

Thật không may cho những người đam mê thu thập dữ liệu web như bạn và tôi, họ cũng cho rằng tất cả lưu lượng bot không nằm trong danh sách trắng đều là độc hại. Vì vậy, bất kể ý định của bạn là gì, rất có khả năng bot của bạn sẽ bị từ chối quyền truy cập vào trang web được Cloudflare bảo vệ.

Nếu bạn đã từng thử quét một trang web được Cloudflare bảo vệ trước đây, bạn có thể đã gặp phải một số lỗi liên quan đến Bot-manager sau đây:

Lỗi 1020: Quyền truy cập bị từ chối Lỗi 1010: Chủ sở hữu trang web này đã cấm quyền truy cập của bạn dựa trên chữ ký của trình duyệt Lỗi 1015: Bạn đang bị giới hạn tốc độ Lỗi 1012: Quyền truy cập bị từ chối Thông thường, những thách thức này đi kèm với mã trạng thái phản hồi HTTP Cloudflare 403 Forbidden.

Cloudflare phát hiện bot như thế nào?

Các phương pháp phát hiện bot do Cloudflare sử dụng thường có thể được phân loại thành hai loại: thụ động và chủ động. Các kỹ thuật phát hiện bot thụ động bao gồm các lần kiểm tra dấu vân tay được thực hiện ở phía sau, trong khi các kỹ thuật phát hiện chủ động dựa trên các lần kiểm tra được thực hiện ở phía máy khách. Chúng ta hãy cùng nhau tìm hiểu một vài ví dụ từ mỗi loại!

Kỹ thuật phát hiện bot thụ động của Cloudflare

Sau đây là danh sách không đầy đủ về một số kỹ thuật phát hiện bot thụ động mà Cloudflare sử dụng:

Phát hiện botnet

Cloudflare duy trì danh mục các thiết bị, địa chỉ IP và các mẫu hành vi được biết là có liên quan đến mạng bot độc hại. Bất kỳ thiết bị nào bị nghi ngờ thuộc về một trong những mạng này đều tự động bị chặn hoặc phải đối mặt với các thách thức bổ sung về phía máy khách để giải quyết.

Uy tín địa chỉ IP

Uy tín địa chỉ IP của người dùng (còn được gọi là điểm rủi ro hoặc điểm gian lận) dựa trên các yếu tố như vị trí địa lý, ISP và lịch sử uy tín. Ví dụ: IP thuộc về trung tâm dữ liệu hoặc nhà cung cấp VPN đã biết sẽ có uy tín kém hơn địa chỉ IP dân dụng. Một trang web cũng có thể chọn giới hạn quyền truy cập vào một trang web từ các khu vực bên ngoài khu vực họ phục vụ vì lưu lượng truy cập từ một khách hàng thực tế không bao giờ đến từ đó.

Tiêu đề yêu cầu HTTP

Cloudflare sử dụng tiêu đề yêu cầu HTTP để xác định xem bạn có phải là rô-bốt hay không. Nếu bạn có tác nhân người dùng không phải trình duyệt, chẳng hạn như python-requests/2.22.0, trình thu thập dữ liệu của bạn có thể dễ dàng bị chọn là bot. Cloudflare cũng có thể chặn bot của bạn nếu nó gửi yêu cầu thiếu tiêu đề mà nếu không thì sẽ có trong trình duyệt. Hoặc nếu bạn có tiêu đề không khớp dựa trên tác nhân người dùng của mình. Ví dụ: bao gồm tiêu đề sec-ch-ua-full-version-list: cho tác nhân người dùng Firefox.

Lấy dấu vân tay TLS

Kỹ thuật này cho phép antibot của Cloudflare xác định máy khách đang được sử dụng để gửi yêu cầu đến máy chủ.

Mặc dù có nhiều phương pháp lấy dấu vân tay TLS (như JA3, JARM và CYU), nhưng mỗi phương pháp triển khai đều tạo ra dấu vân tay tĩnh cho mỗi máy khách yêu cầu. Lấy dấu vân tay TLS hữu ích vì cách triển khai TLS của trình duyệt có xu hướng khác với cách triển khai TLS của các phiên bản phát hành khác, các trình duyệt khác và các thư viện dựa trên yêu cầu. Ví dụ: trình duyệt Chrome trên Windows (phiên bản 104) sẽ có dấu vân tay khác với tất cả các trình duyệt sau:

Trình duyệt Chrome trên Windows (phiên bản 87) Trình duyệt Firefox Trình duyệt Chrome trên thiết bị Android Thư viện yêu cầu HTTP Python Việc xây dựng dấu vân tay TLS diễn ra trong quá trình Bắt tay TLS. Cloudflare phân tích các trường được cung cấp trong thông báo 'client hello', chẳng hạn như bộ mã hóa, phần mở rộng và đường cong elliptic, để tính toán hàm băm dấu vân tay cho một khách hàng nhất định.

Tiếp theo, hàm băm đó được tra cứu trong cơ sở dữ liệu dấu vân tay được thu thập trước để xác định máy khách mà yêu cầu đến từ đó. Giả sử hàm băm của máy khách khớp với hàm băm dấu vân tay được phép (tức là dấu vân tay của trình duyệt). Trong trường hợp đó, Cloudflare sẽ so sánh tiêu đề tác nhân người dùng từ yêu cầu của máy khách với tác nhân người dùng được liên kết với hàm băm dấu vân tay đã lưu trữ.

Nếu chúng khớp, hệ thống bảo mật sẽ cho rằng yêu cầu bắt nguồn từ một trình duyệt chuẩn. Ngược lại, sự không khớp giữa dấu vân tay TLS của máy khách và tác nhân người dùng được quảng cáo của máy khách cho thấy rõ ràng là sử dụng phần mềm bot tùy chỉnh, dẫn đến yêu cầu bị chặn.

Dấu vân tay HTTP/2

Đặc điểm kỹ thuật HTTP/2 là phiên bản giao thức HTTP chính thứ hai, được công bố vào ngày 14 tháng 5 năm 2015, dưới dạng RFC 7540. Giao thức này được hỗ trợ bởi tất cả các trình duyệt chính.

Mục tiêu chính của HTTP/2 là cải thiện hiệu suất của các trang web và ứng dụng web bằng cách giới thiệu tính năng nén trường tiêu đề và cho phép các yêu cầu và phản hồi đồng thời trên cùng một kết nối TCP. Để thực hiện điều này, nền tảng của HTTP/1.1 đã được mở rộng với các tham số và giá trị mới. Các thành phần bên trong mới này là nền tảng mà dấu vân tay HTTP/2 dựa trên.

Lớp đóng khung nhị phân là một bổ sung mới cho HTTP/2 và là trọng tâm của dấu vân tay HTTP/2.

Nếu bạn quan tâm đến phân tích chuyên sâu hơn về dấu vân tay HTTP/2, bạn nên đọc phương pháp do Akamai đề xuất để lấy dấu vân tay máy khách HTTP2 tại đây: Lấy dấu vân tay thụ động của máy khách HTTP/2. Nhưng hiện tại, đây là tóm tắt:

Ba thành phần chính tạo nên dấu vân tay HTTP/2:

Khung: SETTINGS_HEADER_TABLE_SIZE, SETTINGS_ENABLE_PUSH, SETTINGS_MAX_CONCURRENT_STREAMS, SETTINGS_INITIAL_WINDOW_SIZE, SETTINGS_MAX_FRAME_SIZE, SETTINGS_MAX_HEADER_LIST_SIZE, WINDOW_UPDATE ** Thông tin ưu tiên luồng:** StreamID:Exclusivity_Bit:Dependant_StreamID:Weight Thứ tự trường tiêu đề giả: Thứ tự của các tiêu đề :method, :authority, :scheme và :path. Nếu bạn tò mò, bạn có thể kiểm tra bản demo dấu vân tay HTTP/2 trực tiếp bằng cách nhấp vào đây.

Giống như dấu vân tay TLS, mỗi máy khách yêu cầu sẽ có dấu vân tay HTTP/2 tĩnh. Để xác định tính hợp lệ của yêu cầu, Cloudflare luôn xác minh rằng dấu vân tay và cặp tác nhân người dùng từ yêu cầu khớp với dấu vân tay được lưu trữ trong cơ sở dữ liệu của họ.

Dấu vân tay HTTP/2 và dấu vân tay TLS song hành với nhau. Trong số tất cả các kỹ thuật phát hiện bot thụ động mà Cloudflare sử dụng, đây là hai kỹ thuật khó kiểm soát nhất về mặt kỹ thuật trong bot dựa trên yêu cầu. Tuy nhiên, chúng cũng là những kỹ thuật quan trọng nhất. Vì vậy, bạn muốn đảm bảo rằng mình thực hiện đúng hoặc có nguy cơ bị chặn!

Được rồi! Bây giờ, bạn hẳn đã hiểu rõ về cách Cloudflare phát hiện bot thụ động. Nhưng hãy nhớ rằng: đó chỉ là một nửa câu chuyện. Bây giờ, hãy cùng xem cách họ thực hiện chủ động!

Các kỹ thuật phát hiện bot chủ động của Cloudflare

Khi bạn truy cập một trang web được Cloudflare bảo vệ, nhiều lần kiểm tra liên tục được chạy trên phía máy khách (tức là trong trình duyệt cục bộ của bạn) để xác định xem bạn có phải là rô-bốt hay không. Sau đây là danh sách một số phương pháp họ sử dụng (một lần nữa, không đầy đủ):

CAPTCHA

Trước đây, CAPTCHA là phương pháp được sử dụng để phát hiện bot. Tuy nhiên, ai cũng biết rằng chúng gây hại cho trải nghiệm của người dùng cuối. Cloudflare có cung cấp captcha cho người dùng hay không phụ thuộc vào một số yếu tố, chẳng hạn như:

Cấu hình trang web. Quản trị viên trang web có thể chọn bật CAPTCHA mọi lúc, đôi khi hoặc không bao giờ. Mức độ rủi ro. Cloudflare có thể chọn chỉ cung cấp CAPTCHA nếu lưu lượng truy cập đáng ngờ. Ví dụ: CAPTCHA có thể được hiển thị nếu người dùng duyệt trang web bằng ứng dụng khách Tor, nhưng không hiển thị nếu người dùng chạy trình duyệt web tiêu chuẩn như Google Chrome. Đối với những trường hợp này, có thể bỏ qua CAPTCHA của Cloudflare và chúng ta sẽ xem cách thực hiện bên dưới. Trước đây, Cloudflare sử dụng reCAPTCHA làm nhà cung cấp captcha chính của họ. Nhưng kể từ năm 2020, họ đã chuyển sang sử dụng hCaptcha độc quyền. Dưới đây là ví dụ về hCaptcha xuất hiện trên trang web được Cloudflare bảo vệ:

Tích hợp Cloudflare hCAPTCHA Nhấp để mở hình ảnh ở chế độ toàn màn hình Bạn có thấy bực bội khi trình thu thập dữ liệu web của mình bị chặn hết lần này đến lần khác không? API ZenRows xử lý các proxy xoay vòng và trình duyệt không có giao diện cho bạn. Dùng thử MIỄN PHÍ

Dấu vân tay Canvas

Dấu vân tay Canvas cho phép hệ thống xác định lớp thiết bị của máy khách web. Lớp thiết bị đề cập đến sự kết hợp giữa trình duyệt, hệ điều hành và phần cứng đồ họa của hệ thống được sử dụng để truy cập trang web.

Canvas là API HTML5 được sử dụng để vẽ đồ họa và hoạt ảnh trên trang web bằng JavaScript. Để tạo dấu vân tay canvas, trang web sẽ truy vấn API canvas của trình duyệt để hiển thị hình ảnh. Sau đó, hình ảnh đó sẽ được băm để tạo dấu vân tay.

Kỹ thuật này dựa trên việc lấy hệ thống hiển thị đồ họa của hệ thống làm hàm không thể sao chép vật lý. Nghe có vẻ phức tạp, vậy nên hãy để tôi giải thích.

Dấu vân tay canvas phụ thuộc vào nhiều lớp của hệ thống máy tính, chẳng hạn như:

Phần cứng. GPU Phần mềm cấp thấp. Trình điều khiển GPU, Hệ điều hành (phông chữ, thuật toán hiển thị khử răng cưa/dưới pixel) Phần mềm cấp cao Trình duyệt web (công cụ xử lý hình ảnh) Vì sự thay đổi trong bất kỳ danh mục nào trong số này sẽ tạo ra dấu vân tay duy nhất, nên kỹ thuật này phân biệt chính xác giữa các lớp thiết bị.

Tôi muốn làm rõ điều này: dấu vân tay canvas không chứa đủ thông tin để theo dõi và xác định chính xác các cá nhân hoặc bot duy nhất. Thay vào đó, mục đích chính của nó là phân biệt chính xác giữa các lớp thiết bị.

Trong bối cảnh phát hiện bot, điều này hữu ích vì bot có xu hướng nói dối về công nghệ cơ bản của chúng (thông qua tiêu đề tác nhân người dùng của chúng). Cloudflare có một tập dữ liệu lớn về dấu vân tay canvas hợp lệ + cặp tác nhân người dùng. Sử dụng máy học, họ có thể phát hiện ra hành vi giả mạo thuộc tính thiết bị (ví dụ: tác nhân người dùng, hệ điều hành hoặc GPU) bằng cách tìm kiếm sự không khớp giữa dấu vân tay canvas của bạn và dấu vân tay mong đợi.

Cloudflare sử dụng một phương pháp dấu vân tay canvas cụ thể, Dấu vân tay Picasso của Google.

Nếu bạn muốn xem dấu vân tay canvas hoạt động, hãy xem bản demo trực tiếp của Browserleak.

Theo dõi sự kiện

Cloudflare thêm trình lắng nghe sự kiện vào các trang web. Những trình lắng nghe này lắng nghe các hành động của người dùng, chẳng hạn như chuyển động chuột, nhấp chuột hoặc nhấn phím. Hầu hết thời gian, người dùng thực sự sẽ cần sử dụng chuột hoặc bàn phím của họ để duyệt. Nếu Cloudflare thấy người dùng liên tục không sử dụng chuột hoặc bàn phím, họ có thể cho rằng người dùng là bot.

Truy vấn API môi trường

Đây là một danh mục rất rộng. Trình duyệt có hàng trăm API web có thể được sử dụng để phát hiện bot. Tôi sẽ cố gắng hết sức để chia chúng thành 4 danh mục:

API dành riêng cho trình duyệt. Các thông số kỹ thuật này tồn tại trong một trình duyệt nhưng có thể không tồn tại trong trình duyệt khác. Ví dụ: window.chrome là một thuộc tính chỉ tồn tại trong trình duyệt Chrome. Nếu dữ liệu bạn gửi cho Cloudflare cho biết bạn đang sử dụng trình duyệt Chrome nhưng gửi bằng tác nhân người dùng Firefox, họ sẽ biết có điều gì đó không ổn. API dấu thời gian. Cloudflare sử dụng API dấu thời gian, chẳng hạn như Date.now() hoặc window.performance.timing.navigationStart để theo dõi số liệu tốc độ của người dùng. Người dùng sẽ bị chặn nếu dấu thời gian không giống như hoạt động duyệt web thông thường của con người. Một số ví dụ bao gồm: duyệt web quá nhanh hoặc dấu thời gian không khớp (chẳng hạn như dấu thời gian navigationStart từ trước khi trang được tải). Phát hiện trình duyệt tự động. Cloudflare truy vấn trình duyệt để tìm các thuộc tính chỉ tồn tại trong môi trường trình duyệt web tự động. Ví dụ: sự tồn tại của thuộc tính window.document.selenium_unwrapped hoặc window.callPhantom cho biết việc sử dụng Selenium và PhantomJS tương ứng. Vì những lý do hiển nhiên, bạn sẽ bị chặn nếu phát hiện ra điều này. Phát hiện Sandboxing. Đối với mục đích của chúng tôi, sandboxing đề cập đến nỗ lực mô phỏng trình duyệt trong môi trường không phải trình duyệt. Cloudflare có các biện pháp kiểm tra để ngăn mọi người cố gắng giải quyết các thách thức của mình bằng các môi trường trình duyệt được mô phỏng, chẳng hạn như trong NodeJS bằng cách sử dụng JSDOM. Ví dụ: tập lệnh có thể tìm kiếm đối tượng quy trình, chỉ tồn tại trong NodeJS. Chúng cũng có thể phát hiện xem các hàm đã được sửa đổi hay chưa bằng cách sử dụng Function.prototype.toString.call(functionName) trên hàm đang đề cập.

Cốt lõi của bảo vệ bot Cloudflare

Giống như nhiều antibot khác, Cloudflare thu thập dữ liệu từ tất cả các phương pháp trên dưới dạng dữ liệu cảm biến và xác thực dữ liệu đó để tìm ra sự không nhất quán ở phía máy chủ.

Chà, thật là nhiều thông tin! Bây giờ bạn hẳn đã hiểu về các kỹ thuật phát hiện bot được Cloudflare sử dụng.

Cho đến nay, chúng ta chỉ thảo luận về các khái niệm cấp cao mà không có quá nhiều thông tin cụ thể về tập lệnh thực tế của Cloudflare. Nhưng đừng lo lắng. Chúng ta sẽ xem xét các tùy chọn khác nhau để bỏ qua Cloudflare, bắt đầu bằng cách trực tiếp nhất.

Phương pháp #1: Bỏ qua Cloudflare CDN bằng cách gọi máy chủ gốc

Cloudflare chỉ có thể chặn các yêu cầu đi qua mạng của mình, vậy thì sẽ thật tuyệt nếu chúng ta có thể trực tiếp gửi yêu cầu đến máy chủ gốc? Không có hàng phòng thủ nào giữa bạn và dữ liệu bạn muốn!

Điều này không phải lúc nào cũng khả thi, nhưng hữu ích khi khả thi. Bắt đầu bằng cách tìm địa chỉ IP của máy chủ lưu trữ nội dung. Khi bạn có IP gốc, bạn có thể thực hiện các yêu cầu của mình đến các máy chủ không được bảo vệ bằng phần mềm chống bot của Cloudflare.

Chúng ta có hai bước ở đây: lấy địa chỉ IP gốc và thực hiện yêu cầu.

Tìm địa chỉ IP gốc

Các trang web được Cloudflare bảo vệ sẽ ẩn bản ghi DNS của chúng... nhưng có thể không phải ở mọi nơi: một số tên miền phụ không được bảo vệ, dịch vụ cũ hoặc thư có thể khả dụng dưới cùng một tên miền nhưng lại trỏ đến máy chủ gốc.

Có một số trang web có thể cung cấp cho bạn thông tin hữu ích về vấn đề này. Ví dụ: các cơ sở dữ liệu như Shodan và Censys hoặc các công cụ như CloudFlair và CloudPeler có thể hiển thị một số thông tin bên trong của chúng. Không phải tất cả các mục tiêu đều xuất hiện ở đó và nhiều mục tiêu sẽ không có mục nhập hữu ích nào, nhưng một số có thể bị lộ dữ liệu.

Yêu cầu dữ liệu từ máy chủ gốc

Bạn đã có địa chỉ IP gốc, tuyệt! Nhưng bây giờ... phải làm gì với nó? Bạn có thể thử dán nó vào thanh URL trên trình duyệt của mình nhưng có thể không thành công. Cấu hình máy chủ phổ biến là chỉ cho phép kết nối bằng tên miền hợp lệ, chẳng hạn như example.com, chứ không phải địa chỉ IP.

Nhưng việc sử dụng tên miền sẽ chuyển đến DNS, đúng không? Vì vậy, chúng ta cần tránh những điều đó.

Bạn có thể thử các công cụ như cURL cho phép bạn gửi yêu cầu đến IP mục tiêu nhưng buộc máy chủ. Một tùy chọn khác là thử buộc tệp máy chủ của bạn (tức là /etc/hosts) vì yêu cầu sẽ không kiểm tra DNS và sẽ sử dụng IP mà bạn đã đặt thủ công ở đó.

Tất cả những điều này nghe có vẻ hay, nhưng phương pháp đầu tiên sẽ không hiệu quả trong nhiều trường hợp. Trong phần tiếp theo, chúng ta sẽ xem cách antibot của Cloudflare đưa các kỹ thuật phòng thủ của họ vào thực tế bằng cách phân tích cốt lõi của nó: phòng chờ Cloudflare.

để biết thêm thông tin vui lòng đọc bài viết gốc:

https://www.zenrows.com/blog/bypass-cloudflare

Bình luận