C# Selenium Browser Gizleme

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,542
Wrong Side Of Heaven

Merhaba arkadaşlar ben Kruvazör
Bugün sizlerle basit ama çok karıştırılan, cevapları göz önünde dahi olsa çözülemeyen bir problemi kısaca konuşacağız.

Öncelikle
Selenium nedir? Ne değildir? Ne için kullanılır konularını konuşalım.

8vjqdbe.jpg

Selenium, web tarayıcılarında test otomasyonu yapmayı sağlayan bir yapıdır. Ana amacı, Uygulamaların belirli test senaryolarını otomatik olarak çalıştırmak ve sonuçları değerlendirmektir.
Bu, özellikle büyük ve karmaşık web uygulamalarında tekrar eden görevleri otomatikleştirmek ve hataları erken tespit etmek için kullanılır.

Selenium ne değildir?
Selenium İnstagram gibi sosyal medya platformlarda bot yapmak ya da web scrap yapmak için yapılan bir kütüphane değildir kısaca.


Bir hata yaptınız ve web scrap işlemlerinde selenium kullandınız diyelim, kullanıcının ekranında oluşacak browser ve console kirliliğini engellemek adına yapabileceğiz 1-2 şey bulunmakta.
haydi onlara bakalım.



Senaryo:
Muzaffer, sabahları tır şoförlüğü yapan, akşamları ise karanlık dünyanın içinde adını duyuran bir hacker olarak yaşamını sürdürüyordu. Ancak hayatındaki bu iki ayrı dünya arasında bir denge kurmak her geçen gün zorlaşıyordu. Sabahları tır şoförlüğü yaptığı şirketteki işine devam edebilmek için şirketin websitesinden günlük görevleri hakkında bilgi alması gerekiyordu. Ancak şirketin güvenlik politikası, sadece ofiste bulunan bilgisayarlara erişim izni veriyordu.

Muzaffer, çekingen ve asosyal bir karakter olarak, ofise gidip insanlarla iletişime geçmeye çekiniyordu. Ancak aynı zamanda kendi güvenliğini riske atmak istemeyen bir tır şoförü olarak, hacker becerilerini kullanmak yerine yasal bir çözüm bulma yolunu seçti.

Bir gün, uzun araştırmalar ve düşünce sürecinden sonra Muzaffer, C# dilini kullanarak Selenium ile şirketin websitesine otomatik giriş yapacak ve gerekli verileri çekecek bir uygulama yapmaya karar verdi.

Muzaffer, planını uygulamak için karanlık tırında bilgisayarının başına geçti. İlk olarak, web sitesine giriş yapmak için gerekenleri araştırdı. Şanslıydı ki meslek lisesinde HTML öğrenmişti.
Ardından, Selenium'u kullanarak tarayıcı üzerinden otomatik giriş yapma ve veri çekme işlemlerini gerçekleştirecek bir C# uygulaması yazmaya başladı.

Uygulama, her sabah belirli bir saatte şirketin websitesine otomatik olarak giriş yapıyor, Muzaffer'in öğrenmesi gereken bilgileri çekiyor ve bu verileri Telegram botu aracılığıyla kendi hesabına iletiyordu. Böylece Muzaffer, tırından inmeden, ofise gitmeden günlük görevleri hakkında bilgi sahibi olabiliyordu.

Ancak muzafferin dikkat etmesi gereken bir şey vardı;
Bilgisayarlar aktif olarak kullanıldığı için web browseri ve console'u gizlemesi gerekiyordu. yoksa birileri durumu anlayabilirdi.

Haydi şimdi muzafferin kodlarını inceleyelim. ve Seleniumu nasıl gizlediğini öğrenelim.
jw98ptf.jpg


Console projesi açalım ve bu kütüphaneleri ekleyelim

C#:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Telegram.Bot;




Global alan
C#:
    //GetConsoleWindow fonksiyonu
    [DllImport("kernel32.dll")]
    static extern IntPtr GetConsoleWindow();

    //ShowWindow fonksiyonu.
    [DllImport("user32.dll")]
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);


    const int SW_HIDE = 0;

    const int SW_SHOW = 5;




Main içerisine girelim
C#:
  var handle = GetConsoleWindow();  //console gizleme
  ShowWindow(handle, SW_HIDE);

  string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
    string chromeDriverPath = Path.Combine(currentDirectory, "chromedriver.exe");


    if (!File.Exists(chromeDriverPath))
    {
        Console.WriteLine("HATA: Chromedriver.exe proje klasöründe yok.");
        return;
    }
