Web Kazıma için Undetected ChromeDriver Nasıl Kullanılır?

Undetected ChromeDriver

Undetected ChromeDriver, Selenium’in ChromeDriver’ının optimize edilmiş bir sürümüdür ve otomatik tarayıcı botlarının tespiti için kullanılan anti-bot hizmetlerini atlatmak için tasarlanmıştır. Bu araç, özellikle Imperva, DataDome ve Distil Networks gibi hizmetlerin tespit mekanizmalarını aşmada etkilidir. Ayrıca, belirli Cloudflare korumalarını da geçmeye yardımcı olabilir.

Undetected ChromeDriver Nedir?

Tespit edilemeyen, Algılanamayan veya kendi resmi adı ile Undetected ChromeDriver, Selenium’un ChromeDriver’ının optimize edilmiş bir sürümünü sağlayan bir Python kütüphanesidir. Bu, aşağıdaki gibi anti-bot hizmetleri tarafından algılamayı sınırlamak için yamalanmıştır:

  • Imperva
  • DataDome
  • Distil Networks
  • Cloudflare

Undetected ChromeDriver Nasıl Çalışır?

Undetected ChromeDriver, aşağıdaki teknikleri kullanarak tespiti azaltır:

  • Selenium Değişkenlerinin Yeniden Adlandırılması: Selenium tarafından kullanılan değişkenleri, gerçek tarayıcıların kullandığı isimlerle değiştirir.
  • Gerçekçi User-Agent Kullanımı: Gerçek dünyada kullanılan User-Agent dizgilerini kullanarak tespiti önler.
  • Doğal İnsan Etkileşiminin Simülasyonu: Kullanıcının doğal davranışlarını taklit ederek tespiti zorlaştırır.
  • Çerez ve Oturum Yönetimi: Web sitelerinde gezinirken çerezleri ve oturumları doğru bir şekilde yönetir.
  • Proxy Desteği: IP engellemelerini aşmak ve hız sınırlamalarını önlemek için proxy kullanımına izin verir.

Undetected ChromeDriver’da başlıca hangi proxy server ürünlerimizi kullanabilirsiniz?

Web Scraping için Undetected ChromeDriver kullanımı

Undetected ChromeDriver’ı Python’da web scraping için kullanmak oldukça basittir. Öncelikle, aşağıdaki komutla gerekli paketi yükleyin:

pip install undetected-chromedriver

Ardından, aşağıdaki gibi bir Python betiği oluşturabilirsiniz:

import undetected_chromedriver as uc

# Chrome tarayıcıyı başlat
driver = uc.Chrome()

# Hedef sayfaya bağlan
driver.get("https://www.ornekwebsite.com")

# İstediğiniz veriyi çekme işlemleri...

# Tarayıcıyı kapat
driver.quit()

Bu betik, belirtilen web sitesine bağlanır ve istediğiniz verileri çekmenize olanak tanır. Ayrıca, uc.ChromeOptions() kullanarak tarayıcı seçeneklerini özelleştirebilirsiniz. Örneğin, tarayıcıyı başsız (headless) modda çalıştırmak için:

options = uc.ChromeOptions()
options.headless = True
driver = uc.Chrome(options=options)

Proxy Entegrasyonu

Proxy kullanarak IP engellemelerini ve hız sınırlamalarını önleyebilirsiniz. Proxy’yi aşağıdaki gibi ekleyebilirsiniz:

options = uc.ChromeOptions()
options.add_argument("--proxy-server=http://proxy_ip:port")
driver = uc.Chrome(options=options)

Eğer proxy kimlik doğrulaması yani user:pass gerektiriyorsa, seleniumwire kütüphanesini kullanabilirsiniz:

from seleniumwire import undetected_chromedriver as uc

proxy_options = {
    'proxy': {
        'http': 'http://kullanici_adi:sifre@proxy_ip:port',
        'https': 'https://kullanici_adi:sifre@proxy_ip:port',
        'no_proxy': 'localhost,127.0.0.1'
    }
}

driver = uc.Chrome(seleniumwire_options=proxy_options)

Sınırlandırma ve Alternatifler

