Site IP Sorgula 1.1
Herkes gibi UmutD.com da spam botlardan muzdarip oluyor kimi zaman. Her siteye dadanan ve web’deki hemen hemen tüm sitelerin azraili olan spam botlar gereksiz yere site trafiginden yedikleri gibi, sitenin çok fazla robot ile taraması sonucu hemen çıkma oranında (bounce rate) artışa ve google’ın sitenizi sevmemeye başlamasına (hit arttırmak için bu trafiğe sizin sebep olduğunuza inanmaya başlayor) sebep olmakta. Aslında bu botlar sitenizin istatistiklerini ciddi manada yükseltse de, Google vb. arama motorları bu durum devam ederse sizi cezalandırıyor ve aramalarda “kimi zaman” aşağıya düşmeye başlıyorsunuz.
Ben de bu botlarla elimden geldiğince; gerek Google Analytics‘teki filtreleme özelliğini, gerek Semalt Redirect Manager eklentisini (Semalt trafiğinin sitenize gelmesini engelleyip Google’a yönlendirme yapıyor) kullanarak botlarla ciddi anlamda mücadele etmeyi başardım. Artık site trafiğimde büyük dalgalanmalar olmuyor ve siteme çoğunlukla insanların girdiğini anlayabiliyorum.
Fakat son zamanlarda Semalt Redirect Manager yetersiz gelmeye başladı (Evet, Google Analytics’in filtre özelliğini kullanmaktan çok daha kolay ve çoğunlukla üşeniyorum). Sanırım program güncellenme almadığı için engellendiğim bazı botların tekrardan siteme kaçak yollarla giriş yaptığını fark ettim. Bu noktada çözüm olarak WordPress’te kullandığım iThemes Security güvenlik eklentisi ile IP bazlı engelleme yapmaya karar verdim. Tek sorun; elimde spam sitelerin web adresleri/DNS’leri olmasına rağmen (Örn.: 100dollars-seo.com) bu sitelerin IP adresleri olmamasıydı. İşte ben de tüm bu sitelerin IP adreslerini tek seferde bulabilmek için işte bu programı yazdım. Hatta yazmakla yetinmedim, Tekil olarak girilen sitenin çeşitli bilgilerini sunan bir seçeneği de programıma ekledim. Valla tasarımı bir kenara koyarsak, program gayet güzel oldu. Basit özelliklere gelecek olursak;
- Adresi girilen web sitesine dair çeşitli bilgiler sunma (Web’den ve Excel’den),
- Birden fazla web sitesinin adresini, ip adresine dönüştürme.
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687using System;using System.Net;using System.Windows.Forms;using site_ip.Siniflar;namespace site_ip{public partial class FrmSiteIp : Form{public FrmSiteIp(){InitializeComponent();}private void btnBasitCozumle_Click(object sender, EventArgs e){SiteIp siteIp = new SiteIp();Sorgu sorgu = new Sorgu();try{siteIp.SiteAdres = Adres.Kontrol(txtAdres.Text);txtSiteIp.Text = siteIp.IpBul();siteIp.IpAdresi = IPAddress.Parse(txtSiteIp.Text);txtSayisalIp.Text = siteIp.SayisalIp();sorgu.ExcelSorgu(txtSayisalIp.Text);txtUlke.Text = sorgu.UlkeKisaltma;txtUlkeKodu.Text = sorgu.UlkeKodu;sorgu.XmlSorgu(txtSiteIp.Text);txtSehir.Text = sorgu.XmlListesi[0];txtEnlem.Text = sorgu.XmlListesi[1];txtBoylam.Text = sorgu.XmlListesi[2];txtSaatDilimi.Text = sorgu.XmlListesi[3];txtIsp.Text = sorgu.XmlListesi[4];txtOrg.Text = sorgu.XmlListesi[5];txtAs.Text = sorgu.XmlListesi[6];btnBasitCozumle.Focus();}catch (Exception ex){MessageBox.Show(ex.Message, @"Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);btnBasitCozumle.Focus();}}private void btnCokluCozumle_Click(object sender, EventArgs e){rtbDns.Text = string.Empty;rtbAdres.Text = rtbAdres.Text.Trim();DnsBilgi dnsBilgi = new DnsBilgi();rtbDns.Text += dnsBilgi.Cozumle(rtbAdres.Lines);rtbDns.Text = rtbDns.Text.Trim();btnCokluCozumle.Focus();}private void rtbAdres_VScroll(object sender, EventArgs e){ScrollBarAyar.Kaydir(rtbDns, rtbAdres);}private void rtbDns_VScroll(object sender, EventArgs e){ScrollBarAyar.Kaydir(rtbDns, rtbAdres);}private void tsmiKes_Click(object sender, EventArgs e){Clipboard.SetText(rtbDns.Text, TextDataFormat.Text);}private void tsmiKopyala_Click(object sender, EventArgs e){Clipboard.SetText(rtbDns.Text, TextDataFormat.Text);}private void tsmiYapistir_Click(object sender, EventArgs e){rtbAdres.Paste();}}}
- 1234567891011121314151617181920212223242526272829using System;using System.Globalization;using System.Net;namespace site_ip.Siniflar{class SiteIp{public string SiteAdres { get; set; }public IPAddress IpAdresi { get; set; }// 1. Sitenin IP adresini bulpublic string IpBul(){IPAddress[] dnsAdresi = Dns.GetHostAddresses(SiteAdres);return dnsAdresi.GetValue(0).ToString();}// 2. Sitenin IP adresini sayısala dönüştürpublic string SayisalIp(){byte[] ipBoyut = IpAdresi.GetAddressBytes();Array.Reverse(ipBoyut);uint ipBoyutDonusumu = BitConverter.ToUInt32(ipBoyut, 0);return ipBoyutDonusumu.ToString(CultureInfo.InvariantCulture);}}}
- 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061using System;using System.Collections.Generic;using System.Diagnostics;using System.Xml;using Excel = Microsoft.Office.Interop.Excel;namespace site_ip.Siniflar{public class Sorgu{public string UlkeKisaltma { get; set; }public string UlkeKodu { get; set; }public List<string> XmlListesi { get; set; } = new List<string>();public List<string> XmlBilgileri { get; set; } = new List<string>{"query/city","query/lat","query/lon","query/timezone","query/isp","query/org","query/as"};// Sitenin IP adres bilgilerini Excel'den sorgulapublic void ExcelSorgu(string sayisalIp){Excel.Application excel = new Excel.Application();excel.Workbooks.Open(Environment.CurrentDirectory + @"\ip-araliklari.xlsx");excel.Visible = false;// Excel'de arama yaparak Ülke kodu ve kısaltmaları geri döndürexcel.Cells[2, 7].value = sayisalIp;UlkeKodu = excel.Worksheets[1].Range("G3").Value;UlkeKisaltma = excel.Worksheets[1].Range("G4").Value;ExcelSonlandir();}private static void ExcelSonlandir(){foreach (Process devamEdenIslem in Process.GetProcessesByName("EXCEL"))devamEdenIslem.Kill();}// XML ile gelen sorgu bilgilerini web'den al (Aslında Excel'deki bilgiler de buradan alınabilirdi. Maksat aksiyon)public void XmlSorgu(string siteIp){XmlDocument xmlBelgesi = new XmlDocument();xmlBelgesi.Load("http://ip-api.com/xml/" + siteIp);foreach (var bilgi in XmlBilgileri)XmlListesi.Add(xmlBelgesi.SelectSingleNode(bilgi)?.InnerText);// Sitenin IP adres bilgilerini Excel'den sorgulamak istemeyip XML ile web'den alma işlemi (Opsiyonel)//txtUlke.Text = xmlBelgesi.SelectSingleNode("query/country")?.InnerText;//txtUlkeKodu.Text = xmlBelgesi.SelectSingleNode("query/countryCode")?.InnerText;}}}
- 1234567891011121314151617181920212223242526using System;using System.Text.RegularExpressions;namespace site_ip.Siniflar{public class Adres{private static bool LinkDogruMu(string adres){Regex duzenliLink = new Regex(@"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?", RegexOptions.IgnoreCase);if (duzenliLink.IsMatch(adres))return true;return false;}public static string Kontrol(string adres){if (LinkDogruMu(adres))return adres.Replace("http://", "").Replace("https://", "");throw new UriFormatException("Lütfen web sitesi adresini doğru girin.");}}}
- 1234567891011121314151617181920212223242526272829303132using System.Net;using System.Net.Sockets;using System.Text;namespace site_ip.Siniflar{public class DnsBilgi : Adres{public StringBuilder DnsAdresleri { get; set; } = new StringBuilder();// Çoklu alan adı/DNS çözümlemepublic string Cozumle(string[] rtbAdresLines){foreach (string site in rtbAdresLines){string siteAd = Kontrol(site);try{if (Dns.GetHostAddresses(siteAd).Length > 0)DnsAdresleri.AppendLine(Dns.GetHostAddresses(siteAd).GetValue(0).ToString());}catch (SocketException){DnsAdresleri.AppendLine(@"--- Böyle bir site bulunamadı ---");}}return DnsAdresleri.ToString();}}}
- 123456789101112131415161718192021222324252627282930313233343536373839using System;using System.Runtime.InteropServices;using System.Windows.Forms;namespace site_ip.Siniflar{// Çoklu IP alanındaki Rich Text Box'taki kaydırma çubuklarının aynı anda hareket etmesi için gerekli kodlarpublic class ScrollBarAyar{public enum Message : uint{WmVscroll = 0x0115}public enum ScrollBarType : uint{SbVert = 1}public enum ScrollBarCommands : uint{SbThumbpos = 4}[DllImport("User32.dll")]public static extern int GetScrollPos(IntPtr hWnd, int nBar);[DllImport("User32.dll")]public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);public static void Kaydir(RichTextBox rtbAdres, RichTextBox rtbDns){int pozisyon = GetScrollPos(rtbDns.Handle, (int) ScrollBarType.SbVert);pozisyon <<= 16;uint parametre = (uint) ScrollBarCommands.SbThumbpos | (uint) pozisyon;SendMessage(rtbAdres.Handle, (int) Message.WmVscroll, new IntPtr(parametre), new IntPtr(0));}}}
Hayret. Hiç yorum yapılmamış... İlk yorum yapan neden siz olmayasınız.