Bloga geri dön

Turnstile ve hCaptcha'yı Proxy ile Aşmanın Yöntemleri

Turnstile ve hCaptcha'nın çalışma mekanizmalarını inceliyoruz, parmak izi alma yöntemlerini analiz ediyoruz ve kod örnekleriyle proxy üzerinden geçmenin kanıtlanmış yollarını paylaşıyoruz.

📅19 Aralık 2025
```html

Turnstile ve hCaptcha Aşma: Koruma Teknolojileri ve Çözüm Yöntemleri

Cloudflare Turnstile ve hCaptcha, web hizmetlerini botlardan koruma standartları haline geldi ve geleneksel reCAPTCHA'nın yerini aldı. Bu sistemler, proxy kullanımı için ciddi bir zorluk oluşturan tarayıcı ve ağ ortamının onlarca parametresini analiz eder. Bu makalede, bu teknolojilerin teknik düzeyde nasıl çalıştığını ve proxy üzerinden çalışırken hangi aşma yöntemlerinin gerçekten etkili olduğunu inceleyeceğiz.

Cloudflare Turnstile nasıl çalışır

Cloudflare Turnstile, "CAPTCHA'nın görünmez alternatifi" olarak konumlandırılan yeni nesil bir koruma sistemidir. Klasik reCAPTCHA'nın aksine, Turnstile kullanıcıdan trafik ışıkları veya yaya geçitleri seçmesini istemez. Bunun yerine, sistem arka planda tarayıcının davranışsal ve teknik özelliklerini analiz eder.

Teknik olarak, Turnstile üç aşamada çalışır. İlk aşama, iframe aracılığıyla sayfaya yerleştirilen JavaScript widget'ının yüklenmesidir. İkinci aşama, telemetri toplama: sistem, WebGL fingerprint, Canvas fingerprint, yazı tipi listesi, ekran çözünürlüğü, saat dilimi, sistem dili ve birçok diğer parametre dahil olmak üzere tarayıcı hakkında veri toplar. Üçüncü aşama, toplanan verilerin bilinen bot ve proxy kalıplarıyla karşılaştırıldığı Cloudflare sunucularında doğrulamadır.

Turnstile'ın temel özelliği, IP adreslerinin itibar sistemini kullanmasıdır. Cloudflare, CDN'lerini ve DDoS korumasını kullanan milyonlarca siteden toplanmış büyük bir veri tabanına sahiptir. Eğer bir IP adresi şüpheli bir aktivite ile tespit edilirse, Turnstile'dan geçme olasılığı keskin bir şekilde düşer. Bu, proxy kullanıcıları için ilk sorunu yaratır — temiz konut IP'leri bile önceki sahiplerinden dolayı düşük bir itibara sahip olabilir.

Önemli: Turnstile'ın üç çalışma modu vardır — yönetilen (otomatik), etkileşimsiz (etkileşim olmadan) ve görünmez (tamamen gizli). Mod, kontrolün sıkılığını belirler ve aşma yöntemlerini etkiler.

hCaptcha teknolojisi ve tespit yöntemleri

hCaptcha, gizlilik ve makine öğrenimi aracılığıyla para kazanma üzerine odaklanarak Google reCAPTCHA'ya rakip olarak ortaya çıkmıştır. Sistem, web sitesi sahiplerine kullanıcı verilerini AI modellerini eğitmek için kullanmaları için ödeme yapmayı önerir. Teknik açıdan hCaptcha, Turnstile'dan daha agresif bir otomasyon tespitine sahiptir.

hCaptcha'nın çalışma mekanizması birkaç koruma katmanını içerir. İlk katman — ağ parametrelerinin kontrolü: sistem, paketlerin TTL'sini, ağ gecikmelerini, IP adresinin coğrafi konumunun tutarlılığını ve tarayıcının beyan edilen saat dilimini analiz eder. İkinci katman — JavaScript çağrıları: hCaptcha, Web API'lerinin varlığını ve düzgün çalışmasını kontrol eder, bunlar arasında WebRTC, Battery API, Sensor API bulunmaktadır. Üçüncü katman — fare hareketleri, kaydırma hızı, tıklama kalıplarının davranışsal analizi.

hCaptcha'nın özelliği, challenge-based kontrollerin kullanılmasıdır. Eğer sistem bir bot şüphesi taşırsa, belirli nesneleri içeren görüntüleri seçme, bulmacaları çözme, bozulmuş resimlerdeki metni tanıma gibi görsel görevler gösterir. Görevlerin zorluğu her başarısız denemede dinamik olarak artar. Proxy kullanıcıları için bu, doğru fingerprint ile bile sonsuz bir captcha zinciri alabilecekleri anlamına gelir.

Parametre Turnstile hCaptcha
Görünmezlik modu Evet, varsayılan olarak İsteğe bağlı
IP itibarı Kritik Önemli
Fingerprinting Orta Agresif
Davranışsal analiz Temel Gelişmiş
Captcha sıklığı Düşük Orta-yüksek

Tarayıcı fingerprinting ve proxy

Tarayıcı fingerprinting, kullanıcıyı tarayıcı ve cihazın benzersiz özellikleri seti ile tanımlama tekniğidir. Eğer bir proxy kullanarak IP adresinizi değiştirseniz bile, fingerprint değişmez ve otomasyon kullanıldığını ortaya çıkarabilir. Modern koruma sistemleri, bir fingerprint oluşturmak için 50'den 200+ parametre toplar.

Fingerprint'in ana bileşenleri şunlardır: Canvas fingerprint (GPU ve sürücülere bağlı benzersiz grafik işleme), WebGL fingerprint (grafik hızlandırıcının parametreleri), Audio Context fingerprint (ses işleme özellikleri), yüklü yazı tipleri listesi, ekran parametreleri (çözünürlük, renk derinliği, piksel oranı), User-Agent ve tarayıcı başlıkları, dil ayarları, saat dilimi, eklentilerin ve uzantıların varlığı.

Proxy kullanıcıları için sorun, tutarsızlıklardır. Örneğin, eğer IP adresiniz Almanya'da bir konum gösteriyorsa ve tarayıcınızın saat dilimi Moskova olarak ayarlanmışsa — bu bir kırmızı bayraktır. Eğer WebRTC sızıntısı gerçek IP adresinizi açığa çıkarırsa ve bu proxy'den farklıysa — sistem hemen sahteciliği tanımlar. Eğer User-Agent Windows olarak beyan ediliyorsa ama Canvas fingerprint Linux'a uyuyorsa — tespit garantilidir.

// Temel fingerprint toplama örneği
const fingerprint = {
  canvas: getCanvasFingerprint(),
  webgl: getWebGLFingerprint(),
  fonts: getFonts(),
  screen: {
    width: screen.width,
    height: screen.height,
    colorDepth: screen.colorDepth,
    pixelRatio: window.devicePixelRatio
  },
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
  language: navigator.language,
  platform: navigator.platform,
  hardwareConcurrency: navigator.hardwareConcurrency,
  deviceMemory: navigator.deviceMemory,
  webrtc: await getWebRTCIPs()
};

function getCanvasFingerprint() {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  ctx.textBaseline = 'top';
  ctx.font = '14px Arial';
  ctx.fillText('Tarayıcı fingerprint', 2, 2);
  return canvas.toDataURL();
}

Proxy sunucularının tespit yöntemleri

Koruma sistemleri, proxy'leri tespit etmek için birçok teknik kullanır. İlk yöntem — bilinen proxy ve VPN veritabanlarına kontrol etmektir. IPHub, IP2Proxy, MaxMind GeoIP2 gibi hizmetler, proxy, VPN, barındırma sağlayıcıları olarak sınıflandırılmış milyonlarca IP adresi içerir. Cloudflare ve hCaptcha, bu tür veritabanlarıyla entegre edilmiştir ve şüpheli IP'ler için otomatik olarak kontrol seviyesini artırır.

İkinci yöntem — ASN (Otonom Sistem Numarası) analizidir. Veri merkezi proxy'leri genellikle barındırma sağlayıcılarına (AWS, DigitalOcean, OVH) aittir, bu da ASN ile kolayca belirlenebilir. Konut proxy'leri, sıradan internet servis sağlayıcılarının (Comcast, Verizon, Deutsche Telekom) ASN'lerini kullanır, bu da onları daha az şüpheli hale getirir. Ancak, hatta konut ağları, sağlayıcının proxy satışı yaptığı biliniyorsa kısmen tehlikeye girebilir.

Üçüncü yöntem — ağ düzeyinde davranışsal analizdir. Sistemler anormallikleri izler: çok düşük veya yüksek paket TTL'si, alışılmadık gecikmeler, standart dışı port kullanımı, coğrafi konum ve yönlendirme yolundaki tutarsızlık. Örneğin, eğer IP adresi ABD'de coğrafi olarak konumlandırılmışsa ama traceroute Avrupa sunucuları üzerinden bir yol gösteriyorsa — bu bir proxy belirtisidir.

Yaygın hata: Farklı fingerprint'lerle birden fazla oturum için tek bir IP adresi kullanmak. Sistemler bu tür kalıpları izler ve IP'yi tamamen yasaklar, bu kaliteli bir konut proxy'si olsa bile.

Konut proxy'leri temel çözüm olarak

Konut proxy'leri, Turnstile ve hCaptcha aşmanın temeli olarak hizmet eder. Veri merkezi proxy'lerinin aksine, konut proxy'leri gerçek cihazların IP adreslerini kullanır: ev yönlendiricileri, mobil telefonlar, IoT cihazları. Bu, onları ağ altyapısı açısından normal kullanıcılardan neredeyse ayırt edilemez hale getirir.

Captcha aşma için konut proxy'lerinin temel avantajları: barındırma sağlayıcılarına değil, ISP'ye (İnternet Servis Sağlayıcısı) ait olmaları; çoğu durumda IP adreslerinin temiz itibarı; doğru coğrafi konum ve yönlendirme; kara listeye alınma olasılığının düşük olması. Ancak, tüm konut proxy'leri eşit derecede etkili değildir. Birkaç faktör kritik öneme sahiptir.

İlk faktör — IP adreslerinin döngüsü. Statik konut proxy'leri (sticky sessions) bir IP'yi birkaç dakikadan birkaç saate kadar kullanmanıza izin verir. Bu, oturumun sürdürülmesi gereken senaryolar için idealdir: yetkilendirme, form doldurma, çok aşamalı işlemler. Dönüşümlü proxy'ler her istekte veya zamanlayıcıya göre IP'yi değiştirir, bu da veri çekme için faydalıdır ancak sık sık bağlam değişikliği nedeniyle captcha ile sorunlara yol açabilir.

İkinci faktör — coğrafi dağılım. Captcha aşmak için IP'nin coğrafi konumunun hedef web sitesi ve tarayıcı ayarlarıyla eşleşmesi önemlidir. Eğer Alman bir web sitesi ile çalışıyorsanız, Alman konut proxy'leri kullanın ve uygun saat dilimini (Europe/Berlin), dili (de-DE) ve yerel ayarları tarayıcıda ayarlayın.

Üçüncü faktör — proxy sağlayıcısının kalitesi. Ucuz konut proxy'leri genellikle şüpheli yöntemlerle toplanır (ücretsiz VPN uygulamaları, enfekte olmuş cihazlar), bu da IP havuzunun düşük itibara sahip olmasına yol açar. Profesyonel sağlayıcılar, meşru SDK ortaklıkları ile çalışır ve ağ kalitesini dikkatlice izler. Ölçeklendirmeden önce hedef web sitelerindeki sağlayıcının başarı oranını kontrol edin.

Otomasyon araçları: Selenium, Puppeteer, Playwright

Otomasyon aracının seçimi, captcha'ları aşma yeteneğini kritik şekilde etkiler. Selenium, Puppeteer ve Playwright — her biri kendi tespit özelliklerine sahip üç ana çözümdür. Koruma sistemleri, bu araçların kullanımını onlarca belirti aracılığıyla tespit edebilir.

Selenium — en eski ve en kolay tespit edilen araçtır. Selenium ile kontrol edilen tarayıcı, belirgin işaretler taşır: window.navigator.webdriver değişkeni true olarak ayarlanmıştır, otomasyona özgü bazı navigator nesnesi özellikleri yoktur, tarayıcı penceresinin boyutları otomasyona özgü olarak belirgindir. Proxy ile bile, Selenium genellikle ek obfuscation olmadan Turnstile ve hCaptcha kontrollerini geçemez.

Puppeteer ve Playwright — Chrome DevTools Protokolü üzerine inşa edilmiş daha modern araçlardır. Bunlar da tespit edilebilir, ancak daha az belirgin işaretlere sahiptir. Temel tespit yöntemleri: chrome.runtime kontrolü, permissions API analizi, headless modunu eklentilerin yokluğu ve belirli viewport boyutlarıyla tespit etme, DevTools'un varlığını zamanlama saldırıları ile kontrol etme.

// Proxy ve anti-detect ile Puppeteer'ın temel ayarı
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
  headless: false, // headless: true kolayca tespit edilir
  args: [
    '--proxy-server=http://your-proxy:port',
    '--disable-blink-features=AutomationControlled',
    '--disable-dev-shm-usage',
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-web-security',
    '--disable-features=IsolateOrigins,site-per-process',
    `--window-size=1920,1080`,
    '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
  ]
});

const page = await browser.newPage();

// Proxy kimlik doğrulaması
await page.authenticate({
  username: 'proxy_user',
  password: 'proxy_pass'
});

// Webdriver özelliğini yeniden tanımlama
await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', {
    get: () => false
  });
  
  // Headless için eklentileri emüle etme
  Object.defineProperty(navigator, 'plugins', {
    get: () => [1, 2, 3, 4, 5]
  });
});

Captcha'ları ciddi şekilde aşmak için, Multilogin, GoLogin, AdsPower, Dolphin Anty gibi özel anti-detect tarayıcıları kullanmak önerilir. Bu çözümler, benzersiz fingerprint'lerle izole edilmiş tarayıcı profilleri oluşturur, çerezleri ve oturum depolamasını yönetir, proxy'nin coğrafi konumuyla saat dilimini otomatik olarak senkronize eder, gerçekçi Canvas ve WebGL fingerprint'lerini emüle eder.

Captcha çözme hizmetleri: entegrasyon ve etkinlik

Teknik yöntemler yetersiz kaldığında, captcha çözme hizmetleri devreye girer. Bunlar iki tipe ayrılır: insanlı (crowdsourcing) ve otomatik (makine öğrenimi). Turnstile ve hCaptcha için etkinlik farklılık gösterir.

İnsanlı hizmetler (2Captcha, AntiCaptcha, CapSolver, CapMonster Cloud), dağıtılmış iş gücü prensibiyle çalışır: captcha'nız gerçek bir insana gönderilir ve elle çözülür. Avantajları: yüksek başarı oranı (hCaptcha için %95-99, Turnstile için %85-95), karmaşık görsel görevleri destekleme, göreceli istikrar. Dezavantajları: çözüm hızı 10-60 saniye, 1000 captcha için maliyet $1-3, operatörlerin erişilebilirliğine bağımlılık.

Otomatik hizmetler, tanıma için AI modelleri kullanır. Daha hızlıdırlar (1-5 saniye) ve daha ucuzdur, ancak modern captcha'lar için daha düşük başarı oranına sahiptirler — genellikle hCaptcha için %60-80 ve Turnstile için %50-70. Basit challenge-based görevler için etkilidirler, ancak görünmez kontrollerde sık sık başarısız olurlar.

// hCaptcha çözümü için 2Captcha entegrasyonu
const axios = require('axios');

async function solveHCaptcha(sitekey, pageUrl, proxyConfig) {
  const API_KEY = 'your_2captcha_api_key';
  
  // Görev gönderimi
  const createTask = await axios.post('https://2captcha.com/in.php', null, {
    params: {
      key: API_KEY,
      method: 'hcaptcha',
      sitekey: sitekey,
      pageurl: pageUrl,
      proxy: `${proxyConfig.type}:${proxyConfig.host}:${proxyConfig.port}:${proxyConfig.user}:${proxyConfig.pass}`,
      json: 1
    }
  });
  
  const taskId = createTask.data.request;
  
  // Çözüm bekleme
  let solution = null;
  for (let i = 0; i < 60; i++) {
    await new Promise(resolve => setTimeout(resolve, 3000));
    
    const result = await axios.get('https://2captcha.com/res.php', {
      params: {
        key: API_KEY,
        action: 'get',
        id: taskId,
        json: 1
      }
    });
    
    if (result.data.status === 1) {
      solution = result.data.request;
      break;
    }
  }
  
  return solution; // forma yerleştirmek için token
}

// Puppeteer'de kullanım
const captchaToken = await solveHCaptcha(
  'site-key-from-page',
  'https://example.com',
  { type: 'http', host: 'proxy.example.com', port: 8080, user: 'user', pass: 'pass' }
);

await page.evaluate((token) => {
  document.querySelector('[name="h-captcha-response"]').value = token;
  document.querySelector('[name="g-recaptcha-response"]').value = token;
}, captchaToken);

Captcha çözme hizmetlerine doğru parametrelerin iletilmesi kritik öneme sahiptir. Eğer captcha bir IP ile çözülürse ve ardından token başka bir IP ile kullanılırsa — doğrulama başarısız olur. Modern captcha'lar token'ı IP adresine, User-Agent'a ve diğer oturum parametrelerine bağlar.

Gelişmiş teknikler: cihaz emülasyonu ve TLS fingerprinting

En korumalı sistemleri aşmak için, proxy ve tarayıcı ayarlarının ötesine geçen gelişmiş teknikler gereklidir. İki ana alan — mobil cihaz emülasyonu ve TLS fingerprint yönetimidir.

Mobil proxy'ler, mobil tarayıcıların emülasyonu ile birlikte captcha'lara karşı yüksek etkinlik sağlar. Sebepler: mobil trafik daha yüksek bir güven puanına sahiptir, mobil IP adresleri (özellikle 4G/5G) genellikle dinamik ve doğal olarak değişir, mobil cihazlar farklı fingerprint parametreleri setine sahiptir, birçok web sitesi mobil kullanıcılar için kontrolleri basitleştirir.

Doğru bir mobil cihaz emülasyonu için: mobil User-Agent kullanmak (cihaz modeline tam uyum), doğru viewport ve devicePixelRatio ayarlamak, mouse olayları yerine touch olaylarını emüle etmek, mobil değerleri navigator.platform ve navigator.maxTouchPoints için kullanmak, WebGL ve Canvas fingerprint'i belirli bir cihaz modeline göre ayarlamak gerekir.

// Playwright'ta iPhone 13 Pro emülasyonu
const { chromium, devices } = require('playwright');

const iPhone13Pro = devices['iPhone 13 Pro'];

const browser = await chromium.launch({
  proxy: {
    server: 'http://mobile-proxy:port',
    username: 'user',
    password: 'pass'
  }
});

const context = await browser.newContext({
  ...iPhone13Pro,
  locale: 'en-US',
  timezoneId: 'America/New_York',
  geolocation: { latitude: 40.7128, longitude: -74.0060 },
  permissions: ['geolocation']
});

const page = await context.newPage();

// Ek fingerprint ayarı
await page.addInitScript(() => {
  Object.defineProperty(navigator, 'hardwareConcurrency', {
    get: () => 6 // iPhone 13 Pro 6 çekirdeğe sahiptir
  });
  
  Object.defineProperty(navigator, 'deviceMemory', {
    get: () => 6 // 6GB RAM
  });
});

TLS fingerprinting, istemcinin TLS/SSL bağlantı parametrelerine göre tanımlanması yöntemidir. Her tarayıcı ve işletim sistemi, HTTPS bağlantısı kurarken iletilen cipher suites, extensions, elliptic curves gibi benzersiz bir kombinasyona sahiptir. Koruma sistemleri, TLS fingerprint'i analiz eder ve bunu beyan edilen User-Agent ile karşılaştırır.

Standart otomasyon araçlarının sorunu — TLS fingerprint'in temel Chromium kullanmasıdır, bu da tam bir Chrome'dan farklıdır. Bu tutarsızlık tespit edilir. Çözümler: belirli tarayıcıların TLS fingerprint'ini emüle eden curl-impersonate veya Python için tls-client gibi kütüphanelerin kullanılması; TLS özelleştirmesi ile HTTP istemcileri (örneğin, Node.js için cycletls) kullanmak; headless modları yerine tam tarayıcılar kullanmak.

Kombine yaklaşım:

  • Temiz IP için konut veya mobil proxy'ler
  • Doğru fingerprint için anti-detect tarayıcı veya düzgün ayarlanmış Playwright
  • Tüm parametrelerin senkronizasyonu: IP coğrafi konumu = saat dilimi = dil = yerel ayar
  • İnsan davranışını emüle etme: gecikmeler, fare hareketleri, kaydırma
  • Zor durumlar için captcha çözme hizmeti olarak yedekleme

Pratik kod örnekleri

Turnstile'ı aşmak için Playwright, konut proxy'leri ve anti-detect teknikleri kullanarak tam bir örneği inceleyelim. Bu kod, görevi çözmek için bütünsel bir yaklaşımı göstermektedir.

const { chromium } = require('playwright-extra');
const stealth = require('puppeteer-extra-plugin-stealth')();

// Proxy yapılandırması
const proxyConfig = {
  server: 'http://residential-proxy.proxycove.com:8080',
  username: 'your_username',
  password: 'your_password'
};

// Almanya'dan gerçek bir kullanıcıyı taklit etmek için ayarlar
const userConfig = {
  viewport: { width: 1920, height: 1080 },
  userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
  locale: 'de-DE',
  timezoneId: 'Europe/Berlin',
  geolocation: { latitude: 52.5200, longitude: 13.4050 }, // Berlin
  permissions: ['geolocation']
};

async function bypassTurnstile(url) {
  const browser = await chromium.launch({
    headless: false, // karmaşık captcha'lar için önemlidir
    proxy: proxyConfig,
    args: [
      '--disable-blink-features=AutomationControlled',
      '--no-sandbox',
      '--disable-dev-shm-usage'
    ]
  });

  const context = await browser.newContext({
    ...userConfig,
    // Ek başlıklar
    extraHTTPHeaders: {
      'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
      'Accept-Encoding': 'gzip, deflate, br',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
      'DNT': '1',
      'Connection': 'keep-alive',
      'Upgrade-Insecure-Requests': '1'
    }
  });

  const page = await context.newPage();

  // Anti-detect scriptlerinin eklenmesi
  await page.addInitScript(() => {
    // Webdriver'ı gizleme
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    });

    // Chrome runtime'ı emüle etme
    window.chrome = {
      runtime: {}
    };

    // İzinlerin yeniden tanımlanması
    const originalQuery = window.navigator.permissions.query;
    window.navigator.permissions.query = (parameters) => (
      parameters.name === 'notifications' ?
        Promise.resolve({ state: Notification.permission }) :
        originalQuery(parameters)
    );

    // Windows için daha gerçekçi değerler
    Object.defineProperty(navigator, 'platform', {
      get: () => 'Win32'
    });

    Object.defineProperty(navigator, 'hardwareConcurrency', {
      get: () => 8
    });

    Object.defineProperty(navigator, 'deviceMemory', {
      get: () => 8
    });
  });

  // İnsan davranışını emüle etme
  async function humanLikeDelay(min = 1000, max = 3000) {
    const delay = Math.random() * (max - min) + min;
    await page.waitForTimeout(delay);
  }

  async function humanLikeMouseMove() {
    const viewportSize = page.viewportSize();
    const x = Math.random() * viewportSize.width;
    const y = Math.random() * viewportSize.height;
    await page.mouse.move(x, y, { steps: 10 });
  }

  try {
    // Sayfaya gitme
    await page.goto(url, { waitUntil: 'networkidle' });
    
    await humanLikeDelay(2000, 4000);
    await humanLikeMouseMove();

    // Turnstile'ın yüklenmesini bekleme
    await page.waitForSelector('iframe[src*="turnstile"]', { timeout: 10000 });
    
    console.log('Turnstile tespit edildi, otomatik çözüm bekleniyor...');
    
    // Turnstile yönetilen modda genellikle otomatik olarak çözülür
    // Token'ın görünmesini bekleme
    await page.waitForFunction(() => {
      const response = document.querySelector('[name="cf-turnstile-response"]');
      return response && response.value.length > 0;
    }, { timeout: 30000 });

    console.log('Turnstile başarıyla geçildi!');
    
    // Sitedeki diğer işlemler
    await humanLikeDelay();
    
    // Örnek: form doldurma
    await page.fill('#email', 'user@example.com');
    await humanLikeDelay(500, 1500);
    
    await page.fill('#password', 'SecurePassword123');
    await humanLikeDelay(500, 1500);
    
    await humanLikeMouseMove();
    await page.click('button[type="submit"]');
    
    await page.waitForNavigation({ waitUntil: 'networkidle' });
    
    console.log('Oturum açma başarılı');

  } catch (error) {
    console.error('Turnstile aşma sırasında hata:', error.message);
    
    // Hata ayıklama için ekran görüntüsü
    await page.screenshot({ path: 'turnstile_error.png', fullPage: true });
    
  } finally {
    await browser.close();
  }
}

// Çalıştırma
bypassTurnstile('https://example.com/login');

Görsel görevleri olan hCaptcha için çözüm hizmetinin entegrasyonu gerekecektir. İşte 2Captcha kullanarak bir örnek:

const axios = require('axios');

class HCaptchaSolver {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = 'https://2captcha.com';
  }

  async solve(sitekey, pageUrl, proxy = null) {
    // Görev oluşturma
    const params = {
      key: this.apiKey,
      method: 'hcaptcha',
      sitekey: sitekey,
      pageurl: pageUrl,
      json: 1
    };

    if (proxy) {
      params.proxy = `${proxy.type}:${proxy.host}:${proxy.port}:${proxy.username}:${proxy.password}`;
      params.proxytype = proxy.type.toUpperCase();
    }

    const createResponse = await axios.post(`${this.baseUrl}/in.php`, null, { params });
    
    if (createResponse.data.status !== 1) {
      throw new Error(`Görev oluşturma hatası: ${createResponse.data.request}`);
    }

    const taskId = createResponse.data.request;
    console.log(`Görev oluşturuldu: ${taskId}`);

    // Sonuç için polling
    for (let attempt = 0; attempt < 60; attempt++) {
      await new Promise(resolve => setTimeout(resolve, 5000));

      const resultResponse = await axios.get(`${this.baseUrl}/res.php`, {
        params: {
          key: this.apiKey,
          action: 'get',
          id: taskId,
          json: 1
        }
      });

      if (resultResponse.data.status === 1) {
        console.log('hCaptcha çözüldü!');
        return resultResponse.data.request;
      }

      if (resultResponse.data.request !== 'CAPCHA_NOT_READY') {
        throw new Error(`Çözüm hatası: ${resultResponse.data.request}`);
      }

      console.log(`Deneme ${attempt + 1}/60: captcha hala çözülüyor...`);
    }

    throw new Error('Zaman aşımı: captcha 5 dakika içinde çözülmedi');
  }
}

// Playwright ile kullanım
async function bypassHCaptcha(page, proxyConfig) {
  // Sayfadan sitekey alma
  const sitekey = await page.getAttribute('[data-sitekey]', 'data-sitekey');
  const pageUrl = page.url();

  const solver = new HCaptchaSolver('your_2captcha_api_key');
  
  const token = await solver.solve(sitekey, pageUrl, {
    type: 'http',
    host: 'residential-proxy.proxycove.com',
    port: 8080,
    username: 'your_username',
    password: 'your_password'
  });

  // Token'ı sayfaya yerleştirme
  await page.evaluate((captchaToken) => {
    document.querySelector('[name="h-captcha-response"]').value = captchaToken;
    
    // Bazı siteler için g-recaptcha-response da gerekebilir
    const gRecaptcha = document.querySelector('[name="g-recaptcha-response"]');
    if (gRecaptcha) {
      gRecaptcha.value = captchaToken;
    }
    
    // Callback için olayı tetikleme
    const event = new Event('change', { bubbles: true });
    document.querySelector('[name="h-captcha-response"]').dispatchEvent(event);
  }, token);

  console.log('hCaptcha token'ı yerleştirildi');
}

Sonuç

Turnstile ve hCaptcha'yı proxy üzerinden aşmak, koruma mekanizmalarını anlama ve teknolojilerin akıllıca kombinasyonunu gerektiren karmaşık bir görevdir. Anahtar çıkarımlar: kaliteli konut veya mobil proxy'ler kullanın, veri merkezi proxy'leri yerine; tüm çevre parametrelerini senkronize edin (IP coğrafi konumu, saat dilimi, dil, yerel ayar); otomasyonu gizlemek için anti-detect teknikleri uygulayın; gerçekçi insan davranışını emüle edin; zor durumlar için captcha çözme hizmetlerini ek bir koruma katmanı olarak kullanın.

Yöntemlerin etkinliği, belirli bir web sitesi ve koruma ayarlarına bağlıdır. Temel yapılandırma ile başlamanız ve başarı oranını izleyerek yavaş yavaş karmaşıklaştırmanız önerilir. IP havuzunun engellenmesini önlemek için ölçeklendirmeden önce küçük hacimlerde test edin. Fingerprint parametrelerini ve User-Agent'ı tarayıcıların güncel sürümlerine göre düzenli olarak güncelleyin.

Captcha'larla profesyonel bir şekilde çalışmak için, proxy'leri, anti-detect tarayıcıları ve çözüm hizmetlerini tek bir ekosistemde birleştiren özel otomasyon platformlarını düşünün. Bu, entegrasyon karmaşıklığını azaltır ve sonuçların istikrarını artırır. Başarılı modern koruma sistemlerini aşmanın temeli olarak hedef web sitelerinizde kaliteli proxy'leri test etmeye başlayın.

```