C#:
        ChromeOptions chromeOptions = new ChromeOptions();  //işte burası kritik   
        chromeOptions.AddArgument("--headless");            // burada bu --headlessi chrome option olarak belirtiyoruz ki program çalıştığında karşımıza chrome çıkmasın

C#:
  using (IWebDriver driver = new ChromeDriver(chromeDriverPath, chromeOptions))  //BURADA CHROMEOPTİONS OLARAK BELİRTMEYİ UNUTUYORLAR GENELDE KESİNLİKLE BELİRTİN.
  {
      driver.Navigate().GoToUrl("https://www.tasimasuyladegirmendonmez.com/tirci/login");  //siteyi veriyoruz

      IWebElement customerNumberInput = driver.FindElement(By.Id("sofor_Number"));  //sitede çekeceğimiz form elementleri
      IWebElement passwordInput = driver.FindElement(By.Id("sofor_Password"));
      IWebElement submitButton = driver.FindElement(By.Id("submitButton"));

      customerNumberInput.SendKeys("muzaffer");  //kullanıcı adı
      passwordInput.SendKeys("bos_zamanlarimda_coderx37ye_ne_oldu_diye_düsünüyorum37");  //sifre

      submitButton.Click();  //butona tıklama
      // BURADAN SONRASI MUZAFFERİN KİŞİSEL BİLGİLERİ OLDUĞU İÇİN GİZLENMİŞTİR.
     // Muzaffer buradan aldığı verileri message adında bir değişkende tutup telegrama atacaktır


Telegram fonksiyonu (mainde çağırmayı unutmayın)
C#:
static void SendToTelegram(string message)
{
    string botToken = "";
    long chatId = ;
    TelegramBotClient botClient = new TelegramBotClient(botToken);
    botClient.SendTextMessageAsync(chatId, message).Wait();
}

Muzaffer bu kodlar ile hem chrome u hem de console u gizlemeyi başardı ve verileri başarıyla her gün telegramına yolladı.

alt barda çıkan console görüntüsünü nasıl gizleyeceğinizi yorumlarda belirtebilirsiniz :)




OKUDUĞUNUZ İÇİN TEŞEKKÜRLER.


 

KaptanTR

Admin
17 Nis 2015
1,653
1,596

Öncelikle Eline sağlık Kruvazör,


Bir kaç yorumum ve önerim olacak;

Headless modunu kullanarak Selenium'un tarayıcı ara yüzünü gizlemiş. Bu, hem performansı artırır hem de arka planda sessizce çalışmasını sağlar. Ancak, bazı durumlarda headless modun tarayıcının tam sürümünden farklı davranabileceğini unutmamak önemlidir.

Selenium ile otomatikleştirme yapılırken, sayfa yüklemelerindeki gecikmeler, elementlerin bulunamaması gibi durumlar için sağlam hata yönetimi mekanizmaları eklemek faydalıdır. Bu, try-catch blokları ve uygun zaman aşımı ayarları ile sağlanabilir.

Uygulamanın ne yaptığını anlamak ve hataları teşhis etmek için etkili bir günlükleme mekanizması kurmak yararlı olacaktır. Bu, hataların daha hızlı tespit edilmesini ve giderilmesini sağlar.

Kullanıcı adı ve şifre gibi hassas bilgilerin kod içerisinde açık bir şekilde saklanmaması önemlidir. Bu tür bilgiler için ortam değişkenleri veya şifrelenmiş yapılandırma dosyaları kullanmak daha güvenlidir.

Muzaffer'in uygulamasının güvenliği, özellikle şirket politikaları ve kişisel verilerin korunması açısından önemlidir. Herhangi bir güvenlik ihlali veya veri sızıntısı potansiyeline karşı dikkatli olmak gerekir.


Saygılarımla,

İyi Çalışmalar Dilerim.

 

tamam ağa

Uzman üye
7 Haz 2023
1,458
831

Öncelikle Eline sağlık Kruvazör,

Bir kaç yorumum ve önerim olacak;

Headless modunu kullanarak Selenium'un tarayıcı ara yüzünü gizlemiş. Bu, hem performansı artırır hem de arka planda sessizce çalışmasını sağlar. Ancak, bazı durumlarda headless modun tarayıcının tam sürümünden farklı davranabileceğini unutmamak önemlidir.

