
Rajinder Singh
Deep Learning Researcher

Saat melakukan web scraping, salah satu kendala umum yang mungkin Anda temui adalah tantangan CAPTCHA. Situs web sering menggunakan CAPTCHA untuk mencegah bot mengakses konten mereka. CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) adalah teknik yang banyak digunakan untuk memastikan bahwa pengguna adalah manusia, bukan bot otomatis.
Dalam panduan ini, kita akan membahas berbagai jenis tantangan reCAPTCHA, cara mengidentifikasinya menggunakan alat, dan akhirnya, cara menyelesaikan beberapa tantangan reCAPTCHA secara bersamaan menggunakan Python dan threading.
WebScraping adalah proses mengekstrak data dari situs web. Sering digunakan untuk tugas-tugas seperti mengumpulkan harga dari situs web e-commerce, mengumpulkan artikel berita, atau mengagregasi informasi dari berbagai sumber web. Scraping melibatkan pembuatan permintaan HTTP ke situs web dan parsing data dari respons. Namun, banyak situs web menggunakan CAPTCHA untuk mencegah akses otomatis.
reCAPTCHA V2, jenis CAPTCHA ini adalah yang paling banyak digunakan dan muncul sebagai tantangan "kotak centang" yang diberi label "Saya bukan robot." Ini mungkin meminta pengguna untuk memilih gambar tertentu untuk memverifikasi bahwa mereka adalah manusia.

reCAPTCHA V3 bekerja di latar belakang, menilai interaksi pengguna untuk mendeteksi perilaku seperti bot. Sistem ini dirancang untuk menghindari gangguan pengalaman pengguna dengan memberikan skor ke situs web, yang dapat digunakan untuk memblokir bot atau mengharuskan langkah verifikasi tambahan.
reCAPTCHA Tak Terlihat adalah versi reCAPTCHA v2 yang lebih ramah pengguna, di mana tantangan hanya muncul jika sistem menduga perilaku seperti bot.

Untuk mengidentifikasi jenis CAPTCHA yang digunakan di situs web, Anda dapat menggunakan alat berikut:
Capsolver adalah layanan yang memungkinkan Anda menyelesaikan tantangan CAPTCHA secara terprogram. Untuk mendeteksi parameter CAPTCHA:

Setelah Anda mengatur Capsolver, ikuti langkah-langkah berikut untuk mendeteksi parameter CAPTCHA:
Penghitung CAPTCHA Capsolver dapat mengembalikan informasi terperinci tentang reCAPTCHA:

Parameter Utama untuk reCAPTCHA:
Website URLSite KeypageActionisInvisibleisEnterpriseisSRequiredisReCaptchaV3API DomainSetelah parameter ini terdeteksi, Capsolver akan mengembalikan objek JSON dengan semua detail yang diperlukan untuk mengirimkan CAPTCHA ke layanan mereka.

Saat mengerjakan proyek web scraping, menyelesaikan CAPTCHA bisa memakan waktu, terutama saat Anda perlu menyelesaikan beberapa CAPTCHA secara bersamaan. Berikut cara Anda mengotomatiskan pemecahan beberapa tantangan reCAPTCHA secara bersamaan menggunakan Python.
import capsolver
import threading
capsolver.api_key = "Your Capsolver API Key"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v2():
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v2()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Jumlah tugas bersamaan
print(f"Menyelesaikan {num_tasks} tugas reCaptcha v2 secara bersamaan")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solusi {i+1}: {solution}")
if __name__ == "__main__":
main()
Proses untuk menyelesaikan reCAPTCHA v3 sangat mirip dengan v2, tetapi Anda perlu menyesuaikan jenis CAPTCHA yang sesuai.
```python
import capsolver
import threading
capsolver.api_key = "Your Capsolver API Key"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v3():
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v3()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Jumlah tugas bersamaan
print(f"Menyelesaikan {num_tasks} tugas reCaptcha v3 secara bersamaan")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solusi {i+1}: {solution}")
if __name__ == "__main__":
main()
Proses untuk menyelesaikan reCAPTCHA v3 sangat mirip dengan v2, tetapi Anda perlu menyesuaikan jenis CAPTCHA yang sesuai.
```python
import capsolver
import threading
capsolver.api_key = "Your Capsolver API Key"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v3():
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v3()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Jumlah tugas bersamaan
print(f"Menyelesaikan {num_tasks} tugas reCaptcha v3 secara bersamaan")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solusi {i+1}: {solution}")
if __name__ == "__main__":
main()
import capsolver
# Pertimbangkan untuk menggunakan variabel lingkungan untuk informasi sensitif
capsolver.api_key = "Your Capsolver API Key"
PAGE_URL_V2 = "PAGE_URL"
PAGE_KEY_V2 = "PAGE_SITE_KEY"
PAGE_URL_V3 = "PAGE_URL"
PAGE_KEY_V3 = "PAGE_SITE_KEY"
def solve_recaptcha_v2(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": key,
})
return solution
def solve_recaptcha_v3(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": url,
"websiteKey": key,
"minScore": 0.5 # Sesuaikan skor minimum jika perlu
})
return solution
def main():
print("Menyelesaikan reCaptcha v2")
solution_v2 = solve_recaptcha_v2(PAGE_URL_V2, PAGE_KEY_V2)
print("Solusi (v2): ", solution_v2)
print("Menyelesaikan reCaptcha v3")
solution_v3 = solve_recaptcha_v3(PAGE_URL_V3, PAGE_KEY_V3)
print("Solusi (v3): ", solution_v3)
if __name__ == "__main__":
main()
Klaim Kode Bonus Anda untuk solusi captcha teratas; CapSolver: scrape. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, Tidak Terbatas

Untuk informasi lebih lanjut, baca blog ini
Menangani beberapa tantangan CAPTCHA adalah keterampilan penting bagi siapa pun yang bekerja di web scraping, terutama karena situs web meningkatkan langkah keamanan mereka. Dengan alat seperti Capsolver dan kekuatan threading Python, Anda dapat secara efisien mengotomatiskan pemecahan tantangan CAPTCHA, memastikan proses scraping yang lebih lancar untuk proyek Anda.
Pelajari apa yang memicu Kesalahan Cloudflare 1020 Akses Ditolak, bagaimana Firewall Aplikasi Web dan deteksi bot bekerja, dan bagaimana pengembang dapat mengurangi kesalahan positif dalam alur kerja otomatis yang sah.

Pelajari cara menggunakan template CapSolver n8n untuk memantau halaman produk yang dilindungi oleh AWS WAF, menyelesaikan tantangan, mengekstrak harga, membandingkan perubahan, dan memicu notifikasi secara otomatis.
