CAPSOLVER
Blog
Cara Memecahkan CAPTCHA Dengan Selenium di Ruby

Cara Memecahkan CAPTCHA dengan Selenium di Ruby

Logo of Capsolver

Ethan Collins

Pattern Recognition Specialist

29-Aug-2024

CAPTCHA, atau Completely Automated Public Turing test to tell Computers and Humans Apart, dirancang untuk melindungi situs web dari bot otomatis. Meskipun mereka memainkan peran penting dalam mengamankan platform online, mereka dapat menjadi hambatan yang signifikan saat mengotomatiskan tugas dengan alat seperti Selenium. Jika Anda bekerja dengan Selenium di Ruby dan perlu menyelesaikan CAPTCHA, panduan ini akan memberikan pendekatan langkah demi langkah untuk menangani mereka secara efektif.

Apa itu Selenium dan Ruby?

Sebelum kita membahas cara menyelesaikan CAPTCHA, penting untuk memahami alat yang akan Anda gunakan: Selenium dan Ruby.

  • Selenium adalah alat open-source yang ampuh yang digunakan untuk mengotomatiskan browser web. Ini memungkinkan pengembang untuk menulis skrip dalam berbagai bahasa pemrograman untuk mensimulasikan interaksi pengguna dengan halaman web, menjadikannya pilihan populer untuk pengujian dan pengambilan data web.
  • Ruby adalah bahasa pemrograman dinamis, berorientasi objek yang dikenal karena kesederhanaan dan produktivitasnya. Sering digunakan dalam pengembangan web, dan jika digabungkan dengan Selenium, ia menawarkan kerangka kerja yang kuat untuk mengotomatiskan tugas browser.

Memahami CAPTCHA dan Jenis-jenisnya

Sebelum membahas solusinya, penting untuk memahami berbagai jenis CAPTCHA yang mungkin Anda temui:

  • CAPTCHA ImageToText: Ini mengharuskan pengguna untuk memasukkan karakter yang ditampilkan dalam gambar yang terdistorsi. Anda dapat menemukan beberapa kasus umum di sini
  • CAPTCHA berbasis gambar: Pengguna perlu memilih gambar yang sesuai dengan kriteria tertentu (misalnya, pilih semua gambar dengan lampu lalu lintas). Sebagian besar dari reCAPTCHA
  • reCAPTCHA: Sistem CAPTCHA canggih dari Google yang sering kali mengharuskan pengenalan objek dalam gambar atau cukup mengklik kotak centang untuk membuktikan bahwa Anda bukan bot.
  • hCAPTCHA: Mirip dengan reCAPTCHA, tetapi sering digunakan oleh situs web yang bertujuan untuk solusi yang lebih berfokus pada privasi.

Klaim Kode Bonus Anda untuk solusi captcha terbaik; CapSolver: WEBS. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, Tanpa Batas

Bisakah Selenium Ruby Memecahkan CAPTCHA?

Salah satu pertanyaan yang paling umum di antara pengembang adalah apakah Selenium dengan Ruby dapat memecahkan CAPTCHA. Jawaban singkatnya adalah: tidak secara langsung. Selenium sendiri tidak memiliki kemampuan bawaan untuk memecahkan CAPTCHA karena dirancang khusus untuk membedakan antara pengguna manusia dan bot.
Namun, ada beberapa pendekatan untuk menangani CAPTCHA di Selenium Ruby:

  1. Intervensi Manual: Dalam beberapa kasus, pengembang secara manual memecahkan CAPTCHA selama proses otomatisasi. Namun, ini mengalahkan tujuan otomatisasi penuh.
  2. Pemecah CAPTCHA Pihak Ketiga: Metode yang paling efektif adalah mengintegrasikan layanan pihak ketiga seperti CapSolver yang mengkhususkan diri dalam memecahkan CAPTCHA menggunakan algoritma canggih dan kecerdasan manusia.
  3. Memecahkan CAPTCHA Sederhana: Untuk CAPTCHA teks yang sangat dasar, pengembang mungkin menulis skrip khusus untuk mengenali pola, meskipun pendekatan ini terbatas dan sering kali tidak dapat diandalkan.

Meskipun Selenium Ruby tidak dapat memecahkan CAPTCHA sendiri, dengan alat dan layanan yang tepat, sangat mungkin untuk mengotomatiskan proses melewati CAPTCHA, yang akan kita jelajahi dalam panduan ini.

Menyiapkan Selenium di Ruby

Persiapan

  • Google Chrome: Instalasi versi terbaru browser Chrome, karena kita akan menggunakan kode untuk berinteraksi dengan Chrome.
  • Ruby: Pastikan Ruby terinstal di komputer Anda.
  • Selenium-webdriver: Perpustakaan Ruby untuk alat otomatisasi Selenium.
  • CapSolver: Dokumentasi CapSolver resmi akan membantu Anda menyelesaikan CAPTCHA.