Selenium ile otomatikleştirme yapılırken, sayfa yüklemelerindeki gecikmeler, elementlerin bulunamaması gibi durumlar için sağlam hata yönetimi mekanizmaları eklemek faydalıdır. Bu, try-catch blokları ve uygun zaman aşımı ayarları ile sağlanabilir.

Uygulamanın ne yaptığını anlamak ve hataları teşhis etmek için etkili bir günlükleme mekanizması kurmak yararlı olacaktır. Bu, hataların daha hızlı tespit edilmesini ve giderilmesini sağlar.

Kullanıcı adı ve şifre gibi hassas bilgilerin kod içerisinde açık bir şekilde saklanmaması önemlidir. Bu tür bilgiler için ortam değişkenleri veya şifrelenmiş yapılandırma dosyaları kullanmak daha güvenlidir.

Muzaffer'in uygulamasının güvenliği, özellikle şirket politikaları ve kişisel verilerin korunması açısından önemlidir. Herhangi bir güvenlik ihlali veya veri sızıntısı potansiyeline karşı dikkatli olmak gerekir.

Saygılarımla,

İyi Çalışmalar Dilerim.

Muzaffer için kullanım spesifikasyonu(şartnamesi) hazırlayalım kaptan reis :)
test case senaryolarıda eklersek tadından yenmez.
 

KontraTC

Katılımcı Üye
16 Ağu 2023
290
50

Merhaba arkadaşlar ben Kruvazör
Bugün sizlerle basit ama çok karıştırılan, cevapları göz önünde dahi olsa çözülemeyen bir problemi kısaca konuşacağız.

Öncelikle
Selenium nedir? Ne değildir? Ne için kullanılır konularını konuşalım.

8vjqdbe.jpg

Selenium, web tarayıcılarında test otomasyonu yapmayı sağlayan bir yapıdır. Ana amacı, Uygulamaların belirli test senaryolarını otomatik olarak çalıştırmak ve sonuçları değerlendirmektir.
Bu, özellikle büyük ve karmaşık web uygulamalarında tekrar eden görevleri otomatikleştirmek ve hataları erken tespit etmek için kullanılır.

Selenium ne değildir?
Selenium İnstagram gibi sosyal medya platformlarda bot yapmak ya da web scrap yapmak için yapılan bir kütüphane değildir kısaca.


Bir hata yaptınız ve web scrap işlemlerinde selenium kullandınız diyelim, kullanıcının ekranında oluşacak browser ve console kirliliğini engellemek adına yapabileceğiz 1-2 şey bulunmakta.
haydi onlara bakalım.




Senaryo:
Muzaffer, sabahları tır şoförlüğü yapan, akşamları ise karanlık dünyanın içinde adını duyuran bir hacker olarak yaşamını sürdürüyordu. Ancak hayatındaki bu iki ayrı dünya arasında bir denge kurmak her geçen gün zorlaşıyordu. Sabahları tır şoförlüğü yaptığı şirketteki işine devam edebilmek için şirketin websitesinden günlük görevleri hakkında bilgi alması gerekiyordu. Ancak şirketin güvenlik politikası, sadece ofiste bulunan bilgisayarlara erişim izni veriyordu.

Muzaffer, çekingen ve asosyal bir karakter olarak, ofise gidip insanlarla iletişime geçmeye çekiniyordu. Ancak aynı zamanda kendi güvenliğini riske atmak istemeyen bir tır şoförü olarak, hacker becerilerini kullanmak yerine yasal bir çözüm bulma yolunu seçti.

Bir gün, uzun araştırmalar ve düşünce sürecinden sonra Muzaffer, C# dilini kullanarak Selenium ile şirketin websitesine otomatik giriş yapacak ve gerekli verileri çekecek bir uygulama yapmaya karar verdi.

Muzaffer, planını uygulamak için karanlık tırında bilgisayarının başına geçti. İlk olarak, web sitesine giriş yapmak için gerekenleri araştırdı. Şanslıydı ki meslek lisesinde HTML öğrenmişti.
Ardından, Selenium'u kullanarak tarayıcı üzerinden otomatik giriş yapma ve veri çekme işlemlerini gerçekleştirecek bir C# uygulaması yazmaya başladı.

Uygulama, her sabah belirli bir saatte şirketin websitesine otomatik olarak giriş yapıyor, Muzaffer'in öğrenmesi gereken bilgileri çekiyor ve bu verileri Telegram botu aracılığıyla kendi hesabına iletiyordu. Böylece Muzaffer, tırından inmeden, ofise gitmeden günlük görevleri hakkında bilgi sahibi olabiliyordu.

