Cách sử dụng Cypress để bỏ qua CAPTCHA

Specialist in Anti-Bot Strategies
Người dùng thực sự có thể được phân biệt với bot tự động bằng cách sử dụng một kỹ thuật gọi là CAPTCHA, viết tắt của "Completely Automated Public Turing tests to tell Computers and Humans Apart". Đây là một nhiệm vụ được thiết kế để dễ dàng cho người thực hiện nhưng khó khăn đối với robot. Để ngăn chặn bot, CAPTCHA thường được đặt ở những khu vực cụ thể trên trang web.
Các nhà cung cấp CAPTCHA được sử dụng rộng rãi nhất là Google reCAPTCHA, hCaptcha và BotDetect. Những điều này hỗ trợ một hoặc nhiều khó khăn sau đây:
- CAPTCHA dựa trên văn bản: Để giải quyết những vấn đề này, người dùng phải cung cấp một chuỗi ký tự hoặc số bị xáo trộn.
- CAPTCHA dựa trên hình ảnh: Trong một lưới ảnh, người dùng phải xác định các đối tượng cụ thể.
- CAPTCHA dựa trên âm thanh: Trong những trường hợp này, người dùng được yêu cầu nhập các từ họ nghe được.
- CAPTCHA dựa trên câu đố: Để vượt qua, người dùng phải nhấp vào đối tượng chính xác để hoàn thành một trò chơi nhỏ hoặc cung cấp một phản hồi đơn giản cho một câu hỏi.
Bạn có thể sử dụng các dịch vụ dựa trên người vận hành thực sự để trả lời những khó khăn này theo thời gian thực, hoặc bạn có thể kết nối chương trình của mình với các thư viện xử lý CAPTCHA. Tuy nhiên, CAPTCHA được mã hóa cứng rất hiếm, vì chúng bất tiện và làm giảm trải nghiệm của người dùng.
Thông thường hơn, CAPTCHA là một phần của các chương trình chống bot tinh vi hơn như WAF.
Khi những giải pháp này tin rằng người dùng có thể là bot, chúng sẽ hiển thị CAPTCHA một cách động. Trong những trường hợp này, bạn có thể ngăn chặn CAPTCHA bằng cách khiến bot của bạn hoạt động như một người và sử dụng trình duyệt thực sự. Tuy nhiên, đây là một cuộc chiến không ngừng nghỉ, và bạn sẽ cần cập nhật kịch bản tự động của mình thường xuyên để đối phó với các thuật toán phát hiện bot thay đổi liên tục.
Sử dụng một ứng dụng cập nhật dựa trên mô phỏng người dùng như CAPTCHA Solver của Scrapeless là một kỹ thuật hiệu quả hơn để vượt qua CAPTCHA.
Bạn có mệt mỏi với CAPTCHA và các khối chặn web scraping liên tục?
Scrapeless: giải pháp web scraping tất cả trong một tốt nhất hiện có!
Sử dụng bộ công cụ mạnh mẽ của chúng tôi để khai thác đầy đủ tiềm năng của việc trích xuất dữ liệu của bạn:
Giải pháp CAPTCHA tốt nhất
Giải quyết tự động các CAPTCHA phức tạp để đảm bảo việc scraping liên tục và trơn tru.
Hãy thử miễn phí!
Cypress và CAPTCHA: Một mối quan hệ bất ổn
Cypress là một công cụ kiểm tra giao diện người dùng được thiết kế cho Web hiện tại. Mặc dù nó có thể được sử dụng cho việc web scraping và các hoạt động tự động trình duyệt chung khác, nhưng trường hợp sử dụng chính của nó là kiểm tra end-to-end (E2E). Do đó, nó chủ yếu được dự định để tương tác với các trang web và trang web mà bạn sở hữu hoặc quản lý.
Các vấn đề bắt đầu xuất hiện khi bạn sử dụng Cypress để nhắm mục tiêu vào các trang web bên ngoài hoặc của bên thứ ba. Tài liệu chính thức làm rõ rằng cách xử lý tốt nhất là giảm thiểu tương tác với các trang web của bên thứ ba. Nguy cơ bị xác định là bot và nhận được CAPTCHA đặc biệt là một trong những lý do chính được đề cập trong tài liệu.
Điều gì khiến điều này trở thành vấn đề? Chà, vì các chương trình tự động được thiết kế để bị chặn bởi CAPTCHA. Do đó, chúng có thể can thiệp vào việc tự động hóa trình duyệt Cypress của bạn. Điều quan trọng cũng cần nhớ rằng, mặc dù khó khăn, nhưng việc tránh CAPTCHA của Cypress là khả thi. Hãy xem các phần sau để tìm hiểu thêm!
Cách sử dụng Cypress để quản lý CATPCHA
Như bạn vừa phát hiện ra, Cypress thừa nhận trong tài liệu của mình rằng một trong những vấn đề lớn nhất của nó là CAPTCHA. Nhưng chưa phải lúc để từ bỏ. Hãy cùng khám phá một số chiến lược có thể để đưa logic xử lý CAPTCHA của Cypress vào thực tế!
Phương pháp 1: Tắt CAPTCHA
Hầu hết các nhà cung cấp CAPTCHA cho phép người dùng bỏ qua hoặc vô hiệu hóa các trở ngại khi họ đang ở trong môi trường thử nghiệm. Sau đó, nếu bạn chịu trách nhiệm về trang web nơi cần tự động hóa, bạn phải loại bỏ hoàn toàn CAPTCHA hoặc thay thế nó bằng một CAPTCHA đơn giản hơn.
Ví dụ, đối với các tình huống thử nghiệm, bạn có thể tạo một khóa khác với reCAPTCHA v3. Bạn có thể sử dụng các khóa thử nghiệm sau cho reCAPTCHA v2:
- Khóa trang web:
6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
- Khóa bí mật:
6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
Phương pháp 2: Tự động hóa tương tác CAPTCHA
Một số CAPTCHA đơn giản như đánh dấu một hộp kiểm; một ví dụ như vậy là tiện ích "Không CAPTCHA" của reCAPTCHA.
Những nhiệm vụ này có vẻ đơn giản lúc đầu, nhưng chúng có thể khá phức tạp vì chúng kiểm tra chuyển động của chuột của bạn để xác định xem bạn có phải là người hay không. Tuy nhiên, không phải mọi CAPTCHA đều khó như vậy. Một số dễ vượt qua hơn và được thiết kế để đánh bại các bot đơn giản. Trong một số trường hợp nhất định, bạn có thể thử tự động hóa chúng bằng cách sử dụng một số logic Cypress.
Hãy nhớ rằng Cypress không thể xử lý iframe xuyên miền một cách tự động. Để giải quyết hạn chế, hãy thay đổi cài đặt chromeWebSecurity trong tệp cypress.json thành false:
language
{
"chromeWebSecurity": false
}
Tiếp theo, bạn có thể chọn và nhấp vào phần tử hộp kiểm CAPTCHA. Mã tự động để thực hiện điều đó trong trường hợp một widget reCAPTCHA "Không CAPTCHA" sẽ là:
language
cy.get('iframe[src*=recaptcha]')
.its('0.contentDocument')
.should(d => d.getElementById('recaptcha-token').click())
Hãy nhớ rằng đây chỉ là một giải pháp tạm thời và sẽ không hiệu quả trong hầu hết các trường hợp. Ngày nay, CAPTCHA đủ thông minh để phân biệt giữa cú nhấp chuột của con người và cú nhấp chuột từ robot. Cuối cùng, chính xác đó là mục đích của CAPTCHA.
Phương pháp 3: Bao gồm trình duyệt chống bot
Hai phương thức bỏ qua CAPTCHA của Cypress trước đó quá chủ quan để được sử dụng cho mục tiêu thực tế. Cài đặt Cypress để quản lý trình duyệt chống phát hiện là cách tốt hơn để thực hiện. Một trình duyệt chống phát hiện là một trình duyệt được tùy chỉnh để ngăn chặn các trang web phát hiện hành vi tự động, trong trường hợp bạn không quen thuộc với công nghệ đó.
Tiếp theo, bạn có thể cung cấp cho Cypress các hướng dẫn sau để bắt đầu một tập lệnh trong trình duyệt được chỉ định:
language
cypress open --browser <path_to_your_browser>
Trong trường hợp này, đường dẫn tuyệt đối _to_your_browser chứa trình duyệt nhị phân chống phát hiện được đại diện bởi .
Tương tự, bằng cách thêm đoạn mã sau vào cypress.config.js, bạn có thể thiết lập giao diện người dùng Cypress để hiển thị trình duyệt chống phát hiện của bạn dưới dạng một tùy chọn có thể chọn:
Tương tự, bằng cách thêm đoạn mã sau vào cypress.config.js, bạn có thể thiết lập giao diện người dùng Cypress để hiển thị trình duyệt chống phát hiện của bạn dưới dạng một tùy chọn có thể chọn:
language
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
const antidetectBrowser = {
name: '<ANTIDETECT_BROWSER_NAME>',
channel: 'stable',
family: 'chromium',
displayName: '<ANTIDETECT_BROWSER_DISPLAY_NAME>',
version,
path: '<path_to_your_browser>',
majorVersion,
}
return {
browsers: config.browsers.concat(antidetectBrowser),
}
},
},
})
Hãy nhớ rằng việc yêu cầu Cypress thực thi mã tự động của bạn trong trình duyệt có tính năng chống phát hiện sẽ chỉ làm giảm khả năng mã đó bị hiểu nhầm là bot. Tuy nhiên, các hệ thống chống bot vẫn có thể áp đặt một số CAPTCHA để ngăn bạn tiếp tục nếu chúng nhận thấy bạn đang sử dụng mã tự động.
Kết luận
Bạn đọc bài viết này để hiểu về CAPTCHA và lý do chúng là một vấn đề lớn đối với Cypress. Bạn cũng đã xem xét ba cách thay thế để vượt qua chúng, mặc dù có những nhược điểm đáng kể đối với mỗi chiến lược này.
Ngay cả với logic bỏ qua CAPTCHA được phát triển tốt của Cypress, kịch bản của bạn vẫn có thể bị gắn cờ là tự động bởi các hệ thống phát hiện bot mạnh mẽ. Cách hành động tốt nhất là kết nối với trang web mục tiêu của bạn bằng cách sử dụng API mở khóa có thể cung cấp HTML của bất kỳ trang nào mà không có CAPTCHA.
Có một API như vậy; nó được biết đến là Web Unlocker. Thông qua tích hợp proxy, điều này quản lý dấu vân tay trình duyệt, tự động luân phiên IP thoát với mỗi yêu cầu, khởi tạo lại tự động và giải quyết CAPTCHA cho bạn. Các biện pháp phòng ngừa chống bot giờ đây không còn rắc rối!
Tại Scrapeless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định hiện hành và chính sách bảo mật của trang web. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm pháp lý đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động thu thập dữ liệu nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem lại các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.