Google | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar google

Asp.Net Core uygulamalarında Google reCaptcha kullanımı

17 September 2016 Yorum yapılmamış

Bu makalede Google reCaptcha servisini Asp.Net Core uygulamasında nasıl kullanacağımızı adım adım inceleyeceğiz.

Öncelikle Google reCaptcha Admin sayfasında site ismi, adresi gibi bilgileri girerek yeni bir kayıt oluşturmamız ve eğer bilgisayarınızda .Net Core yüklü değilse yüklememiz gerekiyor.

Örnek projeyi oluşturmak istediğimiz dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidiyoruz ve aşağıdaki kodları çalıştırıyoruz;

Proje tipi olarak Empty Web Application, proje ismi olarakta asp-net-core-google-recaptcha belirleyelim.

project.json dosyasını açarak, dependencies kısmının içerisine aşağıdaki paketleri yazalım;

Paketleri indirmek için Command Prompt içerisinde dotnet restore komutunu çalıştırmamız lazım;

Şimdi Startup.cs dosyasını açalım, Configure() ve ConfigureServices() method’larının içerisini aşağıdaki şekilde değiştirelim;

Şimdi, projenin root dizininde Controllers dizini oluşturalım, içerisine HomeController.cs dosyası ekleyelim ve aşağıdaki kodları yazalım;

Artık, projenin root dizininde Views/Home dizini oluşturup, içerisine Index.cshtml dosyası ekleyebilir, aşağıdaki kodları yazabiliriz;

Html kodları içerisindeki g-recaptcha css class‘ına sahip olan elementin data-sitekey attribute değeri Google reCaptcha Admin konsolunda oluşturduğumuz kaydın SiteKey alanında yazan değer olmalı.

Kullanıcının kendini doğruladığını sunucu üzerinde de kontrol etmemiz gerekiyor, bunun için, HomeController.cs dosyasını açalım ve aşağıdaki kodları ekleyelim;

secret parametresi için, Google reCaptcha Admin konsolunda üretilen Secret Key alanının değerini kullanmamız gerekiyor.

Command Prompt açarak dotnet run komutunu yazalım ve uygulamanın çalıştığını görelim;

Artık Microsoft Edge tarayıcısını açabilir, http://localhost:5000 adresinden sayfayı görebiliriz;

Eğer Google reCaptcha için Ben robot değilim adımını yapmazsak, “Captcha doğrulanmamış“, yanlış doğrularsak, “Captcha yanlış doğrulanmış” adımları gerçekleşecek.

Tüm adımları doğru gerçekleştirirsek, “Herşey doğru” adımına gelecek.

C# ile Google Url Kısaltma Servisini Kullanmak

29 December 2009 9 yorum

Adres kısaltma servisleri ile uzun internet linklerini kısaltmak mümkündür. İnternette birçok adres kısaltma servisi şu anda hizmet vermektedir. Birkaç tanesine örnek olarak;

Facebook adres kısaltma servisleri listesine http://fb.me ile katıldı.

Tabii Google’da boş durmadı ve hemen kolları sıvayarak adres kısaltma servisi http://goo.gl duyurdu.

Bu yazımda, C# ile bu servisi nasıl kullanabileceğimizi anlatacağım.

Öncelikle ekranımızı aşağıdaki resimdeki gibi tasarlayalım;

Uygulamanın anahtar parçası, Kısalt butonunun Click olayında gerçekleşiyor. Google Url Shortener servisini kullanmak için http://ggl-shortener.appspot.com adresine url parametresi ile kısaltılmak istenen adres geçilmeli.

Biz bunu şöyle gerçekleştireceğiz;

WebRequest wr = WebRequest.Create(string.Format("http://ggl-shortener.appspot.com/?url={0}", txtAdres.Text));
WebResponse ws = wr.GetResponse();
StreamReader sr = new StreamReader(ws.GetResponseStream(), Encoding.UTF8);
string response = sr.ReadToEnd();
sr.Close();
ws.Close();

