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.
Yorum Yap