Cloudflare: Basit Seviye Koruma Site Aşılabilir

Cloudflare: Basit Seviye Koruma Site Aşılabilir

Bugün bir müşterimin isteği üzerine bir otomasyon geliştirdim. Bir sitede selenium Cloudflare Verification'a takıldığını gördüm. Hiç bir şekilde geçişi olmayan bir human verification sistemi var.

Mantık nedir?

Siz selenium & chromedriver ile yazdığınız bir otomasyon/web scrap olayını cloudflare detect edebiliyor. Aşmanın yöntemleri vardır ancak bu yol karın ağrılarından geçiyor sanırım.

Buradaki mantık, siz her selenium ve chromedriver ile yazdığınız proje cloudflare'ın fraud sistemine takılıyor, açılan chromedriver üstünden doğrulama yapsanız bile tekrar sizi Human Verification'a atıyor.

Çözüm Nedir?

Manuel verify yapsanızda geçişi yok. Çünkü arkaplanda direkt olarak bot olarak algılayan bir sistemi var. Bunun tabi farklı çözümleri vardır lakin bir çok araştırma ve kaynak üzerine Puppeteer, Puppeteer-Extra, Puppeteer Extra Plugin Stealth ile bu konunun aşılabileceğini keşfettim.

Puppeteer Hakkında

Puppeteer, Google tarafından geliştirilen bir Node.js kütüphanesidir. Bu kütüphane, Chrome ve Chromium tabanlı tarayıcıları otomatize etmek için kullanılır. Bu sayede, tarayıcı üzerindeki işlemleri otomatikleştirmek, test etmek veya web scraping yapmaya olanak tanır.

Puppeteer Extra Nedir?

Puppeteer Extra, Puppeteer'ın özelliklerine ek olarak tarayıcı otomasyonu için ek özellikler sağlayan bir Node.js kütüphanesi, Puppeteer-Extra, özellikle botların tespit edilmesini önlemek için tarayıcıların davranışlarını gizlemeye veya değiştirmeye yardımcı olan eklentiler içeriyor.

Puppeteer Extra Plugin Stealth Nedir?

Puppeteer Extra Plugin Stealth, Puppeteer-Extra için bir eklentidir ve Puppeteer aracılığıyla yapılan tarayıcı otomasyon işlemlerini daha "insan gibi" hale getirir. Bu eklenti, tarayıcı başlıklarını, dil ayarlarını, referans bilgilerini, WebGL ve Canvas argümanlarını gizleyerek tarayıcının cloudflare gibi sistemler tarafından fark edilmesini zorlaştırır. Bu sayede otomasyonun algılanma olasılığı düşürülür.

Hadi gelin örnek bir kod inceleyelim.

// puppeteer-extra, puppeteer'a ek özellikle
const puppeteer = require('puppeteer-extra');

// Stealth eklentisini entegre ediyoruz.
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const {executablePath} = require('puppeteer');
puppeteer.launch({ headless: true, executablePath: executablePath() }).then(async browser => {
    // Yeni bir sayfa oluşturulur
    const page = await browser.newPage();

    // Coingecko ana sayfasına gidilir
    await page.goto('https://www.coingecko.com/');

    // 2 saniye beklenir
    await page.waitForTimeout(2000);

    // Tam sayfa ekran görüntüsü alınır
    await page.screenshot({ path: 'coingecko.png', fullPage: true });

    // Tarayıcı kapatılır
    await browser.close();
});

Tata! işte bu kadar. Ancak şunu unutmamakta fayda var. %100 efektif bir şekilde sisteme takılmıyor gibi bir durum söz konusu değil.

Ekstra eklemeniz gereken bir çok detay olabilir, bunlar da yazdığınız otomasyonu etkileyebilir.

Bir sonraki makalemde görüşmek dileğiyle.