Python and selenium

Dikembangkan untuk mendeteksi pola yang membedakan bot dari manusia, sistem CAPTCHA dapat dikelabui. Menambahkan ketidakpastian dan tindakan yang menyerupai manusia ke scraper Anda akan membingungkan sistem sehingga membantu Anda menghindari pemblokiran. Selenium adalah library Python yang menyediakan API yang mudah digunakan untuk mengendalikan browser. Secara default, Selenium berjalan dengan jendela browser yang terlihat, tetapi dapat diatur agar berjalan dalam mode headless. Tersedia beberapa plugin yang dapat membantu menyamarkan automation, membuat browser tampak seperti pengguna sungguhan dan mengurangi risiko deteksi.

Dalam tutorial ini, kami akan membahas dan menganalisis beberapa cara untuk melewati CAPTCHA, termasuk Undetected ChromeDriver, Proxy Rotation, simulasi perilaku manusia, dan layanan eksternal (CapSolver). Kami akan mengulas masing-masing cara tersebut sehingga Anda siap menentukan mana yang paling sesuai untuk Anda. 

Menggunakan Undetected ChromeDriver

Undetected ChromeDriver: apa itu?

Developer berusaha menggunakan browser headless seperti Selenium untuk mengatasi mekanisme anti-bot situs web. Selenium Undetected ChromeDriver adalah ChromeDriver yang dioptimalkan dan dirancang untuk menghindari deteksi. Berbeda dari ChromeDriver standar, yang mengungkapkan informasi yang digunakan sistem anti-bot untuk mengidentifikasi bot, Undetected ChromeDriver menangani kebocoran ini sehingga mengurangi kemungkinan sistem seperti DataDome, Imperva, dan BotProtect.io memblokir bot Anda.

Persiapan:

  • Pastikan Anda menggunakan Python 3.6 atau versi yang lebih baru dan memasang Selenium.
  • Unduh dan pasang Chrome.

Langkah-langkah utama:

1. Pasang Selenium jika Anda belum melakukannya.


pip3 install selenium
      
        

      

2. Untuk melanjutkan, pasang modul undetected-chromedriver  dengan menjalankan perintah berikut di Terminal:


pip3 install undetected-chromedriver
      
        

      

Anda akan melihat pesan ini jika berhasil: 

3. Dalam tutorial ini, kami menggunakan editor VS Code. Langkah berikutnya adalah mengimpor library untuk Undetected ChromeDriver. Setelah itu, pilih halaman web yang ingin Anda ambil datanya. Buat screenshot halaman web target Anda untuk memeriksa apakah halaman tersebut dimuat dengan benar tanpa CAPTCHA. Jalankan perintah berikut:


import undetected_chromedriver as uc
import time

# Initialize Chrome with undetected ChromeDriver
browser = uc.Chrome(headless=True, use_subprocess=True)

# Navigate to the target page
browser.get("https://example.com")

# Wait a few seconds to ensure the page loads fully
time.sleep(3)

# Save a screenshot to verify page loading
browser.save_screenshot("screenshot.png")
print("Screenshot taken and saved as 'screenshot.png'")

# Close the browser after the task
browser.quit()
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Anda berhasil melakukannya! Dengan Undetected ChromeDriver, CAPTCHA bukan lagi masalah dan kini Anda dapat mulai melakukan scraping pada situs web. Metode ini paling baik untuk proyek kecil. Alasan utama metode ini kurang efektif untuk proyek scraping berskala besar adalah karena metode ini tidak dapat mencegah pemblokiran alamat IP Anda. Strategi berikutnya merupakan alternatif yang lebih aman. 

Menggunakan Proxy Rotation

Situs web dapat menerapkan CAPTCHA tersembunyi untuk mendeteksi aktivitas bot. Jika banyak request berasal dari satu alamat IP, situs web akan mengidentifikasinya sebagai perilaku bot dan akibatnya memblokir akses. Penggunaan alamat IP rotating dapat membantu mengatasi masalah ini. Dalam tutorial kami, kami menggunakan proxy residential dari DataImpulse. Jika Anda ingin mencobanya, cukup daftar dan pilih paket yang Anda inginkan. Semua informasi penting tersedia di dasbor Anda, dan Anda dapat menemukan kredensial DataImpulse pada paket Anda di bagian Akses Proxy.

