Giải quyết reCAPTCHA bằng Python, Java và C++

Anh Tuan
Data Science Expert
11-Oct-2024

Khi tôi bắt đầu làm việc với reCAPTCHA, tôi nhận thấy nó là một con dao hai lưỡi. Một mặt, nó rất hiệu quả trong việc lọc bỏ các bot, nhưng mặt khác, nó có thể là một trở ngại đối với các dự án tự động hợp pháp. Vì vậy, trong bài viết này, tôi sẽ hướng dẫn bạn cách giải quyết reCAPTCHA bằng cách sử dụng ba ngôn ngữ lập trình mạnh mẽ: Python, Java và C++. Mỗi ngôn ngữ mang lại lợi thế riêng trong việc xử lý các thách thức reCAPTCHA, mang đến sự linh hoạt tùy thuộc vào nhu cầu của dự án của bạn. Chúng ta sẽ bắt đầu bằng cách hiểu CAPTCHA và reCAPTCHA là gì, cũng như tầm quan trọng của chúng trong bảo mật web
CAPTCHA là gì?
Hãy bắt đầu với khái niệm cơ bản nhất: CAPTCHA là gì, hay "Kiểm tra Turing công khai tự động hoàn toàn để phân biệt Máy tính và Con người", là một phương pháp phổ biến để phân biệt người dùng là người với bot. Nó giúp các trang web tránh các cuộc tấn công tự động, spam hoặc khai thác bằng cách yêu cầu người dùng giải quyết các nhiệm vụ dễ dàng đối với con người nhưng khó đối với máy móc. Điều này có thể là nhận dạng văn bản bị bóp méo, chọn hình ảnh có các đối tượng cụ thể hoặc giải quyết các câu đố logic.
reCAPTCHA là gì?
reCAPTCHA là một dịch vụ do Google phát triển giúp bảo vệ các trang web khỏi spam và lạm dụng bằng cách phân biệt người dùng là người với bot. Nó đã phát triển theo thời gian thành các phiên bản khác nhau, mỗi phiên bản cung cấp các khả năng cụ thể.
-
reCAPTCHA v2: Đây là hình thức phổ biến nhất, nơi người dùng giải quyết các nhiệm vụ như nhấp vào hộp kiểm ("Tôi không phải là robot") hoặc chọn hình ảnh. Nó thân thiện với người dùng hơn nhưng vẫn có thể hiển thị một thử thách dựa trên các yếu tố rủi ro.
-
reCAPTCHA v3: Phiên bản này chạy ẩn danh trong nền mà không làm gián đoạn người dùng. Nó gán điểm rủi ro (0,0 đến 1,0) dựa trên hành vi của người dùng. Người dùng có nguy cơ thấp sẽ vượt qua mà không cần xem thử thách, trong khi hoạt động đáng ngờ có thể kích hoạt các bước xác minh.
-
reCAPTCHA Enterprise: Được thiết kế để bảo vệ ở cấp độ doanh nghiệp, phiên bản này cung cấp các tính năng bảo mật nâng cao cho các doanh nghiệp lớn. Nó cung cấp phân tích nâng cao, mô hình học máy và đánh giá dựa trên rủi ro được điều chỉnh cho các giao dịch có nguy cơ cao, với khả năng tùy chỉnh cao hơn để đáp ứng nhu cầu bảo mật của doanh nghiệp.
Mỗi phiên bản đều nhằm mục đích cung cấp bảo mật tối ưu đồng thời giảm thiểu ma sát cho người dùng hợp pháp, thích ứng với sự tinh vi ngày càng tăng của bot và các cuộc tấn công.
- reCAPTCHA v2 Demo
Xem demo reCAPTCHA v2- reCAPTCHA v3 Demo
Xem demo reCAPTCHA v3- reCAPTCHA Enterprise Demo
Tìm hiểu thêm về reCAPTCHA Enterprise
Giải quyết reCAPTCHA trong Python, Java và C++
Mỗi ngôn ngữ đều cung cấp điểm mạnh độc đáo khi xử lý các thách thức reCAPTCHA:
-
Python được biết đến với sự đơn giản và bộ thư viện lớn giúp tự động hóa web và thu thập dữ liệu. Sử dụng các thư viện như Selenium và Playwright, bạn có thể dễ dàng tự động hóa các tác vụ trình duyệt và bỏ qua CAPTCHA với các công cụ phù hợp.
-
Java rất phù hợp cho các ứng dụng ở cấp độ doanh nghiệp và các dự án đa nền tảng. Khả năng đa luồng và các khung như Selenium WebDriver cho phép xử lý reCAPTCHA một cách mượt mà trong các hệ thống có khả năng mở rộng.
-
C++ mang lại lợi thế về hiệu suất, làm cho nó lý tưởng cho các hệ thống yêu cầu tốc độ và độ trễ thấp. Mặc dù ít được sử dụng cho tự động hóa, nhưng nó có thể được tích hợp với các công cụ khác để giải quyết các thách thức reCAPTCHA trong môi trường hiệu suất cao.
Giới thiệu CapSolver
Khi bạn tiến xa hơn, bạn sẽ nhận thấy rằng việc giải quyết các thách thức reCAPTCHA có thể trở nên khó khăn do các thuật toán và sự phức tạp đang phát triển. Đó là lúc CapSolver xuất hiện. Đó là một dịch vụ chuyên biệt tự động hóa quy trình giải quyết reCAPTCHA với độ chính xác cao, xử lý nhiều loại CAPTCHA, bao gồm reCAPTCHA v2, reCAPTCHA v3 và nhiều hơn nữa. Bằng cách tích hợp CapSolver vào dự án Python, Java hoặc C++ của bạn, bạn có thể chuyển giao sự phức tạp của việc giải quyết CAPTCHA cho một dịch vụ chuyên dụng, cho phép các tập lệnh của bạn chạy trơn tru và hiệu quả.
Tiếp theo, chúng ta sẽ đi qua mã mẫu cho mỗi ngôn ngữ và cách bạn có thể nhanh chóng tích hợp CapSolver vào dự án của mình ...
Mã thưởng
Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn
Cách giải quyết reCAPTCHA bằng Python
Điều kiện tiên quyết
Bước 1. Nhận khóa trang
Đối với cả V2 và V3, bạn có thể tìm kiếm yêu cầu /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf
trong nhật ký yêu cầu trình duyệt, trong đó k=
là giá trị khóa chúng ta cần
Bước 2. Phân biệt V2 và V3
V2 và V3 có phương thức xử lý khác nhau. V2 yêu cầu nhận dạng hình ảnh để chọn câu trả lời, trong khi V3 tương đối không gây phiền nhiễu; Tuy nhiên, V3 yêu cầu cung cấp một Hành động trong quá trình xác minh. Dựa trên giá trị khóa đã nhận được trước đó, hãy tìm kiếm trang phản hồi, và bạn sẽ tìm thấy giá trị Hành động trên trang

Bước 3. Gọi dịch vụ CapSolver
Phân biệt các phiên bản reCAPTCHA
- Trong nhật ký yêu cầu trình duyệt, bạn có thể thấy rằng đối với V2, sau yêu cầu
/recaptcha/api2/reload
, thường cần một yêu cầu/recaptcha/api2/userverify
để nhận được mã thông hành; - Đối với V3, yêu cầu
/recaptcha/api2/reload
có thể nhận được mã thông hành trực tiếp
Ví dụ hoàn chỉnh về cuộc gọi API CapSolver
- Python reCAPTCHA V2
python
# pip install requests
import requests
import time
# TODO: đặt cấu hình của bạn
api_key = "YOUR_API_KEY" # khóa api của bạn của capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # khóa trang của trang web mục tiêu của bạn
site_url = "https://www.google.com/recaptcha/api2/demo" # url trang của trang web mục tiêu của bạn
# site_key = "6LelzS8UAAAAAGSL60ADV5rcEtK0x0lRsHmrtm62"
# site_url = "https://mybaragar.com/index.cfm?event=page.SchoolLocatorPublic&DistrictCode=BC45"
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Tạo nhiệm vụ thất bại:", res.text)
return
print(f"Nhận được taskId: {task_id} / Nhận kết quả...")
while True:
time.sleep(3) # trì hoãn
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Giải quyết thất bại! phản hồi:", res.text)
return
token = capsolver()
print(token)
- Python reCAPTCHA V3
python
# pip install requests
import requests
import time
# TODO: đặt cấu hình của bạn
api_key = "YOUR_API_KEY" # khóa api của bạn của capsolver
site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf" # khóa trang của trang web mục tiêu của bạn
site_url = "https://antcpt.com/score_detector/" # url trang của trang web mục tiêu của bạn
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV3TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"pageAction": "homepage",
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Tạo nhiệm vụ thất bại:", res.text)
return
print(f"Nhận được taskId: {task_id} / Nhận kết quả...")
while True:
time.sleep(1) # trì hoãn
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Giải quyết thất bại! phản hồi:", res.text)
return
# xác minh điểm số
def score_detector(token):
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "fr-CH,fr;q=0.9",
"content-type": "application/json",
"origin": "https://antcpt.com",
"priority": "u=1, i",
"referer": "https://antcpt.com/score_detector/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
url = "https://antcpt.com/score_detector/verify.php"
data = {
"g-recaptcha-response": token
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)
print(response.json())
print(response)
token = capsolver()
print(token)
...
...
{
'success': True,
'challenge_ts': '2024-07-19T10:50:56Z',
'hostname': 'antcpt.com',
'score': 0.7,
'action': 'homepage'
}
Cách giải quyết reCAPTCHA bằng Java
Điều kiện tiên quyết
Trước khi chúng ta đi sâu vào mã, hãy đảm bảo rằng bạn đã cài đặt các điều kiện tiên quyết sau để theo dõi thành công hướng dẫn này:
- Node.js và npm: Chúng tôi sẽ sử dụng Node.js, một thời gian chạy JavaScript, cùng với npm (Node Package Manager) để quản lý các phụ thuộc của dự án. Nếu bạn chưa cài đặt Node.js, bạn có thể tải xuống từ trang web chính thức của Node.js.
- Khóa API CapSolver: Để giải quyết hiệu quả các thách thức reCAPTCHA, bạn cần quyền truy cập vào một dịch vụ như CapSolver, chuyên về việc giải quyết các thách thức CAPTCHA theo cách lập trình. Hãy đảm bảo rằng bạn đăng ký và nhận được khóa API từ CapSolver để tích hợp nó vào giải pháp của bạn.
Sau khi bạn đã đáp ứng các điều kiện tiên quyết này, bạn đã sẵn sàng thiết lập môi trường của mình và bắt đầu giải quyết các thách thức reCAPTCHA bằng JavaScript và CapSolver.
Bước 1: Nhận khóa trang
- Trong nhật ký yêu cầu trình duyệt, hãy tìm kiếm yêu cầu
/recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
, trong đó giá trị sauk=
là Khóa trang chúng ta cần. Hoặc bạn có thể tìm thấy tất cả các tham số để giải quyết recapctha thông qua phần mở rộng CapSolver - URL là địa chỉ của trang kích hoạt reCAPTCHA V2.
Bước 2: Cài đặt thư viện yêu cầu
bash
pip install requests
Bước 3: Mã ví dụ
python
import requests
import time
from DrissionPage import ChromiumPage
# Tạo một phiên bản của ChromiumPage
page = ChromiumPage()
# Truy cập trang ví dụ kích hoạt reCAPTCHA
page.get("https://www.google.com/recaptcha/api2/demo")
# TODO: Đặt cấu hình của bạn
api_key = "khóa api của bạn của capsolver" # Khóa API CapSolver của bạn
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # Khóa trang của trang web mục tiêu của bạn
site_url = "https://www.google.com/recaptcha/api2/demo" # URL trang của trang web mục tiêu của bạn
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
# Gửi yêu cầu đến CapSolver để tạo một nhiệm vụ
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Tạo nhiệm vụ thất bại:", res.text)
return
print(f"Nhận được taskId: {task_id} / Nhận kết quả...")
while True:
time.sleep(3) # Trì hoãn
payload = {"clientKey": api_key, "taskId": task_id}
# Truy vấn kết quả nhiệm vụ
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Giải quyết thất bại! phản hồi:", res.text)
return
def check():
# Nhận giải pháp reCAPTCHA
token = capsolver()
# Đặt giá trị phản hồi reCAPTCHA
page.run_js(f'document.getElementById("g-recaptcha-response").value="{token}"')
# Gọi hàm gọi lại thành công
page.run_js(f'onSuccess("{token}")')
# Gửi biểu mẫu
page.ele('x://input[@id="recaptcha-demo-submit"]').click()
if __name__ == '__main__':
check()
Cách giải quyết reCAPTCHA bằng C++
Điều kiện tiên quyết
Trước khi chúng ta bắt đầu, hãy đảm bảo rằng bạn đã cài đặt các thư viện sau:
- cpr: Một thư viện HTTP C++.
- jsoncpp: Một thư viện C++ để phân tích cú pháp JSON.
Bạn có thể cài đặt chúng bằng vcpkg:
bash
vcpkg install cpr jsoncpp
Bước 1: Thiết lập dự án của bạn
Tạo một dự án C++ mới và bao gồm các tiêu đề cần thiết cho cpr
và jsoncpp
.
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
Bước 2: Định nghĩa các hàm để tạo và nhận kết quả nhiệm vụ
Chúng tôi sẽ định nghĩa hai hàm chính: createTask
và getTaskResult
.
- createTask: Hàm này tạo một nhiệm vụ reCAPTCHA.
- getTaskResult: Hàm này truy xuất kết quả của nhiệm vụ đã tạo.
Đây là mã hoàn chỉnh:
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
std::string createTask(const std::string& apiKey, const std::string& websiteURL, const std::string& websiteKey) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["task"]["type"] = "ReCaptchaV2Task";
requestBody["task"]["websiteURL"] = websiteURL;
requestBody["task"]["websiteKey"] = websiteKey;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/createTask"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
std::string taskId;
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["errorId"].asInt() == 0) {
taskId = responseBody["taskId"].asString();
} else {
std::cerr << "Lỗi: " << responseBody["errorCode"].asString() << std::endl;
}
} else {
std::cerr << "Phân tích cú pháp phản hồi thất bại: " << errs << std::endl;
}
return taskId;
}
std::string getTaskResult(const std::string& apiKey, const std::string& taskId) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["taskId"] = taskId;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
while (true) {
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/getTaskResult"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["status"].asString() == "ready") {
return responseBody["solution"]["gRecaptchaResponse"].asString();
} else if (responseBody["status"].asString() == "processing") {
std::cout << "Nhiệm vụ vẫn đang xử lý, chờ 5 giây..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
} else {
std::cerr << "Lỗi: " << responseBody["errorCode"].asString() << std::endl;
break;
}
} else {
std::cerr << "Phân tích cú pháp phản hồi thất bại: " << errs << std::endl;
break;
}
}
return "";
}
int main() {
std::string apiKey = "YOUR_API_KEY";
std::string websiteURL = "https://example.com";
std::string websiteKey = "SITE_KEY";
std::string taskId = createTask(apiKey, websiteURL, websiteKey);
if (!taskId.empty()) {
std::cout << "Nhiệm vụ được tạo thành công. ID nhiệm vụ: " << taskId << std::endl;
std::string recaptchaResponse = getTaskResult(apiKey, taskId);
std::cout << "Phản hồi reCAPTCHA: " << recaptchaResponse << std::endl;
} else {
std::cerr << "Tạo nhiệm vụ thất bại." << std::endl;
}
return 0;
}
Suy nghĩ cuối cùng
Khi kết thúc, tôi có thể tự tin nói rằng việc tích hợp CapSolver vào các dự án của tôi đã giúp xử lý các thách thức reCAPTCHA dễ dàng hơn rất nhiều. Cho dù đó là V2 hay V3, quy trình đều đơn giản và đã giúp tôi tiết kiệm rất nhiều thời gian. Nếu bạn đang phải đối mặt với những thách thức tương tự, tôi khuyên bạn nên thử CapSolver - nó đã thay đổi cuộc chơi đối với tôi.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Giải pháp reCAPTCHA v2 và v3 tốt nhất khi thu thập dữ liệu web vào năm 2025 là gì
Năm 2025, với sự tinh vi hơn của các hệ thống chống bot, việc tìm kiếm các giải pháp reCAPTCHA đáng tin cậy đã trở nên rất quan trọng đối với việc trích xuất dữ liệu thành công.

