Ara

C# İle En İyi Bot Yazma Kütüphaneleri: Selenium, Puppeteer Ve Daha Fazlası İle Tarayıcı Otomasyonu

C# ile Bot Yazma Kütüphaneleri ve Kullanım Detayları

1. Selenium WebDriver

Açıklama: Selenium WebDriver, tarayıcıları otomatikleştirmek için en popüler araçlardan biridir. Test otomasyonu, web scraping ve tarayıcı bazlı işlemler için yaygın olarak kullanılır.

Özellikler:

  • Çapraz Tarayıcı Desteği: Chrome, Firefox, Edge, Safari gibi tarayıcıları destekler.
  • API ve Komut Seti: Web elementlerini bulma, tıklama, yazma gibi eylemler için güçlü bir API sunar.
  • Topluluk ve Dokümantasyon: Büyük bir topluluğa sahip olup geniş dokümantasyon desteği vardır.

 

Kurulum ve Kullanım: Selenium WebDriver'ı kullanmak için önce NuGet paket yöneticisi ile Selenium paketini projenize ekleyin:

Install-Package Selenium.WebDriver

Basit bir örnek:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

class Program
{
    static void Main()
    {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("http://www.google.com");
        IWebElement query = driver.FindElement(By.Name("q"));
        query.SendKeys("Selenium WebDriver");
        query.Submit();
        driver.Quit();
    }
}

 

2. PuppeteerSharp

Açıklama: Puppeteer, Node.js için geliştirilmiş bir kütüphanedir, ancak PuppeteerSharp adıyla C# için de kullanılabilir. Chromium tarayıcısını kontrol etmek için kullanılır.

Özellikler:

  • Headless Tarayıcı Desteği: Tarayıcıyı ekranda açmadan çalıştırabilir.
  • Chromium Uyumluluğu: Modern web uygulamaları ile tam uyum sağlar.
  • Hızlı ve Hafif: Performans odaklıdır.

 

Kurulum ve Kullanım: PuppeteerSharp'ı projenize ekleyin:

Install-Package PuppeteerSharp

Basit bir örnek:

using PuppeteerSharp;

class Program
{
    static async Task Main()
    {
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        await page.GoToAsync("http://www.google.com");
        await page.TypeAsync("input[name=q]", "PuppeteerSharp");
        await page.Keyboard.PressAsync("Enter");
        await page.WaitForNavigationAsync();
        await browser.CloseAsync();
    }
}

 

3. Playwright.NET

Açıklama: Playwright, Microsoft tarafından geliştirilmiş bir tarayıcı otomasyon aracıdır. C# için Playwright.NET kütüphanesi mevcuttur.

Özellikler:

  • Çapraz Tarayıcı Desteği: Chromium, Firefox ve WebKit tarayıcılarını destekler.
  • Headless ve Headful Mod: Her iki modda da çalışabilir.
  • Ağ Kontrolü: Ağ istekleri üzerinde tam kontrol sağlar.

 

Kurulum ve Kullanım: Playwright.NET'i projenize ekleyin:

Install-Package Microsoft.Playwright

Basit bir örnek:

using Microsoft.Playwright;

class Program
{
    static async Task Main()
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        await page.GotoAsync("http://www.google.com");
        await page.FillAsync("input[name=q]", "Playwright.NET");
        await page.PressAsync("input[name=q]", "Enter");
        await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
        await browser.CloseAsync();
    }
}

 

4. CefSharp

Açıklama: CefSharp, Chromium Embedded Framework'ü (CEF) kullanarak C# uygulamalarında gömülü tarayıcı sağlar.

Özellikler:

  • Chromium Motoru: Web içeriği ile güçlü entegrasyon sağlar.
  • WinForms ve WPF Desteği: Her iki uygulama tipi için de uygundur.

 

Kurulum ve Kullanım: CefSharp'ı projenize ekleyin:

Install-Package CefSharp.WinForms

Basit bir örnek:

using CefSharp;
using CefSharp.WinForms;

class Program
{
    [STAThread]
    static void Main()
    {
        Cef.Initialize(new CefSettings());
        var browser = new ChromiumWebBrowser("http://www.google.com");
        var form = new Form { WindowState = FormWindowState.Maximized };
        form.Controls.Add(browser);
        Application.Run(form);
    }
}

 

