Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
23/02/2023 21:02 # 1
buiducduong
Cấp độ: 22 - Kỹ năng: 1

Kinh nghiệm: 17/220 (8%)
Kĩ năng: 0/10 (0%)
Ngày gia nhập: 25/09/2020
Bài gởi: 2327
Được cảm ơn: 0
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 4

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.

Cách vượt Captcha Google bằng python 5

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.

 




 
Copyright© Đại học Duy Tân 2010 - 2024