Setelah Ruby terinstal di komputer Anda, Anda dapat menginstal perpustakaan Selenium WebDriver dengan menjalankan perintah gem install selenium-webdriver. Periksa versi Chrome Anda, dan berdasarkan itu, unduh driver chromedriver.exe yang sesuai. Anda dapat menemukan tautan unduhan di lokasi berikut:

Menganalisis Situs Web Target

Kami akan menggunakan situs web https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php sebagai contoh untuk menyelesaikan reCAPTCHA menggunakan Ruby Selenium.

Sebelum memulai, kita perlu memahami dasar-dasar pengiriman formulir HTML. Dengan mengamati halaman ini dan membuka alat pengembang, kita dapat secara manual menyelesaikan reCAPTCHA dan kemudian mengklik tombol kirim. Tindakan ini mengirimkan permintaan POST, mengirimkan tiga bidang: ex-a, ex-b, dan g-recaptcha-response, seperti yang ditunjukkan di bawah ini:

Ketiga bidang ini sesuai dengan dua elemen input dan satu elemen textarea di bawah formulir dalam kode sumber HTML awal, seperti yang ditunjukkan di bawah ini:

Terjemahan ke Bahasa Indonesia

Mengotomatiskan Proses dengan Ruby Selenium

Bagaimana kita dapat mengotomatiskan seluruh proses menggunakan Ruby Selenium? Berikut langkah-langkahnya:

  1. Ruby mengarahkan Selenium untuk mengunjungi situs web target.
  2. Ruby memanggil CapSolver API untuk menyelesaikan reCAPTCHA dan mendapatkan token.
  3. Mengubah gaya CSS elemen textarea dari display: none menjadi display: block untuk membuatnya interaktif dengan Selenium.
  4. Mensimulasikan memasukkan token yang dikembalikan oleh CapSolver ke dalam elemen textarea.
  5. Mensimulasikan klik tombol submit untuk mengirimkan formulir dan menyelesaikan verifikasi.

Mengunjungi Situs Web Target dengan Ruby Selenium

Pastikan Anda mengganti driver_path dalam kode di bawah ini dengan jalur aktual ke chromedriver di komputer Anda.

require 'selenium-webdriver'

# Inisialisasi opsi browser Chrome dan akses situs web target
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url

Mendapatkan Token

Untuk menggunakan CapSolver API, kita perlu memberikan websiteKey, yang dapat ditemukan dengan mencari kata kunci data-sitekey di sumber halaman:

Sekarang, mari tulis kode Ruby untuk menggunakan CapSolver API untuk secara otomatis menyelesaikan reCAPTCHA:

require 'net/http'
require 'json'
require 'time'

def cap_solver(api_key, public_key, page_url)
  payload = {
    "clientKey" => api_key,
    "task" => {
      "type" => 'ReCaptchaV2TaskProxyLess',
      "websiteKey" => public_key,
      "websiteURL" => page_url,
    }
  }

  # Kirim permintaan pembuatan tugas
require 'selenium-webdriver'
require 'net/http'
require 'json'
require 'time'

def cap_solver(api_key, website_key, page_url)
  payload = {
    "clientKey" => api_key,
    "task" => {
      "type" => 'ReCaptchaV2TaskProxyLess',
      "websiteKey" => website_key,
      "websiteURL" => page_url,
    }
  }

  # Kirim permintaan pembuatan tugas
  uri = URI("https://api.capsolver.com/createTask")
  res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
  resp = JSON.parse(res.body)
  task_id = resp["taskId"]

  unless task_id
    puts "Gagal membuat tugas: #{res.body}"
    return
  end

  puts "Mendapatkan taskId: #{task_id}"

  # Loop menunggu untuk mendapatkan hasil tugas
  loop do
    sleep(1)
    payload = { "clientKey" => api_key, "taskId" => task_id }
    uri = URI("https://api.capsolver.com/getTaskResult")
    res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
    resp = JSON.parse(res.body)
    status = resp["status"]
    if status == "ready"
      token = resp.dig("solution", "gRecaptchaResponse")
      puts "Pemecahan berhasil, token: #{token}"
      return token
    elsif status == "processing"
      puts "Pemecahan sedang berlangsung..."
    elsif status == "failed"
      puts "Pemecahan gagal! respons: #{res.body}"
      return
    end
  end
end

# Gunakan token di Selenium
cap_solver_api_key = "your_cap_solver_api_key"
website_key = "your_website_key"
page_url = "your_page_url"

driver = Selenium::WebDriver.for :chrome
driver.get(page_url)

token = cap_solver(cap_solver_api_key, website_key, page_url)
if token
  # Masukkan token ke dalam halaman web
  driver.find_element(:id, 'g-recaptcha-response').send_keys(token)
  # Klik tombol submit
  driver.find_element(:css, 'button[type="submit"]').click
  # Tunggu beberapa saat untuk memastikan tindakan selesai
  sleep(5)
  # Tutup browser
  driver.quit
else
  puts "Gagal mendapatkan token"
  driver.quit