5. AngleSharp

Açıklama: AngleSharp, .NET için bir HTML5 tarayıcısı ve parsisidir. Tarayıcı arayüzü olmadan belge işleme yapar.

Özellikler:

  • Headless Çalışma Modu: Tarayıcı olmadan veri işleme.
  • Web Standartları Desteği: HTML, CSS ve diğer web standartlarını destekler.

 

Kurulum ve Kullanım: AngleSharp'ı projenize ekleyin:

Install-Package AngleSharp

Basit bir örnek:

using AngleSharp;
using AngleSharp.Dom;

class Program
{
    static async Task Main()
    {
        var config = Configuration.Default.WithDefaultLoader();
        var context = BrowsingContext.New(config);
        var document = await context.OpenAsync("http://www.google.com");
        var title = document.Title;
        Console.WriteLine($"Page Title: {title}");
    }
}

 

Kullanıcı Aracısı (User Agent) Değiştirme

Kullanıcı aracısı (User Agent), tarayıcı veya botun kimliğini tanımlayan bir dizgedir. Tarayıcıların botları tespit etmesini zorlaştırmak için bu bilgiyi değiştirebilirsiniz.

Selenium WebDriver'da Kullanıcı Aracısını Değiştirme

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

class Program
{
    static void Main()
    {
        var options = new ChromeOptions();
        options.AddArgument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
        IWebDriver driver = new ChromeDriver(options);
        driver.Navigate().GoToUrl("http://www.google.com");
        driver.Quit();
    }
}

 

PuppeteerSharp'ta Kullanıcı Aracısını Değiştirme

using PuppeteerSharp;

class Program
{
    static async Task Main()
    {
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
        await page.GoToAsync("http://www.google.com");
        await browser.CloseAsync();
    }
}

 

Playwright.NET'te Kullanıcı Aracısını Değiştirme

using Microsoft.Playwright;

class Program
{
    static async Task Main()
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = true });
        var page = await browser.NewPageAsync(new BrowserNewPageOptions
        {
            UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
        });
        await page.GotoAsync("http://www.google.com");
        await browser.CloseAsync();
    }
}

 

Tarayıcı Tespiti ve Botlardan Kaçınma Yöntemleri

Tarayıcıların botları tespit etmesi yaygın bir durumdur. Aşağıdaki yöntemler, botların tespit edilme olasılığını azaltmaya yardımcı olabilir:

1. Headless Moddan Kaçınma

Headless modda çalışmak, tarayıcılar tarafından tespit edilme olasılığını artırabilir. Mümkünse, botları headful modda çalıştırarak insan davranışını daha iyi taklit edebilirsiniz.

2. Rastgele Bekleme Süreleri

Eylemler arasında rastgele bekleme süreleri eklemek, insan davranışını taklit ederek tespit edilme riskini azaltabilir.

3. Kullanıcı Aracısı Değiştirme

Daha önce belirtilen yöntemlerle kullanıcı aracısını değiştirerek botun tespit edilmesini zorlaştırabilirsiniz.

4. Tarayıcı Parmak İzlerini Taklit Etme

Gerçek tarayıcı oturumlarına benzeyen parmak izleri oluşturmak için özel teknikler ve kütüphaneler kullanılabilir. Bu, tarayıcıların botları tespit etmesini zorlaştırabilir.

5. Ağ Trafiğini Gizleme

Ağ isteklerini insan benzeri hale getirmek için rastgeleleştirme ve gizleme teknikleri kullanılabilir. Bu, tarayıcıların ve web sitelerinin botları tespit etmesini zorlaştırır.

Sonuç olarak, tarayıcı otomasyonu ve bot yazımı, birçok farklı araç ve teknikle mümkündür. Hangi aracın kullanılacağına karar verirken, projenizin gereksinimlerini ve araçların sunduğu özellikleri dikkate almak önemlidir. Ayrıca, bot yazarken etik kurallara uymak ve web sitelerinin kullanım şartlarına riayet etmek kritik öneme sahiptir.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)