Selain itu, dalam panduan lengkap kami, Anda dapat menemukan informasi tentang cara bergabung dengan komunitas kami, beserta gambaran umum dashboard kami yang mudah digunakan dan berbagai bagiannya. 

Anda harus membuat pool proxy, atau dapat mencoba menggunakan satu proxy. Untuk melakukannya, cukup gunakan “your_single_proxy:port” sebagai pengganti daftar proxy.

Untuk “your_single_proxy:port” tentukan host dan port Anda. 

Untuk driver.get(“https://example.com“) masukkan situs web yang diinginkan. Setelah memasang semua library yang diperlukan, Anda dapat mencoba kode ini:


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# List of DataImpulse proxies 
proxy_list = [ 
    "proxy1:port", 
    "proxy2:port", 
    "proxy3:port", 
    # Add more proxies from your DataImpulse pool 
]

def start_selenium_with_proxy(proxy):
    # Set up Chrome options
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")

    # Add proxy to Chrome options
    chrome_options.add_argument(f'--proxy-server=http://{proxy}')

    # Initialize the Selenium browser with the proxy settings
    driver = webdriver.Chrome(options=chrome_options)
    return driver

# Example scraping function with using rotating proxies
def scrape_website():
    for proxy in proxy_list:
        driver = start_selenium_with_proxy(proxy)
        try:
            # Navigate to the target website
            driver.get("https://httpbin.io/ip")

            print(driver.find_element(By.TAG_NAME, "body").text)
            
        finally:
            driver.quit()

# Run the scraping function
scrape_website() 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Proxy gratis umumnya menawarkan perlindungan yang lemah dan bahkan dapat menimbulkan risiko. Koneksi lambat, phishing, dan alamat IP yang diblokir hanyalah beberapa potensi bahaya dari penggunaannya. Hal ini menimbulkan masalah utama dari pendekatan Proxy Rotation, yaitu biaya penyedia proxy. Dalam hal ini, lakukan riset dan pilih opsi yang menurut Anda lebih andal serta sesuai anggaran, dengan semua fitur yang dibutuhkan. 

Menjelajah Tanpa Meninggalkan Jejak

Dengan proxy, situs tidak akan pernah mencurigai Anda, meminta Anda memasukkan captcha, atau bahkan memblokir Anda. Di DataImpulse, Anda mendapatkan data terbaru, tanpa IP yang masuk daftar blokir, penanganan Captcha, API yang intuitif, dan dukungan profesional dari manusia selama 24/7. Kami memiliki salah satu tarif terendah di pasar, hanya $1 per GB! Coba sekarang!

Menggunakan Simulasi Perilaku Manusia

Dengan menerapkan synthesizer perilaku manusia, browser headless Anda dapat mensimulasikan interaksi pengguna secara lebih autentik. Berikut beberapa cara utama untuk mensimulasikan tindakan pengguna sungguhan:

  • Gerakan mouse – Gerakan ini membentuk kurva alami, variasi kecepatan, dan akselerasi, meniru cara pengguna sungguhan menggerakkan mouse.
  • Klik acak – Waktu klik dan sedikit perubahan posisi diacak untuk meniru perilaku pengguna asli. 
  • Penekanan tombol – Pengetikan disesuaikan agar mencerminkan kecepatan mengetik alami, jeda, dan salah ketik sesekali demi ritme seperti manusia.

Tambahkan jeda singkat di antara tindakan untuk mensimulasikan perilaku manusia, acak jalur mouse, dan sesuaikan lokasi klik. Mari gunakan 3 halaman dari https://www.scrapingcourse.com/ecommerce sebagai target. Berikut contoh kodenya:


import time
import random
import requests

# make a GET request to the given URL and print the status code
def make_request(url):
    response = requests.get(url)
    print(f"Request to {url} returned status code: {response.status_code}")

# list of URLs to request
urls = [
    "https://www.scrapingcourse.com/ecommerce/page/1/",
    "https://www.scrapingcourse.com/ecommerce/page/2/",
    "https://www.scrapingcourse.com/ecommerce/page/3/",
]

# range for random wait time (in seconds)
min_wait = 1
max_wait = 5

# iterate through each URL in the list
for url in urls:
    make_request(url)
    wait_time = random.uniform(min_wait, max_wait)
    print(f"Waiting for {wait_time:.2f} seconds before the next request...")
    time.sleep(wait_time)

print("All requests completed.") 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Anda akan dapat melihat respons serupa jika prosesnya dilakukan dengan benar:

Pada dasarnya, penggunaan simulasi perilaku manusia membuat script automation terasa lebih realistis. Namun, karena tindakan ini diacak, simulasi tersebut dapat meningkatkan kompleksitas dan memperlambat kecepatan scraping secara keseluruhan.

Menggunakan Layanan Eksternal (CapSolver)

Ada banyak layanan tambahan yang dapat membantu Anda menangani berbagai jenis CAPTCHA. Dalam tutorial ini, kami memilih untuk menyebut layanan CapSolver. CapSolver terintegrasi dengan berbagai jenis proxy sehingga pengguna dapat mengelola penyelesaian CAPTCHA melalui beberapa alamat IP. Menggunakan proxy membuat request tampak seolah-olah berasal dari beberapa perangkat dan lokasi, meningkatkan anonimitas serta mengurangi risiko deteksi. Untuk mempelajari lebih lanjut tahap-tahap utama integrasi DataImpulse dengan CapSolver, Anda dapat membaca panduan singkat

Kita memerlukan API key yang dapat Anda temukan di dashboard CapSolver Anda. 

Berikut contoh Python yang menunjukkan cara menggunakan API CapSolver untuk menangani CAPTCHA. Sebelum menjalankan kode, ganti YOUR_API_KEY, XXX, dan site_url dengan nilai sebenarnya.


# pip3 install requests
import requests
import time

# TODO: Set your configuration
api_key = "YOUR_API_KEY"  # Your CapSolver API key
site_key = "XXX"  # The site key for the target CAPTCHA
site_url = ""  # URL of the page with the CAPTCHA

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()
    task_id = result.get("taskId")

    if not task_id:
        print("Failed to create task:", response.text)
        return

    print(f"Task ID received: {task_id} / Fetching result...")

    while True:
        time.sleep(3)  # Delay between checks

        payload = {"clientKey": api_key, "taskId": task_id}
        response = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        result = response.json()
        status = result.get("status")

        if status == "ready":
            return result.get("solution", {}).get('gRecaptchaResponse')

        if status == "failed" or result.get("errorId"):
            print("Solution retrieval failed! Response:", response.text)
            return

token = capsolver()
print(token)
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Layanan eksternal menawarkan efisiensi, skalabilitas, dan tingkat keberhasilan yang lebih tinggi untuk menangani tugas kompleks. Dengan layanan seperti ini, developer dapat dengan mudah berfokus pada kebutuhan proyek lainnya. Beberapa kekurangannya mungkin berupa biaya, ketergantungan pada keandalan pihak ketiga, dan kekhawatiran privasi akibat keterbatasan kontrol atas data.

Kesimpulan

Python dikenal karena kesederhanaannya dan dukungan library yang luas, sehingga web automation dan scraping data menjadi mudah. Dengan library seperti Selenium dan Playwright, Anda dapat mengotomatiskan tugas browser dan melewati CAPTCHA menggunakan alat yang tepat. Cara terbaik adalah mengintegrasikan web scraper Anda dengan proxy karena hal itu membantu melewati pembatasan ini, menjaga anonimitas, dan mencegah pemblokiran.

Hubungi kami hari ini untuk mengetahui lebih lanjut tentang beragam alat scraping dan solusi kustom kami.

Share article: