Cách vượt Captcha Google bằng python
Bài viết này dành cho những bạn đang làm tool reg, đăng ký nhiều tài khoản trên website. Hoặc cũng có thể là crawl data và bị dính captcha mà không biết cách giải quyết. Khi bị dính captcha, bạn phải dành ra từ 3 -5s để giải chúng. Đối với những người dùng bình thường thì không sao nhưng với người dùng tool để tạo từ vài trăm đến vài nghìn tài khoản hoặc request thì đây không phải là cách giải quyết. Vậy nên trong bài viết này, mình sẽ hướng dẫn các bạn cách giải captcha Google bằng Python siêu dễ nhé.
Captcha là gì?
CAPTCHA là viết tắt của Completely Automated Public Turing test to tell Computers and Humans Apart. CAPTCHA là công cụ được sử dụng để phân biệt giữa người dùng thực và máy tính, chẳng hạn như bot.CAPTCHA đưa ra những thử thách khó thực hiện đối với máy tính nhưng tương đối dễ dàng đối với con người. Ví dụ: xác định các chữ cái hoặc chọn đèn giao thông trong một tấm ảnh khó nhìn.
CAPTCHA hoạt động bằng cách cung cấp thông tin cho người dùng thực để giải mã. CAPTCHA truyền thống cung cấp các chữ cái và số bị bóp méo hoặc chồng chéo để người dùng xác nhận. Các chữ cái bị biến dạng khiến bot khó giải mã và ngăn chặn truy cập cho đến khi captcha được xác minh.
Kể từ khi CAPTCHA được giới thiệu, các bot sử dụng machine learning đã được phát triển. Các bot này có khả năng xác minh CAPTCHA truyền thống tốt hơn bằng các thuật toán được huấn luyện nhiều lần. Do sự phát triển này, các phương pháp CAPTCHA mới hơn dựa trên các bài kiểm tra phức tạp hơn được ra đời. Ví dụ: reCAPTCHA yêu cầu nhấp vào một khu vực cụ thể và đợi cho đến khi giải thành công.
Lấy KeyAPI của AzCaptcha
Bước 1: Đầu tiên, các bạn truy cập vào trang web AZcaptcha và đăng ký tài khoản mới. Mỗi tài khoản mới tạo sẽ được tặng $0.02, các bạn có thể giải từ 10 đến 20 lần tùy vào loại Captcha. Lưu ý: Mình khuyên các bạn nên sử dụng email tạm thời để tạo tài khoản nhé. Nếu hết tiền thì chỉ cần tạo tiếp tài khoản mới khác là được.
Bước 2: Ở trang dashboard, các bạn sang bên phái sẽ thấy keyAPI, sao chép keyAPI đó.
Cách vượt Captcha Google bằng python
Đầu tiên, các bạn cần đảm bảo hệ thống của mình có đầy đủ python, pip. Sau đó cài đặt thêm 2 package request và bs. Mình cũng sẽ sử dụng trang reCaptcha demo để làm ví dụ trong bài viết này.
Các bạn nhấn F12 vào tìm từ khóa sitekey bằng Ctrl + F.
Như các bạn thấy ở trên, thẻ div có class “g-recaptcha” có data-sitekey là “6Le-wvk……”. Trong python có một thư viện giúp chúng ta bóc tách html và lấy được data-sitekey bên trong thẻ div là bs4.
from bs4 import BeautifulSoup import requests from time import sleep URL = 'https://www.google.com/recaptcha/api2/demo' def get_siteKey(url): response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") g_recaptcha = soup.find_all('div', {'class' : 'g-recaptcha'}) sitekey = g_recaptcha[0].get('data-sitekey') return sitekey
Tiếp theo là hàm solve_Captcha dùng để giải captcha. Các bạn thay {keyAPI} bằng API mà bạn lấy được trong trang AZcaptcha. Sau khi gửi request giải captcha thành công thì server sẽ gửi về id của captcha của bạn. ID này dùng để nhận diện captcha mà bạn gửi lên server. Các bạn nên để chương trình ngừng tầm 30 giây để server tiến hành giải captcha nhé.
def solve_Captcha(REQ_URL, url, keyAPI, sitekey): payload = { 'key': keyAPI, 'method': 'userrecaptcha', 'googlekey': sitekey, 'pageurl': url, 'here': 'now' } response = requests.post(REQ_URL, data=payload) return response BASE_URL = 'http://azcaptcha.com' REQ_URL = BASE_URL + '/in.php' RES_URL = BASE_URL + '/res.php' keyAPI = '{keyAPI}' response = solve_Captcha(REQ_URL, URL, keyAPI, siteKey) if response.status_code == 200: print('Solving captcha...') id = response.text.split('|')[1] sleep(30)
Tiếp theo các bạn sử dụng hàm get_gCaptcha để kiểm tra xem captcha đã được giải xong chưa. Nếu xong rồi thì chúng ta sẽ lấy được gCaptcha, còn nếu chưa xong thì chúng ta lại tiếp tục gọi hàm get_gCaptcha tiếp để kiểm tra.
def get_gCaptcha(RES_URL, keyAPI, id): payload = { 'key': keyAPI, 'action': 'get', 'id': id, } response = requests.post(RES_URL, data = payload) if response.text == 'CAPCHA_NOT_READY': print('CAPTCHA NOT READY. Try again in 30s.') sleep(30) gCaptcha = get_gCaptcha(RES_URL, keyAPI, id) return gCaptcha if 'OK' in response.text: gCaptcha = response.text.split('|')[1] return gCaptcha
Toàn bộ code:
from bs4 import BeautifulSoup import requests from time import sleep URL = 'https://www.google.com/recaptcha/api2/demo' def get_siteKey(url): response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") g_recaptcha = soup.find_all('div', {'class' : 'g-recaptcha'}) sitekey = g_recaptcha[0].get('data-sitekey') return sitekey siteKey = get_siteKey(URL) print(siteKey) def solve_Captcha(REQ_URL, url, keyAPI, sitekey): payload = { 'key': keyAPI, 'method': 'userrecaptcha', 'googlekey': sitekey, 'pageurl': url, 'here': 'now' } response = requests.post(REQ_URL, data=payload) return response def get_gCaptcha(RES_URL, keyAPI, id): payload = { 'key': keyAPI, 'action': 'get', 'id': id, } response = requests.post(RES_URL, data = payload) if response.text == 'CAPCHA_NOT_READY': print('CAPTCHA NOT READY. Try again in 30s.') sleep(30) gCaptcha = get_gCaptcha(RES_URL, keyAPI, id) return gCaptcha if 'OK' in response.text: gCaptcha = response.text.split('|')[1] return gCaptcha BASE_URL = 'http://azcaptcha.com' REQ_URL = BASE_URL + '/in.php' RES_URL = BASE_URL + '/res.php' keyAPI = '{keyAPI}' response = solve_Captcha(REQ_URL, URL, keyAPI, siteKey) if 'OK' in response.text: print('Solving captcha...') id = response.text.split('|')[1] sleep(30) gCaptcha = get_gCaptcha(RES_URL, keyAPI, id) print(gCaptcha) else: print(response.text)
Các bạn đã lấy được mã gCaptcha thành công rồi đó. Tiếp theo, các bạn chỉ cần thay mã gCaptcha vào trang bạn muốn vượt captcha bằng cách sử dụng lệnh excute javascript dưới đây:
document.getElementById("g-recaptcha-response").innerHTML="{gCaptcha}";
Vậy xong rồi đó. Chúc các bạn thành công.