C# WebCrawlRegex

Will Graham

Katılımcı Üye
14 Eki 2022
581
489
Bu program girdiğiniz dosyada ki web sitelerine teker teker http isteği gönderir, istek başarılı olursa sitenin kaynak kodunu çeker ve girdiğiniz regex kodu ile içerisinde ki verileri ayıklar. örneğin aşağıda ki resimde gördüğünüz gibi proxyleri toplamak için bir regex kodu girdim ve program sitelerin üzerinde ki proxyleri çekip yazdırdı.

254548887-05f1ecef-76b9-41a9-844a-660a82441a3c.png


Bir de sitelerde ki e-posta adreslerini çekmeye çalışalım
regex -> \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b

aqpc9xl.png


gördüğünüz gibi e-possta adreslerini çekebildik

çekme işlemini gerçekleştiren kod parçası şu sekilde

C#:
using (HttpClient httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent);
    HttpResponseMessage kaynak = httpClient.GetAsync(siteler[i]).Result;

    if (kaynak.IsSuccessStatusCode)
    {
        MatchCollection veriler = new Regex(@textBox1.Text).Matches(kaynak.Content.ReadAsStringAsync().Result);
        List<string> yveriler = new List<string>();
                                
        foreach (Match veri in veriler)
        {
            if (!yveriler.Contains(veri.Value))
            {
                yveriler.Add(veri.Value);
            }
        }

        foreach (string veri in yveriler)
        {
            listBox1.Items.Add(veri);
        }

        listBox2.Items.Add($"{siteler[i]} sitesi üzerinden {veriler.Count()} veri alýndý.");
        }
    else
    {
        listBox2.Items.Add($"{siteler[i]} sitesi {kaynak.StatusCode} kodunu döndürdü.");
    }
}

burada ki dosyaları indirerek çalıştırabilirsiniz: WebCrawlRegex/bin/Debug/net6.0-windows at main · willsh2/WebCrawlRegex
 

tamam ağa

Uzman üye
7 Haz 2023
1,458
831
Projen çok güzel ama şunu söylemek istiyorum bazen ağ saldırılarında bu tip programlar aldatılabiliyor misal x site yerine seni başka bir siteye yönlendirebilir.
.net nuget kütüphanelerinde bunu engelleyen kütüphaneler mevcut projeyi ilerletmek istiyorsan bunu göz ardı etme.

ayrıca test case ve dökümantasyon yazmayı unutma github da star almanı sağlar.
 

wither

Üye
1 May 2014
81
24
Fikir olarak hoşuma gitti lakin kod olarak hala geliştirilebilir ve şuanki hali amatörce. Ayrıca, olabildiğince C#’dan sakınmanı öneririm çünkü optimizasyon, işlevsellik konusunda çok zora sokan bir dil. Bu projeyi geliştirmek istiyorsan sana tavsiyem en başta başka bir programlama dili tercih etmen (ben olsam python tercih ederdim). Eğer UI önemli ise C/C++ öneririm işini zorlar fakat ortaya çıkan proje daha profosyonel olur. Ayrıca proxyleri kullanmadan önce test edebilirsin, bunun için işi hızlandırmak adına multithreading öneririm ama C#’da multithreading hiç optimize olduğunu düşünmüyorum.

Fikir olarak hoşuma gitti lakin kod olarak hala geliştirilebilir ve şuanki hali amatörce. Ayrıca, olabildiğince C#’dan sakınmanı öneririm çünkü optimizasyon, işlevsellik konusunda çok zora sokan bir dil. Bu projeyi geliştirmek istiyorsan sana tavsiyem en başta başka bir programlama dili tercih etmen (ben olsam python tercih ederdim). Eğer UI önemli ise C/C++ öneririm işini zorlar fakat ortaya çıkan proje daha profosyonel olur. Ayrıca proxyleri kullanmadan önce test edebilirsin, bunun için işi hızlandırmak adına multithreading öneririm ama C#’da multithreading hiç optimize olduğunu düşünmüyorum.
yazdığınızı en az 35 kez okudum ama hiçbir şey anlamadım
 

tamam ağa

Uzman üye
7 Haz 2023
1,458
831
Eğer UI önemli ise C/C++ öneririm işini zorlar fakat ortaya çıkan proje daha profosyonel olur.
c++'da bellek yönetiminden tut herşeye kadar sen sorumlusun .net varken neden kendisini zora soksun ki?
hadi bağımlılığın gerek olmadığı durumlarda c++ mantıklıda diğeri saçma kalır.
 

wither

Üye
1 May 2014
81
24
c++'da bellek yönetiminden tut herşeye kadar sen sorumlusun .net varken neden kendisini zora soksun ki?
hadi bağımlılığın gerek olmadığı durumlarda c++ mantıklıda diğeri saçma kalır.
Daha mükemmel işler çıkarmak için. Ama aşağıdaki yorumumda belirttiğim gibi C++ yerine UI için C#, script için Python tercih etmek C++ kullanmaktan daha mantıklı

yazdığınızı en az 35 kez okudum ama hiçbir şey anlamadım
Özetle, projende ui çok önemli değil ise optimizasyon açışından python tercih etmeni öneririm. UI olsun diyorsan C++ ama bu seni zora sokar.



Ben senin yerinde olsam ve ui'ye önem versen, python ile scripti yapar, c# ile UI'yi yapardım. Geçmişte benzer bir proje için bu metodu kullanmıştım ve gayet güzel sonuç elde etmiştim.



Proxyleri kullanmadan önce kontrol eden bir fonksiyon,



Proxyleri kontrol ederken ve sitelerden bilgi çekerken multithreading kullan diyecektim fakat şimdi farkettim kullanmışsın.

Ayrıca kontrol etmedim ama kodun authentication olan proxyleri kabul ediyor mu? HTTPS olan bir siteye HTTP proxy ile istek gondermemeye dikkat ediyormu? Kodunu geliştireceksen proxyler konusunda sonsuz detay var aslında.
 
Son düzenleme:
Ü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.