Dönen JSON sonucu, çok kısa ve basit olduğu için basit bir Temizle fonksiyonuna sokacağız,

private string Temizle(string Metin, string Temizlenecek)
{
string oReturn = Metin;

foreach (char c in Temizlenecek)
	oReturn = oReturn.Replace(c.ToString(), string.Empty);

return oReturn.Replace("short_url:", "").Trim();
}

Böylece, Kısalt butonunun Click olayına şu satırları da ekleyebiliriz;

lblAdres.Text = txtAdres.Text;
lblKisaAdres.Text = Temizle(response, "{ }\\,;\"");

Artık tek yapmamız gereken, uygulamayı çalıştırmak ve bir adres girip, Kısalt butonuna tıklamak;

Uygulamanın kaynak kodlarını buradan indirebilirsiniz.

C# ile Google PageRank Bulma

23 December 2009 4 yorum

Google‘ın PageRank uygulaması, web sitelerinin Google tarafından önemini bulmakta kullanılan bir algoritmadır.

Wikipedia’daki şu adresten, PageRank algoritması ile ilgili ayrıntılı bilgiye erişebilirsiniz.

Siz de sitenizin PageRank değerini http://www.prchecker.info adresinden bulabilirsiniz.

Yazacağımız uygulama ile, sitenizin Google PageRank değerini programatik olarak buldurabileceğiz.

Google sitelerin PageRank değerlerini, http://toolbarqueries.google.com/search adresine gönderilen sorgulara cevap olarak verebiliyor. Fakat sonuç alabilmemiz için bu adrese doğru parametreleri vermemiz gerekiyor, aksi halde HTTP403 : Forbidden hatası alıyoruz.

Parametreler:

  • features=Rank
  • client=navclient-auto
  • q=info:{adres}
  • ch={checksum}

Checksum bilgisini hesaplamak için Google’ın yayınladığı bir algoritma var. Uygulamamızda, bu algoritmayı C# ile yazacağız.

Yukarıdaki resimde görünen arayüzü hazırladıktan sonra, projemize GooglePageRank isminde static class ekliyoruz.

GooglePageRank static class’ı üç tane static method’dan oluşuyor.

private static void Mix(ref uint a, ref uint b, ref uint c)
{
	a -= b;
	a -= c;
	a ^= c >> 13;
	b -= c;
	b -= a;
	b ^= a << 8;
	c -= a;
	c -= b;
	c ^= b >> 13;
	a -= b;
	a -= c;
	a ^= c >> 12;
	b -= c;
	b -= a;
	b ^= a << 16;
	c -= a;
	c -= b;
	c ^= b >> 5;
	a -= b;
	a -= c;
	a ^= c >> 3;
	b -= c;
	b -= a;
	b ^= a << 10;
	c -= a;
	c -= b;
	c ^= b >> 15;
}
private static string GoogleChecksum(string url)
{
	uint GoogleMagic = 0xE6359A60;

	uint a, b;
	uint c = GoogleMagic;

	a = b = 0x9E3779B9;

	int k = 0;
	int length = url.Length;

	while (length >= 12)
	{
		a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
		b += (uint)(url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k + 7] << 24));
		c += (uint)(url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k + 11] << 24));

		Mix(ref a, ref b, ref c);

		k += 12;
		length -= 12;
	}

	c += (uint)url.Length;

	switch (length)
	{
		case 11:
			c += (uint)(url[k + 10] << 24);
			goto case 10;
		case 10:
			c += (uint)(url[k + 9] << 16);
			goto case 9;
		case 9:
			c += (uint)(url[k + 8] << 8);
			goto case 8;
		case 8:
			b += (uint)(url[k + 7] << 24);
			goto case 7;
		case 7:
			b += (uint)(url[k + 6] << 16);
			goto case 6;
		case 6:
			b += (uint)(url[k + 5] << 8);
			goto case 5;
		case 5:
			b += (uint)(url[k + 4]);
			goto case 4;
		case 4:
			a += (uint)(url[k + 3] << 24);
			goto case 3;
		case 3:
			a += (uint)(url[k + 2] << 16);
			goto case 2;
		case 2:
			a += (uint)(url[k + 1] << 8);
			goto case 1;
		case 1:
			a += (uint)(url[k + 0]);
			break;
		default:
			break;
	}

	Mix(ref a, ref b, ref c);

	return string.Format("6{0}", c);
}
public static string PageRankHesapla(string adres)
{
	string checkSum = GoogleChecksum("info:" + adres);
	string url = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + checkSum + "&features=Rank&q=info:" + adres;

	try
	{
		WebRequest request = WebRequest.Create(url);
		WebResponse response = request.GetResponse();

		StreamReader reader = new StreamReader(response.GetResponseStream());
		string data = reader.ReadToEnd();

		reader.Close();
		response.Close();

		if (data.IndexOf(':') != -1)
			data = data.Substring(data.LastIndexOf(':') + 1);

		return data;
	}
	catch (Exception)
	{
		return "-1";
	}
}

