In this Article
Botları insanlardan ayıran kalıpları tespit etmek için geliştirilen CAPTCHA sistemleri kandırılabilir. Scraper’ınıza öngörülemezlik ve insan benzeri eylemler eklemek sistemi şaşırtır; bu da engellenmekten kaçınmanıza yardımcı olur. Selenium, tarayıcıları kontrol etmeye yönelik kullanıcı dostu bir API sunan Python kütüphanesidir. Selenium varsayılan olarak görünür bir tarayıcı penceresiyle çalışır, ancak headless modda çalışacak şekilde ayarlanabilir. Otomasyonu gizlemeye yardımcı olabilecek bazı eklentiler de vardır; bunlar tarayıcının gerçek bir kullanıcı gibi görünmesini sağlayarak tespit edilme riskini azaltır.
Bu eğitimde Undetected ChromeDriver, Proxy Rotation, insan davranışı simülasyonu ve harici hizmetler (CapSolver) dahil CAPTCHA’ları aşmanın bazı yollarını inceleyip analiz edeceğiz. Her birine bakacak ve hangisinin sizin için en uygun olduğuna karar vermeye hazır olacaksınız.
Undetected ChromeDriver kullanımı
Undetected ChromeDriver: nedir?
Geliştiriciler, web sitelerindeki bot karşıtı mekanizmaları aşmak için Selenium gibi headless tarayıcıları kullanmaya çalışır. Selenium Undetected ChromeDriver, tespit edilmekten kaçınmak için tasarlanmış optimize edilmiş bir ChromeDriver’dır. Bot karşıtı sistemlerin botları tanımlamak için kullandığı bilgileri açığa çıkaran standart ChromeDriver’ın aksine Undetected ChromeDriver bu sızıntıları giderir. Böylece DataDome, Imperva ve BotProtect.io gibi sistemlerin botunuzu engelleme olasılığı azalır.
Hazırlık:
- Python 3.6 veya daha yeni bir sürüm kullandığınızdan emin olun ve Selenium’u yükleyin.
- Chrome’u indirip yükleyin.
Temel adımlar:
1. Henüz yapmadıysanız Selenium’u yükleyin.
pip3 install selenium
2. Devam etmek için undetected-chromedriver modülünü Terminal’de aşağıdaki komutu çalıştırarak yükleyin:
pip3 install undetected-chromedriver
İşlem başarılı olursa şu mesajı görürsünüz:
3. Bu eğitimde VS Code düzenleyicisini kullanıyoruz. Sonraki adım, Undetected ChromeDriver için kütüphaneleri içe aktarmaktır. Ardından veri kazımak istediğiniz bir web sayfası seçin. CAPTCHA olmadan doğru yüklendiğini kontrol etmek için hedef web sayfanızın ekran görüntüsünü alın. Aşağıdaki komutları çalıştırın:
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()
İşlem tamam! Undetected ChromeDriver ile CAPTCHA artık sorun olmaktan çıkar ve web sitesinden veri kazımaya başlayabilirsiniz. Bu yöntem küçük projeler için en iyisidir. Büyük ölçekli veri kazıma projelerinde çok etkili olmamasının temel nedeni, IP adresinizin engellenmesini önleyememesidir. Sıradaki strateji daha güvenli bir alternatiftir.
Proxy Rotation kullanımı
Web siteleri bot etkinliğini tespit etmek için gizli bir CAPTCHA uygulayabilir. Çok sayıda istek tek bir IP adresinden gelirse web siteleri bunu bot davranışı olarak tanımlar ve erişimi engeller. Dönüşümlü IP adresleri kullanmak bu sorunu çözmeye yardımcı olabilir. Eğitimimizde residential proxy’leri DataImpulse’tan kullanıyoruz. Denemek isterseniz yalnızca kaydolun ve tercih ettiğiniz planı seçin. Tüm temel bilgiler Dashboard’unuzda bulunur; DataImpulse kimlik bilgilerinizi planınızda Proxy Erişimi bölümünde bulabilirsiniz.
Ayrıca kapsamlı rehberimizde, topluluğumuza nasıl katılacağınıza dair bilgilerin yanı sıra kullanıcı dostu dashboard’umuz ve içerdiği bölümlere genel bir bakış bulabilirsiniz.
Bir proxy havuzu oluşturmanız gerekir veya tek bir proxy kullanmayı deneyebilirsiniz. Bunun için yalnızca “your_single_proxy:port” yerine proxy listesi kullanın.
Şunun için: “your_single_proxy:port” host’unuzu ve port’unuzu belirtin.
Şunun için: driver.get(“https://example.com“) istediğiniz web sitesini girin. Gerekli tüm kütüphaneleri yükledikten sonra bu kodu deneyebilirsiniz:
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()
Ücretsiz proxy’ler genellikle zayıf koruma sunar ve hatta risk oluşturabilir. Yavaş bağlantılar, kimlik avı ve engellenmiş IP adresleri, bunları kullanmanın olası tehlikelerinden yalnızca birkaçıdır. Bu durum Proxy Rotation yaklaşımının temel sorununa, yani proxy sağlayıcılarının maliyetine yol açar. Bu durumda araştırma yapın ve gerekli tüm özellikleri içeren, daha güvenilir ve bütçenize uygun bulduğunuz seçeneği tercih edin.
İz Bırakmadan Gezinme
Proxy’lerle siteler sizden asla şüphelenmez, captcha girmenizi istemez ve hatta sizi yasaklamaz. DataImpulse’ta güncel veri, kara listeye alınmamış IP’ler, Captcha işleme ve sezgisel API’ler ile 7/24 profesyonel insan desteği alırsınız. Piyasadaki en düşük fiyatlardan birini sunuyoruz: GB başına yalnızca $1! Şimdi deneyin!
İnsan Davranışı Simülasyonu kullanımı
İnsan davranışı sentezleyicileri uygulayarak headless tarayıcınızın kullanıcı etkileşimlerini daha gerçekçi biçimde simüle etmesini sağlayabilirsiniz. Gerçek kullanıcı eylemlerini simüle etmenin başlıca yollarından bazıları şunlardır:
- Fare hareketleri – Gerçek kullanıcıların fareyi nasıl hareket ettirdiğini taklit eden doğal eğriler, değişen hızlar ve ivmeler oluşturur.
- Rastgele tıklamalar – Tıklamaların zamanlaması ve konumu, gerçek kullanıcı davranışını taklit etmek için küçük kaydırmalarla rastgeleleştirilir.
- Tuş vuruşları – İnsan benzeri bir ritim için yazma, doğal yazma hızlarını, duraklamaları ve ara sıra yapılan yazım hatalarını yansıtacak şekilde ayarlanır.
İnsan davranışını simüle etmek için eylemler arasına kısa gecikmeler ekleyin, farenin yolunu rastgeleleştirin ve tıklama konumlarını ayarlayın. hedef olarak https://www.scrapingcourse.com/ecommerce adresinin 3 sayfasını kullanalım. Kod örneği aşağıdadır:
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.")
İşlem doğru yapıldıysa benzer bir yanıt görebilirsiniz:
Aslında insan davranışı simülasyonu kullanmak otomatik betiklere gerçekçilik katar. Ancak bu rastgele eylemler nedeniyle simülasyonlar karmaşıklığı artırabilir ve genel veri kazıma hızını yavaşlatabilir.
Harici Hizmetlerin Kullanımı (CapSolver)
Farklı CAPTCHA türlerini işlemenize yardımcı olabilecek çok sayıda ek hizmet vardır. Bu eğitimde CapSolver hizmetinden söz etmeyi seçtik. CapSolver farklı proxy türleriyle entegre olur; böylece kullanıcılar CAPTCHA çözümünü birden çok IP adresi genelinde yönetebilir. Proxy kullanmak, isteklerin birden fazla cihazdan ve konumdan geliyormuş gibi görünmesini sağlar; anonimliği artırır ve tespit edilme riskini düşürür. DataImpulse ile CapSolver entegrasyonundaki temel aşamalar hakkında daha fazla bilgi edinmek için kısa bir rehberi.
CapSolver dashboard’unuzda bulabileceğiniz bir API anahtarına ihtiyacımız olacak.
Aşağıda, CAPTCHA’ları işlemek için CapSolver API’sinin nasıl kullanılacağını gösteren bir Python örneği yer alıyor. Kodu çalıştırmadan önce YOUR_API_KEY, XXX ve site_url değerlerini gerçek değerlerle değiştirin.
# 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)
Harici hizmetler, karmaşık görevleri işlemede verimlilik, ölçeklenebilirlik ve daha yüksek başarı oranı sunar. Bu tür hizmetlerle geliştiriciler diğer proje ihtiyaçlarına kolayca odaklanabilir. Maliyetler, üçüncü tarafların güvenilirliğine bağımlılık ve veri üzerindeki sınırlı kontrolden kaynaklanan gizlilik endişeleri dezavantajlar arasında sayılabilir.
Özetle
Python, sadeliği ve kapsamlı kütüphane desteğiyle tanınır; bu da web otomasyonunu ve veri kazımayı kolaylaştırır. Selenium ve Playwright gibi kütüphanelerle tarayıcı görevlerini otomatikleştirebilir, doğru araçlarla CAPTCHA’yı aşabilirsiniz. En iyi yöntem, bu kısıtlamaları aşmaya, anonimliği korumaya ve yasaklanmayı önlemeye yardımcı olduğu için web scraper’ınızı proxy’lerle entegre etmektir.
Bizimle iletişime geçin ve çok sayıdaki veri kazıma aracıyla özel çözümlerimiz hakkında daha fazla bilgi edinin.





