Memecahkan reCAPTCHA Menggunakan Python, Java, dan C++

Ethan Collins
Pattern Recognition Specialist
25-Oct-2024

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
Apa itu CAPTCHA?
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.
Apa itu reCAPTCHA?
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
Memecahkan reCAPTCHA di Python, Java, dan C++
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.
Memperkenalkan CapSolver
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...
Kode Bonus
Klaim Anda Kode Bonus untuk solusi captcha teratas; CapSolver: WEBS. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, Tidak Terbatas
Cara Memecahkan reCAPTCHA Menggunakan Python
Prasyarat
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
Membedakan versi reCAPTCHA
- Di log permintaan browser, Anda dapat melihat bahwa untuk V2, setelah permintaan
/recaptcha/api2/reload
, permintaan/recaptcha/api2/userverify
biasanya diperlukan untuk mendapatkan token passage; - Untuk V3, permintaan
/recaptcha/api2/reload
dapat langsung mendapatkan token passage
Contoh lengkap panggilan API CapSolver
- Python reCAPTCHA V2
python
# 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)
- Python reCAPTCHA V3
python
# 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'
}
Cara Memecahkan reCAPTCHA Menggunakan Java
Prasyarat
Sebelum kita menyelami kode, ada beberapa prasyarat yang harus Anda miliki untuk mengikuti tutorial ini dengan sukses:
- Node.js dan npm: Kami akan menggunakan Node.js, runtime JavaScript, bersama dengan npm (Node Package Manager) untuk mengelola dependensi proyek kami. Jika Anda belum menginstal Node.js, Anda dapat mengunduhnya dari situs web resmi Node.js.
- Kunci API CapSolver: Untuk secara efektif memecahkan tantangan reCAPTCHA, Anda memerlukan akses ke layanan seperti CapSolver, yang berspesialisasi dalam memecahkan tantangan CAPTCHA secara terprogram. Pastikan Anda mendaftar dan mendapatkan kunci API dari CapSolver untuk mengintegrasikannya ke dalam solusi Anda.
Setelah Anda memenuhi prasyarat ini, Anda siap untuk menyiapkan lingkungan Anda dan mulai memecahkan tantangan reCAPTCHA dengan JavaScript dan CapSolver.
Langkah 1: Mendapatkan Kunci Situs
- Di log permintaan browser, cari permintaan
/recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
, di mana nilai setelahk=
adalah Kunci Situs yang kita butuhkan. Atau Anda dapat menemukan semua parameter untuk menyelesaikan recapctha melalui ekstensi CapSolver - URL adalah alamat halaman yang memicu reCAPTCHA V2.
Langkah 2: Instal pustaka permintaan
bash
pip install requests
Langkah 3: Contoh kode
python
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()
Cara Memecahkan reCAPTCHA Menggunakan C++
Prasyarat
Sebelum kita mulai, pastikan Anda telah menginstal pustaka berikut:
- cpr: Pustaka HTTP C++.
- jsoncpp: Pustaka C++ untuk parsing JSON.
Anda dapat menginstalnya menggunakan vcpkg:
bash
vcpkg install cpr jsoncpp
Langkah 1: Menyiapkan Proyek Anda
Buat proyek C++ baru dan sertakan tajuk yang diperlukan untuk cpr
dan jsoncpp
.
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
Langkah 2: Definisikan Fungsi untuk Membuat dan Mendapatkan Hasil Tugas
Kita akan mendefinisikan dua fungsi utama: createTask
dan getTaskResult
.
- createTask: Fungsi ini membuat tugas reCAPTCHA.
- getTaskResult: Fungsi ini mengambil hasil tugas yang dibuat.
Berikut adalah kode lengkapnya:
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 << "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;
}
Pikiran Akhir
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.
Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.
Lebih lanjut

Apa penyelesai reCAPTCHA v2 dan v3 terbaik saat melakukan web scraping di tahun 2025
Pada tahun 2025, dengan semakin canggihnya sistem anti-bot, menemukan penyelesai reCAPTCHA yang andal telah menjadi sangat penting untuk keberhasilan ekstraksi data.

Ethan Collins
17-Jan-2025

Memecahkan reCAPTCHA Menggunakan Python, Java, dan C++
Bagaimana cara memecahkan reCAPTCHA dengan sukses menggunakan tiga bahasa pemrograman yang kuat: Python, Java, dan C++ dalam satu blog? Masuk!

Ethan Collins
25-Oct-2024

Cara Menyelesaikan reCAPTCHA v2 dengan Rust
Pelajari cara menyelesaikan reCaptcha v2 menggunakan Rust dan API Capsolver. Panduan ini mencakup metode proxy dan tanpa proxy, memberikan instruksi langkah demi langkah dan contoh kode untuk mengintegrasikan penyelesaian reCaptcha v2 ke dalam aplikasi Rust Anda.

Ethan Collins
17-Oct-2024

Panduan Menyelesaikan reCAPTCHA v3 dengan Skor Tinggi di Python
Panduan ini akan memandu Anda melalui strategi yang efektif dan teknik Python untuk menyelesaikan reCAPTCHA v3 dengan skor tinggi, memastikan tugas otomatisasi Anda berjalan lancar.

Ethan Collins
17-Sep-2024

Memecahkan Tantangan reCAPTCHA v3 Enterprise dengan Python dan Selenium
Cara menyelesaikan tantangan reCAPTCHA v3 Enterprise menggunakan Python dan Selenium, alat otomatisasi browser yang populer.

Ethan Collins
04-Sep-2024

Cara Cepat dan Mudah untuk Mengerjakan reCAPTCHA dengan Cepat
Jelajahi beberapa metode cepat dan mudah untuk menyelesaikan reCAPTCHA dengan cepat

Ethan Collins
02-Sep-2024