end
sleep(1)
    payload = { "clientKey" => api_key, "taskId" => task_id }
    uri = URI("https://api.capsolver.com/getTaskResult")
    res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
    resp = JSON.parse(res.body)
    status = resp["status"]
    if status == "ready"
      token = resp.dig("solution", "gRecaptchaResponse")
      puts "Solve succeed, token: #{token}"
      return token
    elsif status == "processing"
      puts "Solve in progress..."
    elsif status == "failed"
      puts "Solve failed! response: #{res.body}"
      return
    end
  end
end

# Inisialisasi opsi browser Chrome dan akses situs web target
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url

# Panggil CapSolver API untuk menyelesaikan ReCaptcha
cap_solver_api_key = 'YOUR_API_KEY'
website_key = '6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9'
token = cap_solver(cap_solver_api_key, website_key, url)
if token.nil? || token.empty?
  puts "Gagal menyelesaikan captcha, Tekan tombol apa saja untuk keluar."
  STDIN.gets
  driver.quit
  return
end

# Ubah properti gaya tampilan textarea menjadi blok agar terlihat
driver.execute_script("document.getElementById('g-recaptcha-response').style.display = 'block';")
# Simulasikan memasukkan token ke textarea
textarea = driver.find_element(id: 'g-recaptcha-response')
textarea.send_keys(token)
# Simulasikan mengklik dan mengirimkan formulir
submit_btn = driver.find_element(css: "button[type='submit']")
submit_btn.click

puts "Tekan tombol apa saja untuk keluar."
STDIN.gets
driver.quit

Informasi Lebih Lanjut

CapSolver menggunakan teknologi pembuka kunci web otomatis berbasis AI untuk membantu Anda menyelesaikan CAPTCHA dalam hitungan detik. Ini dapat menyelesaikan tidak hanya reCAPTCHA tetapi juga hCaptcha, Geetest, Cloudflare Turnstile, DataDome, AWS WAF, dan banyak lagi. CapSolver juga menyediakan SDK dalam berbagai bahasa serta ekstensi browser. Anda dapat merujuk ke dokumentasi CapSolver untuk informasi lebih lanjut.

Lebih lanjut

Cara Menggunakan Hrequests untuk Web Scraping
Cara Menggunakan Hrequests untuk Web Scraping

Pelajari cara mengikis situs web secara efisien menggunakan hrequests dengan proxy dan penanganan captcha, termasuk demo tentang menyelesaikan ReCaptcha V2 dengan Capsolver untuk melewati tantangan dan mengekstrak data dengan lancar.

Logo of Capsolver

Lucas Mitchell

04-Sep-2024

Cara Menggunakan ScrapeGraph AI untuk Web Scraping
Cara Menggunakan ScrapeGraph AI untuk Scraping Web

Pelajari cara menggunakan ScrapeGraph AI, perpustakaan scraping web Python yang kuat, untuk mengekstrak data dari situs web dan dokumen lokal dengan mudah. Panduan ini mencakup contoh untuk menggunakan OpenAI dan model lokal seperti Ollama, dan cara menangani captcha dengan Capsolver.

Logo of Capsolver

Rajinder Singh

04-Sep-2024

Memecahkan Tantangan reCAPTCHA v3 Enterprise dengan Python dan Selenium
Memecahkan Tantangan reCAPTCHA v3 Enterprise dengan Python dan Selenium

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

reCAPTCHA
Logo of Capsolver

Ethan Collins

04-Sep-2024

Cara Cepat dan Mudah untuk Menyelesaikan reCAPTCHA dengan Cepat
Cara Cepat dan Mudah untuk Menyelesaikan reCAPTCHA dengan Cepat

Jelajahi beberapa metode cepat dan mudah untuk menyelesaikan reCAPTCHA dengan cepat

reCAPTCHA
Logo of Capsolver

Ethan Collins

02-Sep-2024

Menggunakan Playwright dengan Ruby: Panduan Langkah demi Langkah untuk 2024
Menggunakan Playwright dengan Ruby: Panduan Langkah Demi Langkah untuk 2024

Pelajari cara menangani tantangan CAPTCHA saat web scraping dengan Playwright dan Ruby. Panduan lengkap untuk 2024 ini mencakup integrasi mudah dengan CapSolver melalui ekstensi atau API, memastikan ekstraksi data yang lancar dari situs web dengan perlindungan CAPTCHA.

Logo of Capsolver

Lucas Mitchell

02-Sep-2024

Mengerti reCaptcha v2 Tantangan Tak Terlihat: Identifikasi dan Parameter
Memecahkan Tantangan Invisible reCaptcha v2: Identifikasi dan Parameter

Menghadapi tantangan dengan reCaptcha v2 Invisible? Pasti kamu ingin tahu cara mengidentifikasi versinya dan parameternya, dan menyelesaikannya secara efektif

reCAPTCHA
Logo of Capsolver

Ethan Collins

29-Aug-2024