Undetected ChromeDriver, birçok anti-bot sistemini atlatmada etkili olsa da, daha gelişmiş tespit mekanizmalarına sahip web sitelerinde yetersiz kalabilir. Ayrıca, proxy döndürme gibi özellikleri kendi başına desteklemez. Bu gibi durumlarda, daha gelişmiş çözümler veya ek araçlar kullanmanız gerekebilir.

  • Düşük güvenlikli sitelerde başarı oranı oldukça yüksektir. Standart bot tespit mekanizmaları bulunan web sitelerinde, manuel giriş yapıyormuş gibi işlem yapabilirsiniz.
  • Orta seviyeli korumalarda, Cloudflare gibi servislerin bot tespiti devreye girebilir. Bu durumda ek çözümler (örneğin, tarayıcı parmak izi taklit etme veya çerezleri saklama) gerekebilir.
  • Yüksek güvenlikli sitelerde, JavaScript tabanlı davranış analizleri ve gelişmiş bot tespit sistemleri nedeniyle başarısız olma ihtimali yüksektir. Bu tür durumlarda, gelişmiş çözümler kullanmak veya manuel veri çekme yöntemlerini değerlendirmek daha etkili olabilir.

Bazı kullanıcılar, tarayıcının başlatılma süresinin standart ChromeDriver’a kıyasla biraz daha uzun sürdüğünü bildirmektedir. Bunun sebebi, bot tespit sistemlerini atlatmak için yapılan ek değişikliklerdir. Ancak, uzun süreli çalışmalarda bu fark genellikle göz ardı edilebilir seviyededir.

Kullanım Tarzı ve En İyi Uygulamalar

Undetected ChromeDriver’ı verimli kullanmak için aşağıdaki en iyi uygulamaları dikkate almak önemlidir:

Sık Kullanımda IP Adresi Rotasyonu Yapın:

Aynı IP adresi üzerinden sürekli istek yapmak, tespit edilme riskini artırabilir. Proxy hizmetleri veya VPN kullanarak IP adresinizi düzenli olarak değiştirebilirsiniz. Sitemizden satın aldığınız Rotating Residential Proxy hizmeti ile otomatik rotasyonlu bir proxy kullanabilir veya liste halinde satın aldığınız proxyler var ise bir başka makalemizde anlattığımız “Python’da Proxyler Nasıl Döndürülür?” makalesi ile kendi rotasyonunuzu yapabilirsiniz.

Tarayıcı Parmak İzini Gizleyin:

Tarayıcının parmak izi (fingerprint) bot olup olmadığınızı ele verebilir. selenium-stealth veya benzeri kütüphaneleri kullanarak parmak izinizi gerçek kullanıcılarla benzer hale getirebilirsiniz.

Çerezleri Saklayın ve Kullanın:

Web siteleri, kullanıcıların geçmiş oturum bilgilerini çerezlerde saklar. Web scraping işlemlerinde, önceki oturumlarınızın çerezlerini kaydederek daha doğal bir kullanım sağlayabilirsiniz.

Başsız Modu Dikkatli Kullanın:

Her ne kadar başsız (headless) mod web scraping için kullanışlı olsa da, bazı siteler bunu bot aktivitesi olarak değerlendirebilir. Eğer tespit edilme sorunu yaşıyorsanız, başsız modu devre dışı bırakmayı deneyebilirsiniz.

İnsan Davranışlarını Taklit Edin:

Web sitelerinde gezinirken rastgele tıklamalar yapmak, sayfalar arasında rastgele gecikmeler eklemek ve fare hareketleri simüle etmek tespit edilme olasılığını azaltabilir.

Sonuç

Undetected ChromeDriver, bot tespit sistemlerini aşmak için güçlü bir araç olsa da, her durumda mükemmel sonuç vermeyebilir. Kullanım senaryonuza bağlı olarak, proxy desteği, insan davranışı taklidi, tarayıcı parmak izi yönetimi gibi ek yöntemleri entegre etmek tespit edilme olasılığını ciddi şekilde azaltabilir.

Daha sofistike sistemler için Playwright, Puppeteer gibi alternatif çözümler veya API tabanlı veri çekme yöntemleri değerlendirilebilir. Scraping işlemlerinin etik ve yasal çerçevede gerçekleştirilmesi gerektiğini unutmayın!