Şimdi yapmamız gereken, Butonun Click olayında, GooglePageRank static class’ının PageRankHesapla method’unu çağırmak ve dönen değeri Label’da göstermek.

Uygulamanın çalışır halini bu adresten indirebilirsiniz.

Google, HTTP protokolüne alternatif olarak SPDY üzerinde çalışıyor

17 November 2009 Yorum yapılmamış

Google, “Let’s make the web faster” vizyonu çerçevesinde pazara sürekli yeni ürünler/teknolojiler çıkartmaya devam ediyor.

Şuradan tamamını okuyabileceğiniz döküman ile HTTP protokolüne alternatif geliştirdiğini de öğrenmiş olduk.

Yeni protokole SPDY (SPeeDY şeklinde telaffuz ediliyor) ismini vermişler ve SSL üstünde çalışmasını sağlamışlar.

SPDY protokolünün tanımını yaptıkları dokümanda, HTTP’nin şu limitlerinden bahsediyorlar;

Bağlantı başına tek istek : HTTP, aynı anda tek kaynak talep edebilir, getirebilir. HTTP protokolü aynı anda tek istekte bulunabiliyor ve bu istekleri FIFO (First In, First Out) mantığı ile kuyruğa alıp işliyor.

Browser’lar bu problemi çözebilmek için, aynı anda 2 bağlantı açıyorlardı, 2008 yılından beri hemen hemen tüm browserlar, aynı anda bağlantı sayısını 6’ya çıkarttılar.

Sadece istemci istekte bulunabilir : HTTP protokolünde, sunucudan isteği sadece istemci yapabilir. Hatta sunucu, istemci’nin bir kaynağa ihtiyacı olduğunu bilse bile, istemci adına bu kaynağa erişip, sonucu istemciye döndüremez.

Request ve Response Header’larının sıkıştırılamaması : Günümüzde request header’larının boyutu, 200 bayt ile 2 kilobayt arasında değişiyor. Uygulamanızda cookie vs. kullanıyorsanız, boyut ortalama 700-800 bayt oluyor. Her isteğin (request) ve cevabın (response) headerında yer alan bilginin sıkıştırılmadan taşınması, önemli gecikmelere yol açmaktadır.

Gereksiz header bilgileri : Header’da hiç değişmeyecek bilgilerin (User-Agent, Host, Accept, … gibi) tekrar tekrar gönderilmesi gereksizdir. HTTP protokolü, bu bilgileri her isteğin ve cevabın headerına ekliyor.

Veri sıkıştırmasının varsayılan olmaması : HTTP protokolünde veri, varsayılan olarak sıkıştırılmamış formattadır. SPDY protokolünde Google, varsayılan olarak verinin tamamının sıkıştırılmış formatta olmasını sağlıyor. Devamını oku…