Anh Tuan
17-Jan-2025

Giải quyết reCAPTCHA bằng nhận diện AI vào năm 2025
Khám phá cách AI đang thay đổi việc giải mã reCAPTCHA, giải pháp của CapSolver, và bức tranh an ninh CAPTCHA đang thay đổi trong năm 2025.

Anh Tuan
11-Nov-2024

Cách giải quyết reCAPTCHA v2 bằng Rust
Tìm hiểu cách giải quyết reCaptcha v2 bằng Rust và API Capsolver. Hướng dẫn này bao gồm cả phương thức proxy và không proxy, cung cấp các hướng dẫn từng bước và ví dụ mã để tích hợp giải quyết reCaptcha v2 vào các ứng dụng Rust của bạn.

Anh Tuan
17-Oct-2024

Giải quyết reCAPTCHA bằng Python, Java và C++
Bạn muốn biết cách giải quyết reCAPTCHA thành công bằng ba ngôn ngữ lập trình mạnh mẽ: Python, Java và C++ trong một bài đăng trên blog? Vào đây!

Anh Tuan
11-Oct-2024

Hướng dẫn giải quyết reCAPTCHA v3 với điểm số cao trong Python
Hướng dẫn này sẽ hướng dẫn bạn các chiến lược hiệu quả và kỹ thuật Python để giải quyết reCAPTCHA v3 với điểm số cao, đảm bảo các tác vụ tự động của bạn chạy trơn tru.

Anh Tuan
17-Sep-2024

Giải quyết các Thách thức reCAPTCHA v3 Enterprise với Python và Selenium
Cách giải quyết thử thách reCAPTCHA v3 Enterprise bằng Python và Selenium, công cụ tự động hóa trình duyệt phổ biến.

Anh Tuan
04-Sep-2024