Đầu tuần, có 1 bài mới thú vị cho các bạn đây. Hướng dẫn này làm việc với phiên bản reCAPTCHA mới nhất của Google với độ chính xác rất cao. Thực ra mã này được public trên Github cũng khá lâu rồi, tận năm 2017. Và mới đây nó nhận được bản cập nhật lớn nâng độ chính xác từ con số 85% lên đến 91%. Thật tuyệt phải không nào?
Cách hoạt động cũng khá đơn giản, reCAPTCHA thường có 2 dạng, hoặc xác nhận qua chọn hình ảnh, hoặc qua audio. Và dĩ nhiên, chúng ta sẽ lợi dụng xác nhận qua audio để đơn giản hóa vấn đề.
1. Giới thiệu uncaptcha 2:
Repo: uncaptcha2 được tạo bởi Ecthros với mục đích giáo dục. Thực ra từ lúc ra mắt phiên bản uncaptcha năm 2017, Google đã cải tiến reCAPTCHA lại bằng việc:
- Nhạy bén hơn trong việc phát hiện tool tự động hóa.
- Phát âm bằng chữ thay vì số (như trước đây).
Những thay đổi này bước đầu đã đạt được thành công trong việc ngăn chặn các vụ tấn công sử dụng unCapcha. Tuy nhiên cho đến thời điểm tháng Sáu, 2018 thì bài toán ReCaptcha đã được giải. Chúng tôi và đội ngũ Recapcha đã giữ liên lạc và trao đổi với nhau trong hơn sáu tháng. Họ hoàn toàn nắm được thông tin về việc Recapcha có thể bị tấn công và đội ngũ bên họ đã đồng ý cho chúng tôi công khai code.
2. Cách tiếp cận của unCapcha 2 rất đơn giản:
- Điều hướng đến trang web Demo ReCaptcha của Google.
- Click vào xác nhận qua audio cho ReCaptcha.
- Tải xuống audio được tạo bởi reCaptcha của Google.
- Gửi audio đến 1 dịch vụ Speech To Text.
- Phân tích và lấy kết quả về, sau đó gửi vào hộp thoại trả lời và
Nhấn gửi
, sau đó kiểm tra nếu thành công.
3. Xem Demo:
4. Hướng dẫn sử dụng:
# Bước 1: truy cập repo gốc và tải về tại đây (uncaptcha 2).
# Bước 2: có 3 lưu ý, mình chia thành 3 bước nhỏ bên dưới:
# Bước 2.1: bởi vì unCaptcha2 phải chuyển đến các tọa độ cụ thể trên màn hình, cho nên bạn sẽ cần cập nhật tọa độ dựa trên thiết lập của mình. Các tọa độ này được đặt ở đầu file run.py
.
- Trên Linux, sử dụng lệnh
xdotool getmouselocation --shell
để tìm tọa độ chuột của bạn rất dễ dàng. - Trên Windows: các bạn có thể tải công cụ Mouse Locator (20kb) hoàn toàn sạch để lấy tọa độ chuột 1 cách dễ dàng.
# Bước 2.2: bạn cũng cần điền thông tin đăng nhập của mình cho bất kỳ API Speed to Text
nào bạn chọn. Hệ thống của Google, Microsoft và IBM dường như hoạt động tốt nhất, nên các hệ thống này đã được thêm sẵn trong file queryAPI.py
. Bạn chỉ cần đặt tên người dùng và mật khẩu theo yêu cầu; đối với API của Google, bạn sẽ phải đặt biến môi trường (GOOGLE_APPLICATION_CREDENTIALS) với một file chứa thông tin đăng nhập ứng dụng Google của bạn.
# Bước 2.3: cuối cùng, cài đặt các thư viện bằng câu lệnh:
pip install -r dependencies.txt
5. Lưu ý khi sử dụng:
- unCaptcha2, cũng như phiên bản gốc hồi năm 2017, nó có ý nghĩa về nghiên cứu nhiều hơn và dĩ nhiên hiện tại vẫn làm việc (07/01/2019). Tuy nhiên, khi Google cập nhật dịch vụ của họ, có thể mã này không còn hoạt động và sẽ không được cập nhật.
- Do Google rất thông minh trong việc phát hiện các công cụ tự động hóa trên trình duyệt, do đó phiên bản unCaptcha này không sử dụng Selenium. Kết quả là cần biết tọa độ cụ thể trên màn hình để thực hiện các tác vụ: click, focus, paste,… Để unCaptcha 2 hoạt động trong dự án cụ thể, bạn sẽ cần thay đổi tọa độ cho độ phân giải màn hình của bạn.
- Mặc dù unCaptcha2 làm việc hoàn hảo chỉ trên 1 trang demo, nhưng nó có thể được thay đổi để hoạt động cho bất kỳ trang web nào sử dụng reCaptcha của Google bởi logic để phá ReCaptcha giống nhau.
- Ngoài ra, để unCaptcha2 hoạt động, bạn cần các API dịch vụ bên thứ 3 để thực hiện các truy vấn cần thiết. Do đó, nếu bạn đang thực sự chạy cho nghiên cứu của bạn, bạn cần có khóa API của 6 dịch vụ được sử dụng. Khóa API có thể nhận biết dễ dàng bằng 1 chuỗi ký tự
X
. Thú vị là các công cụ tạo API này đều được bảo vệ bởi reCaptcha, do đó unCaptcha 2 sẽ tự cung tự cầu bằng các giải quyết reCaptcha để tạo khóa API mới.
Ok, mình đã hoàn thành xong bài viết này. Hi vọng là a/e sẽ tìm được điều thú vị. Và biết đâu, anh em có thể dựa vào cách này để tự fix trong những bản cập nhật tiếp theo của Google thì sao?
Nếu bài viết thú vị, hãy like và share để nhiều người biết đến Share Ngay hơn các bạn nhé!