
Ethan Collins
Pattern Recognition Specialist

Saat saya pertama kali mulai bekerja dengan reCAPTCHA, saya menemukannya sebagai pedang bermata dua. Di satu sisi, itu bagus untuk menyaring bot, tetapi di sisi lain, itu bisa menjadi rintangan yang cukup besar untuk proyek otomatisasi yang sah. Jadi di artikel ini, saya akan memandu Anda melalui pemecahan reCAPTCHA menggunakan tiga bahasa pemrograman yang ampuh: Python, Java, dan C++. Setiap bahasa membawa keunggulannya sendiri dalam menangani tantangan reCAPTCHA, menawarkan fleksibilitas tergantung pada kebutuhan proyek Anda. Kita akan mulai dengan memahami apa itu CAPTCHA dan reCAPTCHA, bersama dengan pentingnya mereka dalam keamanan web
Mari kita mulai dengan konsep yang paling dasar: apa itu CAPTCHA, atau "Completely Automated Public Turing test to tell Computers and Humans Apart," yang merupakan metode umum untuk membedakan antara pengguna manusia dan bot. Ini membantu situs web menghindari serangan otomatis, spam, atau eksploitasi dengan meminta pengguna untuk menyelesaikan tugas yang mudah bagi manusia tetapi sulit bagi mesin. Ini bisa berupa mengenali teks yang terdistorsi, memilih gambar dengan objek tertentu, atau menyelesaikan teka-teki logika.
reCAPTCHA adalah layanan yang dikembangkan oleh Google yang membantu melindungi situs web dari spam dan penyalahgunaan dengan membedakan pengguna manusia dari bot. Ini telah berkembang seiring waktu menjadi berbagai versi, masing-masing menawarkan kemampuan khusus.
reCAPTCHA v2: Ini adalah bentuk yang paling umum di mana pengguna menyelesaikan tugas seperti mengklik kotak centang ("Saya bukan robot") atau memilih gambar. Ini lebih ramah pengguna tetapi mungkin masih menampilkan tantangan berdasarkan faktor risiko.
reCAPTCHA v3: Versi ini berjalan secara tidak terlihat di latar belakang tanpa mengganggu pengguna. Ini menetapkan skor risiko (0,0 hingga 1,0) berdasarkan perilaku pengguna. Pengguna berisiko rendah lolos tanpa melihat tantangan, sementara aktivitas yang mencurigakan dapat memicu langkah-langkah verifikasi.
reCAPTCHA Enterprise: Dirancang untuk perlindungan tingkat perusahaan, versi ini menawarkan fitur keamanan yang ditingkatkan untuk bisnis besar. Ini menyediakan analisis tingkat lanjut, model pembelajaran mesin, dan penilaian berbasis risiko yang disesuaikan dengan transaksi berisiko tinggi, dengan penyesuaian yang lebih besar untuk memenuhi kebutuhan keamanan bisnis.
Setiap versi ini bertujuan untuk memberikan keamanan optimal sambil meminimalkan gesekan bagi pengguna yang sah, beradaptasi dengan kecanggihan bot dan serangan yang meningkat.
- reCAPTCHA v2 Demo
Lihat demo reCAPTCHA v2- reCAPTCHA v3 Demo
Lihat demo reCAPTCHA v3- reCAPTCHA Enterprise Demo
Pelajari lebih lanjut tentang reCAPTCHA Enterprise
Setiap bahasa menawarkan kekuatan unik dalam menangani tantangan reCAPTCHA:
Python dikenal dengan kesederhanaannya dan kumpulan pustaka yang besar yang memfasilitasi otomatisasi web dan pengambilan data. Menggunakan pustaka seperti Selenium dan Playwright, Anda dapat dengan mudah mengotomatiskan tugas browser dan melewati CAPTCHA dengan alat yang tepat.
Java sangat bagus untuk aplikasi tingkat perusahaan dan proyek lintas platform. Kemampuan multithreading dan kerangka kerja seperti Selenium WebDriver memungkinkan penanganan reCAPTCHA yang lancar dalam sistem yang dapat diskalakan.
C++ menawarkan keuntungan kinerja, menjadikannya ideal untuk sistem yang membutuhkan kecepatan dan latensi rendah. Meskipun jarang digunakan untuk otomatisasi, ini dapat diintegrasikan dengan alat lain untuk mengatasi tantangan reCAPTCHA di lingkungan berkinerja tinggi.
Saat Anda maju, Anda akan menyadari bahwa mengatasi tantangan reCAPTCHA bisa menjadi rumit karena algoritma dan kompleksitas yang berkembang. Di situlah CapSolver masuk. Ini adalah layanan khusus yang mengotomatiskan proses pemecahan reCAPTCHA dengan akurasi tinggi, menangani berbagai jenis CAPTCHA, termasuk reCAPTCHA v2, reCAPTCHA v3, dan banyak lagi. Dengan mengintegrasikan CapSolver ke dalam proyek Python, Java, atau C++ Anda, Anda dapat membebani kompleksitas memecahkan CAPTCHA ke layanan khusus, memungkinkan skrip Anda berjalan dengan lancar dan efisien.
Selanjutnya, kita akan membahas kode sampel untuk setiap bahasa dan bagaimana Anda dapat dengan cepat mengintegrasikan CapSolver ke dalam proyek Anda...
Klaim Anda Kode Bonus untuk solusi captcha teratas; CapSolver: WEBS. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, Tidak Terbatas
Langkah 1. Dapatkan kunci situs
Untuk V2 dan V3, Anda dapat mencari permintaan /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf di log permintaan browser, di mana k= adalah nilai kunci yang kita butuhkan
Langkah 2. Bedakan antara V2 dan V3
V2 dan V3 memiliki metode penanganan yang berbeda. V2 membutuhkan pengenalan gambar untuk memilih jawaban, sedangkan V3 relatif tidak mengganggu; Namun, V3 memerlukan penyediaan Aksi selama verifikasi. Berdasarkan nilai kunci yang diperoleh sebelumnya, cari halaman respons, dan Anda akan menemukan nilai Aksi di halaman

Langkah 3. Panggil layanan CapSolver
/recaptcha/api2/reload, permintaan /recaptcha/api2/userverify biasanya diperlukan untuk mendapatkan token passage;/recaptcha/api2/reloaddapat langsung mendapatkan token passage# pip install requests
import requests
import time
# TODO: set your config
api_key = "YOUR_API_KEY" # your api key of capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo" # page url of your target site
# 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("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(3) # delay
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("Solve failed! response:", res.text)
return
token = capsolver()
print(token)
# pip install requests
import requests
import time
# TODO: set your config
api_key = "YOUR_API_KEY" # your api key of capsolver
site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf" # site key of your target site
site_url = "https://antcpt.com/score_detector/" # page url of your target site
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("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(1) # delay
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("Solve failed! response:", res.text)
return
# verify score
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'
}
Sebelum kita menyelami kode, ada beberapa prasyarat yang harus Anda miliki untuk mengikuti tutorial ini dengan sukses:
Setelah Anda memenuhi prasyarat ini, Anda siap untuk menyiapkan lingkungan Anda dan mulai memecahkan tantangan reCAPTCHA dengan JavaScript dan CapSolver.
/recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-, di mana nilai setelah k= adalah Kunci Situs yang kita butuhkan. Atau Anda dapat menemukan semua parameter untuk menyelesaikan recapctha melalui ekstensi CapSolverpip install requests
import requests
import time
from DrissionPage import ChromiumPage
# Create an instance of ChromiumPage
page = ChromiumPage()
# Access the example page that triggers reCAPTCHA
page.get("https://www.google.com/recaptcha/api2/demo")
# TODO: Set your configuration
api_key = "your api key of capsolver" # Your CapSolver API key
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # Site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo" # Page URL of your target site
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
# Send a request to CapSolver to create a task
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(3) # Delay
payload = {"clientKey": api_key, "taskId": task_id}
# Query task results
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("Solve failed! response:", res.text)
return
def check():
# Get the reCAPTCHA solution
token = capsolver()
# Set the reCAPTCHA response value
page.run_js(f'document.getElementById("g-recaptcha-response").value="{token}"')
# Call the success callback function
page.run_js(f'onSuccess("{token}")')
# Submit the form
page.ele('x://input[@id="recaptcha-demo-submit"]').click()
if __name__ == '__main__':
check()
Sebelum kita mulai, pastikan Anda telah menginstal pustaka berikut:
Anda dapat menginstalnya menggunakan vcpkg:
vcpkg install cpr jsoncpp
Buat proyek C++ baru dan sertakan tajuk yang diperlukan untuk cpr dan jsoncpp.
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
Kita akan mendefinisikan dua fungsi utama: createTask dan getTaskResult.
Berikut adalah kode lengkapnya:
#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 << "Error: " << responseBody["errorCode"].asString() << std::endl;
}
} else {
std::cerr << "Failed to parse response: " << 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 << "Task is still processing, waiting for 5 seconds..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
} else {
std::cerr << "Error: " << responseBody["errorCode"].asString() << std::endl;
break;
}
} else {
std::cerr << "Failed to parse response: " << 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 << "Task created successfully. Task ID: " << taskId << std::endl;
std::string recaptchaResponse = getTaskResult(apiKey, taskId);
std::cout << "reCAPTCHA Response: " << recaptchaResponse << std::endl;
} else {
std::cerr << "Failed to create task." << std::endl;
}
return 0;
}
Saat saya menutup, saya dapat dengan yakin mengatakan bahwa mengintegrasikan CapSolver ke dalam proyek saya telah membuat penanganan tantangan reCAPTCHA jauh lebih mudah. Baik itu V2 atau V3, prosesnya mudah dan telah menghemat banyak waktu saya. Jika Anda menghadapi tantangan serupa, saya sangat menyarankan untuk mencoba CapSolver—ini telah mengubah permainan bagi saya.
Mengalami kesalahan "reCAPTCHA Kunci Situs Tidak Valid" atau "token reCAPTCHA tidak valid"? Temukan penyebab umum, perbaikan langkah demi langkah, dan tips pemecahan masalah untuk menyelesaikan masalah verifikasi reCAPTCHA gagal. Pelajari cara memperbaiki verifikasi reCAPTCHA gagal, silakan coba lagi.

Pelajari cara menyelesaikan reCAPTCHA v2 dengan Python dan API. Panduan lengkap ini mencakup metode Proxy dan Proxyless dengan kode yang siap produksi untuk otomatisasi.