Ancak muzafferin dikkat etmesi gereken bir şey vardı;
Bilgisayarlar aktif olarak kullanıldığı için web browseri ve console'u gizlemesi gerekiyordu. yoksa birileri durumu anlayabilirdi.

Haydi şimdi muzafferin kodlarını inceleyelim. ve Seleniumu nasıl gizlediğini öğrenelim.
jw98ptf.jpg


Console projesi açalım ve bu kütüphaneleri ekleyelim

C#:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Telegram.Bot;




Global alan
C#:
    //GetConsoleWindow fonksiyonu
    [DllImport("kernel32.dll")]
    static extern IntPtr GetConsoleWindow();

    //ShowWindow fonksiyonu.
    [DllImport("user32.dll")]
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);


    const int SW_HIDE = 0;

    const int SW_SHOW = 5;




Main içerisine girelim
C#:
  var handle = GetConsoleWindow();  //console gizleme
  ShowWindow(handle, SW_HIDE);

  string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
    string chromeDriverPath = Path.Combine(currentDirectory, "chromedriver.exe");


    if (!File.Exists(chromeDriverPath))
    {
        Console.WriteLine("HATA: Chromedriver.exe proje klasöründe yok.");
        return;
    }
C#:
        ChromeOptions chromeOptions = new ChromeOptions();  //işte burası kritik   
        chromeOptions.AddArgument("--headless");            // burada bu --headlessi chrome option olarak belirtiyoruz ki program çalıştığında karşımıza chrome çıkmasın

C#:
  using (IWebDriver driver = new ChromeDriver(chromeDriverPath, chromeOptions))  //BURADA CHROMEOPTİONS OLARAK BELİRTMEYİ UNUTUYORLAR GENELDE KESİNLİKLE BELİRTİN.
  {
      driver.Navigate().GoToUrl("https://www.tasimasuyladegirmendonmez.com/tirci/login");  //siteyi veriyoruz

      IWebElement customerNumberInput = driver.FindElement(By.Id("sofor_Number"));  //sitede çekeceğimiz form elementleri
      IWebElement passwordInput = driver.FindElement(By.Id("sofor_Password"));
      IWebElement submitButton = driver.FindElement(By.Id("submitButton"));

      customerNumberInput.SendKeys("muzaffer");  //kullanıcı adı
      passwordInput.SendKeys("bos_zamanlarimda_coderx37ye_ne_oldu_diye_düsünüyorum37");  //sifre

      submitButton.Click();  //butona tıklama
      // BURADAN SONRASI MUZAFFERİN KİŞİSEL BİLGİLERİ OLDUĞU İÇİN GİZLENMİŞTİR.
     // Muzaffer buradan aldığı verileri message adında bir değişkende tutup telegrama atacaktır


Telegram fonksiyonu (mainde çağırmayı unutmayın)
C#:
static void SendToTelegram(string message)
{
    string botToken = "";
    long chatId = ;
    TelegramBotClient botClient = new TelegramBotClient(botToken);
    botClient.SendTextMessageAsync(chatId, message).Wait();
}

Muzaffer bu kodlar ile hem chrome u hem de console u gizlemeyi başardı ve verileri başarıyla her gün telegramına yolladı.

alt barda çıkan console görüntüsünü nasıl gizleyeceğinizi yorumlarda belirtebilirsiniz :)




OKUDUĞUNUZ İÇİN TEŞEKKÜRLER.


Konu anlatım şeklin çok güzel eline sağlık
 

Klaxxon

Katılımcı Üye
5 Şub 2022
774
783
Şunu çözebilirsen güzel olur bazen siteler chrome driver algılıyorlar veya js çalışmadığı için bir işlem yaptırmıyor bunun çözünümü biliyorsan paylaşırmısın
 

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,542
Wrong Side Of Heaven
Ellerinize sağlık

Konu anlatım şeklin çok güzel eline sağlık
Teşekkürler

Şunu çözebilirsen güzel olur bazen siteler chrome driver algılıyorlar veya js çalışmadığı için bir işlem yaptırmıyor bunun çözünümü biliyorsan paylaşırmısın
Çözüm basit.
Selenium gibi sadece browser kontrol tabanlı bir yapı kullanmak yerine tüm bilgisayarı kontrol edebileceğin robotik süreç otomasyonu geliştirebilirsin. (Uıpath)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.