Youtube Trend Müzik Listelerini Almak

Youtube trend müzik listelerini Php ile almak mümkün. Bu örnekte Youtube Türkiye’de en çok izlenen ilk 10 şarkıcının adını ve parça ismini alacağız. Özellikle mp3, müzik sitesi sahipleri için oldukça kullanışlı ve basit bir script. İhtiyacımız olan temel işlev Curl ve explode…

<?php
$url='https://www.youtube.com/playlist?list=PLFgquLnL59an-05S-d-D1md6qdfjC0GOO';
$ch = curl_init();	
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,30); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Chrome/24.0.0.3");
curl_setopt($ch, CURLOPT_URL, $url);
$html=curl_exec($ch);
curl_close($ch);				
$byi=1;
$parcalakim=explode('" data-title="',$html);
$parcalaresim=explode('" data-thumb="',$html);

while ($byi<=10) {
$xx = trim($parcalaresim[$byi+6]);
$xx=explode('.jpg',$xx);
$xx=trim($xx[0].'.jpg');
$yy = trim($parcalakim[$byi]);
$yy=explode('"',$yy);
$yy=trim($yy[0]);

/* Başlıkları düzenledik */
$yy = preg_replace('~\(.*?\)~', '', $yy);
$yy = preg_replace('~\[.*?\]~', '', $yy);     
$yy=str_replace('(Official Video)','',$yy);
$yy=trim($yy);
$yy=trim($yy,'-');
$yy=str_replace('&amp;','ve',$yy);
$yy=trim($yy);
/* Başlıkları düzenledik */

echo '<h1><img src="'.$xx.'" alt="'.$yy.'" width="120" height="90" /><br />'.$yy.'</h1>';
$byi++;
}

?>

 

DEMO

Eğer dünyada trend olan listeyi almak isterseniz adresi şununla değiştirebilirsiniz: https://www.youtube.com/playlist?list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj

 

 

Php Sql Injection Engelleme Kesin Çözüm

Php Sql injection engelleme için kesin bir çözüm var. htmlspecialchars, stripslashes, mysql_escape_string, strip_tags sizi her zaman doğru biçimde korumaz. Yaratıcı injection girişimlerine karşı özelleştirilebilir ve aynı zamanda genel-geçer bir güvenlik kalkanı oluşturmalıyız.

Mysql injection ile uğraşmış herkes, bu işlemin temelde get veya post yöntemiyle yapıldığını bilir. Site üzerinde gerçekleştirilecek bu veri giriş çıkışı, adres satırı işlemleriyle tablo yapısı hakkında bilgiye ulaşıldıktan sonra, tabloya ilgili SQL komutları gönderilir. Bunu engellemenin, sitenizi hackerlardan uzak tutmanın (site bazında) tarafımca denenmiş ve başarılı bir yöntemi var. Bu çözümü WordPress dahil tüm Php tabanlı yazılımlarınızda kullanmanızı tavsiye ederim. Böylece Sql saldırılarından kurtulabileceksiniz.

Atmamız gereken ilk adım “guvenlik.php” adlı bir Php dosyası oluşturarak bu dosyayı tüm PHP dosyalarınızın en üst kısmına include etmek.

<?php include('guvenlik.php'); ?>

Bu include içeren kod satırının Php dosyalarınızın en üstünde olması elzemdir. Eğer bu satırdan önce  Mysql bağlantısı gibi bir kod satırı kullanmışsanız güvenlik kodlamamızın yararsız olabileceğini unutmayın. Ayrıca Mysql içeren (bağlantı/sorgu vb.) her Php dosyası için bu satırın en tepede olması gerekiyor. Şimdi guvenlik.php dosyanızı açıp aşağıdaki adımlara geçebilirsiniz.

GET SQL Injection Saldırıları İçin Güvenlik Sağlayalım

Adres satırından yapılan saldırılar en bilindik ve yaygın olanları. Adres satırından hiçbir veri okutmuyorum diye avunmanız doğru değil. Ortalama bir hacker Mysql işlemlerini adres satırından kolayca yapabilir. Üstelik ?id=12, ?ara=beybut şeklinde okutmalar kullanıyorsanız kesinlikle risk altındasınız. Bu hacking girişimlerini engellemek için Get yöntemine özel bir çözüm üretelim.

$parametreler = strtolower($_SERVER['QUERY_STRING']); //Adres satırından gelen tüm sorguları aldık.
$yasaklar="%¿¿'¿¿`¿¿insert¿¿concat¿¿delete¿¿join¿¿update¿¿select¿¿\"¿¿\¿¿<¿¿>¿¿tablo_adim¿¿kolon_adim"; //Buraya tablo adlarınızı da ekleyiniz. Her ekleme sonrasını ¿¿ ile ayırmalısınız.
$yasakla=explode('¿¿',$yasaklar);
$sayiver=substr_count($yasaklar,'¿¿');
$i=0;
while ($i<=$sayiver) {
if (strstr($parametreler,$yasakla[$i])) {
header("location:http://www.beybut.com/hackerbey.jpg"); //Sql injection girişimi yakalandığında yönlendiriyoruz.
exit;
}

$i++;	
}

if (strlen($parametreler)>=90) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;	
}

Burada $yasaklar karşısında, ¿¿ ile ayırarak belirttiğimiz girdilerden biri adres satırında mevcutsa kişiyi bir resme yönlendirdik. $yasaklar bölümünü tablo, kolon adlarınızı da yazarak güçlendirebilirsiniz. Bu yöntemle ?ref türü, adres satırıyla ilişkili tüm saldırılardan kurtulabilirsiniz. Eğer ayracı (¿¿) beğenmediyseniz bunu değiştirmeniz mümkün.

Hacker, sql injection denediğinde karşısına aşağıdaki resim gelecek.

Hacker Bey
Hacker Bey

Aynı yöntemi POST için de uygulayalım.

POST ile SQL Injection Saldırıları İçin Güvenlik Sağlayalım

Post güvenliği için en elzem konu bütün tablolarınızı aşağıdaki biçimde belirtmenizdir. Çünkü post verilerinde <, >, ‘ gibi karakterler sıkça kullanılır. Bunları engellemek doğru bir yöntem değildir. Bunun yerine hackerın ihtiyacı olan veya tahmin edeceği tüm tablo adlarımızı kontrole ekleyeceğiz. Tablo adı girilmemiş bir SQL sorgusunun çalışmayacağını söylemeliyim. Aşağıdaki örnekteki tablo adlarını Mysql yapınıza göre değiştirmelisiniz.

$gelenpostlar='';
foreach ($_POST as $key => $value) {
$gelenpostlar=$gelenpostlar.' '.strtolower(htmlspecialchars($key)).' '.strtolower(htmlspecialchars($value));	
}
if (strstr($gelenpostlar,'union select')) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;
}

if (strstr($gelenpostlar,'_schema')) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;
}

if (strstr($gelenpostlar,'tablo_1')) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;
}
if (strstr($gelenpostlar,'tablo_2')) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;
}
if (strstr($gelenpostlar,'tablo_3')) {
header("location:http://www.beybut.com/hackerbey.jpg");
exit;
}

Her şey tamamsa artık GET veya POST Sql injection yöntemiyle hacklenemeyecek, verilerinizin değiştirilemeyeceği, silinemeyeceği bir web sitesine sahip oldunuz demektir.

Önemli noktalar:

  1. guvenlik.php her PHP dosyanızda (Sql içeren), en tepede include edilmeli.
  2. Tablo adlarınız mutlaka ilgili satırlarda bulunmalı.

 

PHP ile Neler Yapılabilir? Nasıl Para Kazanılır?

Php ile neler yapılabilir? PHP ile nasıl para kazanılır? Yirmi yıllık programcının gerçek deneyimlerini okuyun.

PHP Nedir? Nasıl Çalışır?

PHP (Hypertext Preprocessor) sunucu tarafından işletilen ve çıktısı kullanıcıya gösterilen bir betik programlama dilidir.

PHP’nin çalışması, kodlarınızın işletilerek ziyaretçilere bu sonucun çıktılarını gösterebilmek için öncelikle bir sunucuya ihtiyaç duyarız. Fiziksel bir makine (VPS/VDS veya dedicated) üzerinde bir işletim sistemi (Centos, Ubuntu, Windows vb.) bu işletim sisteminde Http isteklerini alıp işleyecek bir web sunucusu (Apache, Nginx, Litespeed vb.) ve bu web sunucusuyla ilişkili bir PHP sürümü bulunur. Eğer tüm bu gereklilikleri sağladıysanız PHP ile kodlamaya ve bu kodları dünyaya açmaya hazırsınız demektir.

Henüz acemiyseniz, bilgisayarınızda PHP kodlarını çalıştırmak için birkaç yazılım kullanabilir; daha sonra bir sunucu üzerinde çalışmaya başlayabilirsiniz. Wamp, Xampp gibi paket programlar, Apache, PHP ve Mysql sunucunuzu hızlıca hazır hale getirir. Kodlarınızı ise Dreamweaver, not defteri, Notepad++ gibi editörlerde yazabilirsiniz.

PHP <?php ile başlar ?> ile biter. Bu belirteçler arasına Php kodları yazılır. Örneğin <?php echo ‘Merhaba’; ?> sayfaya “Merhaba” yazdırır.

PHP ile Neler Yapılabilir?

Sunucu tarafından işlenip istemciye (ziyaretçinin tarayıcısına) kodların işletilmesi sonucu oluşan çıktıyı gönderen PHP ile yapabileceklerinize örnek verelim.

  • Ziyaretçi defteri
  • Forum veya blog yazılımı
  • Tam bir web sitesi
  • Çeşitli robotlar (botlar)
  • Test, soru-cevap uygulamaları

PHP ile oyun yazmak, interaktif uygulamar geliştirmek mümkün olsa da PHP’nin bu işler için doğru araç olmadığını söylemeliyim. Bir chat uygulaması için Ajax, bir oyun için Node.js, Javascript, Java, Html5 gibi dilleri ve eklentileri de işe dahil etmelisiniz. Yine de belirtmek gerekir ki, dünyanın en çok kullanılan programlama dillerinden biri olan Php ile harika ve güçlü web siteleri, botlar yazabilirsiniz.

PHP ile Nasıl Para Kazanılır?

Yazının bu kısmını, PHP’yi öğrendiğinizi, uygulamalar geliştirebildiğinizi varsayarak yazıyorum.

Site Yaparak Reklam Gelirleriyle

Kendi kodladığınız PHP site, eğer iç SEO uygulamalarına da dikkat ettiyseniz altın değerindedir. Doğru içerikler girerek Adsense, Yandex gibi reklam ağlarından büyük paralar kazanabilirsiniz. Özgün kodladığınız ve dilediğiniz gibi özelleştirebildiğiniz PHP siteniz sizi bir adım öne taşıyacaktır. Dilerseniz bu siteleri reklam gelirlerine göre fiyat biçerek, özel yazılımıyla satışa da çıkarabilirsiniz.

PHP Yazılımlarınızı Satarak

Eğer iyi bir programcıysanız, yeni ve insanların işine yarayacak yazılımlar yapabiliyorsanız; bu yazılımları Codecanyon gibi marketlerde pazarlayabilirsiniz. Hem satış hem destek aşamasında İngilizce bilmeniz gerektiğini hatırlatalım. Eğer Türk müşterilere satış yapmak istiyorsanız; Türkçe webmaster forumlarında konu açabilir; PHP yazılımınıza müşteri arayabilirsiniz.

Bu konuda başka bir fikir ise WordPress gibi popüler PHP yazılımlarına eklentiler yazmak olabilir. Kısıtlı sürüm eklentileriniz için “Pro” sürüm satışı yapabilirsiniz.

Freelance Çalışarak

Internet’te binlerce kişi web yazılımları için programcı arıyor. Bu konuda PHP iyi talep alıyor. R10 gibi kalabalık webmaster forumlarında firmalara veya kişilere ücret karşılığında hizmet edebilirsiniz. Türkiye’de yüzlerce Php programcısı bu şekilde çalışıyor.

Bir Firmada Yazılımcı Olarak

Yalnızca PHP bu konuda yeterli olmayabilir. Ama PHP’nin -özellikle web işiyle uğraşan firmalarda- olmazsa olmazlardan biri olduğunu söylemekte fayda var. PHP, Java, .NET, C++ gibi diller bilişim sektörünün başatları. PHP’nin yanına Mysql ve Java da ekleyerek gözde bir çalışan haline gelebilirsiniz.

Sonuç

PHP önemli ve başat bir programlama dili olsa da günümüzde birden çok dili bilip kullanmak, birden fazla alana hakim olmak gerekebiliyor. Örneğin PHP ile Mysql, site ve grafik tasarımı, JS, Html… heybenizde bulunması gerekenler. Yine de webin vazgeçilmezleri arasında, en azından önümüzdeki 10 yıl, PHP daima yerini koruyacak.

Php Yüzde Hesaplama

Php ile yüzde hesaplama oldukça kolay bir işlem. % almak için ilgili sayıyı yüzdesi alınacak sayıyla çarpıp 100’e bölmek yeterli. Çıkan küsüratlı sonucu da ceil, floor veya round ile yuvarlayabiliriz.

<?php
$sayimiz=28; // 28'in %8'ini alalım.
$sonuc= (28*8)/100; // 8'le çarpıp 100'e böldük.
echo $sonuc; //2.24 sonucuna ulaştık. Yani 28'in %8'i 2.24'müş.
?>

2.24’ün küsüratını yuvarlamak içinse aşağıdaki fonksiyonları kullanabilirsiniz.

<?php
$sayimiz=28; // 28'in %8'ini alalım.
$sonuc= (28*8)/100; // 8'le çarpıp 100'e böldük.
echo $sonuc.'<br>'; //2.24 sonucuna ulaştık. Yani 28'in %8'i 2.24'müş.
$yukariyuvarla=ceil($sonuc).'<br>'; // Yukarı yuvarladık. 3
$asagiyuvarla=floor($sonuc).'<br>'; // Aşağı yuvarladık. 2
$yakinyuvarla=round($sonuc); // 2.24 2.5'tan küçük olduğu için round fonksiyonu bu sayıyı 2 olarak yuvarlar.
echo $yukariyuvarla.$asagiyuvarla.$yakinyuvarla;
?>

Yuvarlama işlemi için ceil (yukarı), floor (aşağı), round (x.5’e göre yukarı veya aşağı) kullandık.

PHP ile binde alma işlemini de benzer biçimde yapabilirsiniz. Bunun için sayıyı “%0.8” örnek ifadesindeki 8’le çarpıp 1000’e bölmelisiniz. 28 örneği için şu şekilde:

<?php
$sayimiz=28; // 28'in %08'ini alalım.
$sonuc= (28*8)/1000; // 8'le çarpıp 1000'e böldük.
echo $sonuc.'<br>'; //0,224 sonucuna ulaştık. Yani 28'in %08'i 0,224'müş.
?>

 

Tüm Domain Uzantıları, Domain Whois Servers ve Yanıtlar

Domain uzantıları, domain whois serverları ve bu sunucuların boş domainler sorgulandığında verdikleri yanıtlar özellikle domain whois scripti ve programı yazanların işine yarayacaktır. Icaan’in yeni top level alan adı uzantılarını onaylamasıyla yüzlerce alan adı uzantısı tescile ve ön kayda açıldı. 2016 Ağustos için tüm domain uzantıları, genel tescile açık olan, açık olmayan; ön tescil kabul eden ve yürürlükteki hemen her alan adı uzantısı aşağıdaki listede bulunuyor. Kolaylık olması amacıyla uzantı|whois server|yanıt biçiminde hazırladım.

PHP Ajax Domain Sorgulama Scripti için de bu liste işinize yarayacaktır.

Listede, ~976 adet uzantı, sunucu, yanıt yer alıyor.

aarp|whois.nic.aarp|no match
abbott|whois.afilias-srs.net|not found
abbvie|whois.afilias-srs.net|not found
abogado|whois-dub.mm-registry.com|available
abudhabi|whois.nic.abudhabi|no match
ac|whois.nic.ac|available
academy|whois.donuts.co|Domain not found
accountant|whois.nic.accountant|available
accountants|whois.donuts.co|Domain not found.
aco|whois.afilias-srs.net|not found
active|whois.afilias-srs.net|not found
actor|whois.unitedtld.com|Domain not found.
ad|whois.ripe.net|no entries found
adac|whois.nic.adac|no match
ads|domain-registry-whois.l.google.com|Domain not found
adult|whois.afilias-srs.net|NOT FOUND
ae|whois-check.aeda.net.ae|available
aeg|whois.nic.aeg|no match
aero|whois.aero|not found
af|whois.nic.af|No Object Found
afl|whois.nic.afl|available
ag|whois.nic.ag|not found
agakhan|whois.afilias-srs.net|not found
agency|whois.donuts.co|Domain not found.
airbus|whois.nic.airbus|no match
airforce|whois.unitedtld.com|Domain not found.
airtel|whois.nic.airtel|no match
akdn|whois.afilias-srs.net|not found
allfinanz|whois.ksregistry.net|object does not exist
ally|whois.afilias-srs.net|not found
alsace|whois-alsace.nic.fr|object does not exist
alstom|whois.nic.alstom|no match
am|whois.amnic.net|no match
amsterdam|whois.nic.amsterdam|Status: free
android|domain-registry-whois.l.google.com|Domain not found.
anquan|whois.teleinfo.cn|no match
anz|whois.nic.anz|No Data Found
apartments|whois.donuts.co|Domain not found.
app|whois.nic.google|not found
apple|whois.afilias-srs.net|not found
aquarelle|whois-aquarelle.nic.fr|object does not exist
archi|whois.ksregistry.net|object does not exist
army|whois.rightside.co|not found
arpa|whois.iana.org|but this server does not have
art|whois.centralnic.com|not found
arte|whois.nic.arte|no match
as|whois.nic.as|not found
asia|whois.nic.asia|not found
associates|whois.donuts.co|Domain not found.
at|whois.nic.at|nothing found
attorney|whois.rightside.co|Domain not found.
au|whois.audns.net.au|no data found
auction|whois.donuts.co|Domain not found.
audi|whois.afilias-srs.net|not found
audio|whois.uniregistry.net|available
auto|whois.uniregistry.net|available
autos|whois.afilias-srs.net|not found
avianca|whois.afilias-srs.net|not found
aw|whois.nic.aw|is free
ax|whois.ax|No records matching
baidu|whois.ngtld.cn|no match
band|whois.rightside.co|Domain not found.
bank|whois.nic.bank|no match
barcelona|whois.nic.barcelona|no match
barclaycard|whois.nic.barclaycard|No Data Found
barclays|whois.nic.barclays|No Data Found
barefoot|whois.nic.barefoot|no match
bargains|whois.donuts.co|Domain not found.
bauhaus|whois.nic.bauhaus|no match
bayern|whois-dub.mm-registry.com|object does not exist
bbc|whois.nic.bbc|available
bbva|whois.nic.bbva|no match
bcg|whois.afilias-srs.net|not found
bcn|whois.nic.bcn|no match
be|whois.dns.be|available
beats|whois.afilias-srs.net|not found
beer|whois-dub.mm-registry.com|available
bentley|whois.nic.bentley|available
berlin|whois.nic.berlin|object does not exist
best|whois.nic.best|available
bet|whois.afilias.net|not found
bg|whois.register.bg|does not exist in database
bi|whois1.nic.bi|Domain Status: No Object Found
bid|whois.nic.bid|available
bike|whois.donuts.co|Domain not found
bingo|whois.donuts.co|Domain not found.
bio|whois.ksregistry.net|object does not exist
biz|whois.biz|not found
bj|whois.nic.bj|No Object Found
black|whois.afilias.net|NOT FOUND
blackfriday|whois.uniregistry.net|available
blanco|whois.nic.blanco|no match
blog|whois.nic.blog|available
blue|whois.afilias.net|NOT FOUND
bms|whois.nic.bms|no match
bmw|whois.ksregistry.net|object does not exist
bn|whois.bnnic.bn|not found
bnl|whois.afilias-srs.net|not found
bnpparibas|whois.afilias-srs.net|NOT FOUND
boats|whois.afilias-srs.net|not found
boehringer|whois.afilias-srs.net|not found
bom|whois.gtlds.nic.br|object does not exist
bond|whois.nic.bond|no match
boo|domain-registry-whois.l.google.com|Domain not found.
boots|whois.nic.boots|available
bosch|whois.nic.bosch|no match
bostik|whois-bostik.nic.fr|object does not exist
boutique|whois.donuts.co|Domain not found.
br|whois.nic.br|no match for
bradesco|whois-cl01.mm-registry.com|available
bridgestone|whois.nic.bridgestone|No Data Found
broadway|whois-cl01.mm-registry.com|available
broker|whois.nic.broker|no match
brother|whois.nic.brother|not found
brussels|whois.nic.brussels|available
budapest|whois-dub.mm-registry.com|object does not exist
bugatti|whois.afilias-srs.net|not found
build|whois.nic.build|No Data Found
builders|whois.donuts.co|Domain not found
business|whois.donuts.co|Domain not found.
buy|whois.afilias-srs.net|not found
buzz|whois.nic.buzz|available
bw|whois.nic.net.bw|No Object Found
by|whois.cctld.by|object does not exist
bz|whois.afilias-grs.info|not found
bzh|whois-bzh.nic.fr|object does not exist
ca|whois.cira.ca|Domain status: available
cab|whois.donuts.co|Domain not found
cafe|whois.donuts.co|not found
cal|domain-registry-whois.l.google.com|Domain not found.
cam|whois.ksregistry.net|object does not exist
camera|whois.donuts.co|Domain not found
camp|whois.donuts.co|Domain not found
cancerresearch|whois.nic.cancerresearch|No Data Found
canon|whois.nic.canon|not found
capetown|capetown-whois.registry.net.za|available
capital|whois.donuts.co|Domain not found.
car|whois.uniregistry.net|available
cards|whois.donuts.co|Domain not found.
care|whois.donuts.co|Domain not found.
career|whois.nic.career|no match for
careers|whois.donuts.co|Domain not found
cars|whois.uniregistry.net|available
casa|whois-dub.mm-registry.com|available
cash|whois.donuts.co|Domain not found.
casino|whois.donuts.co|Domain not found.
cat|whois.cat|no match
catering|whois.donuts.co|Domain not found.
cba|whois.nic.cba|No Data Found
cc|ccwhois.verisign-grs.com|no match for
cd|whois.nic.cd|No Object Found
ceb|whois.afilias-srs.net|not found
center|whois.donuts.co|Domain not found
ceo|whois.nic.ceo|not found
cern|whois.afilias-srs.net|NOT FOUND
cf|whois.dot.cf|not known
cfa|whois.nic.cfa|no match
cfd|whois.nic.cfd|no match
ch|whois.nic.ch|not have an entry
chanel|whois.nic.chanel|no match
channel|domain-registry-whois.l.google.com|Domain not found.
chat|whois.donuts.co|Domain not found.
cheap|whois.donuts.co|Domain not found.
chintai|whois.nic.chintai|available
christmas|whois.uniregistry.net|available
chrome|domain-registry-whois.l.google.com|Domain not found.
church|whois.donuts.co|Domain not found.
ci|whois.nic.ci|No Object Found
cipriani|whois.afilias-srs.net|not found
city|whois.donuts.co|Domain not found.
cityeats|whois.nic.cityeats|no match
cl|whois.nic.cl|no existe
claims|whois.donuts.co|Domain not found.
cleaning|whois.donuts.co|Domain not found.
click|whois.uniregistry.net|available
clinic|whois.donuts.co|Domain not found.
clinique|whois.afilias-srs.net|not found
clothing|whois.donuts.co|Domain not found
cloud|whois.nic.cloud|available
club|whois.nic.club|available
clubmed|whois.nic.clubmed|no match
cm|whois.netcom.cm|No Object Found
cn|whois.cnnic.cn|no match
co|whois.nic.co|not found
coach|whois.donuts.co|Domain not found.
codes|whois.donuts.co|Domain not found.
coffee|whois.donuts.co|Domain not found
college|whois.centralnic.com|not found
cologne|whois-fe1.pdt.cologne.tango.knipp.de|no match
com|whois.crsnic.net|no match for
commbank|whois.nic.commbank|No Data Found
community|whois.donuts.co|Domain not found.
company|whois.donuts.co|Domain not found
compare|whois.nic.compare|available
computer|whois.donuts.co|Domain not found
comsec|whois.nic.comsec|no match
condos|whois.donuts.co|Domain not found.
construction|whois.donuts.co|Domain not found
consulting|whois.unitedtld.com|Domain not found.
contractors|whois.donuts.co|Domain not found
cooking|whois-dub.mm-registry.com|available
cookingchannel|whois.nic.cookingchannel|no match
cool|whois.donuts.co|Domain not found.
corsica|whois-corsica.nic.fr|object does not exist
country|whois-dub.mm-registry.com|available
coupons|whois.donuts.co|not found
courses|whois.aridnrs.net.au|No Data Found
cr|whois.nic.cr|available
credit|whois.donuts.co|Domain not found.
creditcard|whois.donuts.co|Domain not found.
creditunion|whois.afilias-srs.net|not found
cricket|whois.nic.cricket|available
cruises|whois.donuts.co|Domain not found.
csc|whois.nic.csc|no match
cuisinella|whois.nic.cuisinella|No Data Found
cx|whois.nic.cx|No Object Found
cymru|whois.nic.cymru|available
cz|whois.nic.cz|no entries found
dabur|whois.afilias-srs.net|not found
dad|domain-registry-whois.l.google.com|Domain not found.
dance|whois.unitedtld.com|Domain not found.
date|whois.nic.date|available
dating|whois.donuts.co|Domain not found.
datsun|whois.nic.gmo|not found
day|domain-registry-whois.l.google.com|Domain not found.
dclk|domain-registry-whois.l.google.com|not found
dds|whois-dub.mm-registry.com|available
de|whois.denic.de|Status: free
deals|whois.donuts.co|Domain not found.
degree|whois.rightside.co|Domain not found.
delivery|whois.donuts.co|Domain not found.
deloitte|whois.nic.deloitte|no match
democrat|whois.unitedtld.com|Domain not found.
dental|whois.donuts.co|Domain not found.
dentist|whois.rightside.co|Domain not found.
desi|whois.ksregistry.net|object does not exist
design|whois.nic.design|not found
dev|domain-registry-whois.l.google.com|Domain not found.
diamonds|whois.donuts.co|Domain not found
diet|whois.uniregistry.net|available
digital|whois.donuts.co|Domain not found.
direct|whois.donuts.co|Domain not found.
directory|whois.donuts.co|Domain not found
discount|whois.donuts.co|Domain not found.
dk|whois.dk-hostmaster.dk|no entries found
dm|whois.nic.dm|not found
docs|domain-registry-whois.l.google.com|Domain not found.
dog|whois.donuts.co|not found
doha|whois.nic.doha|available
domains|whois.donuts.co|Domain not found
doosan|whois.nic.xn--cg4bki|no match
dot|whois.afilias-srs.net|not found
download|whois.nic.download|available
drive|whois.nic.google|not found
dtv|whois.afilias-srs.net|not found
dubai|whois.nic.dubai|no match
dunlop|whois.afilias-srs.net|not found
durban|durban-whois.registry.net.za|available
dvag|whois.ksregistry.net|object does not exist
dz|whois.nic.dz|NO OBJECT FOUND!
eat|domain-registry-whois.l.google.com|Domain not found.
ec|whois.nic.ec|not registered
edeka|whois.afilias-srs.net|not found
edu|whois.educause.edu|no match
education|whois.donuts.co|Domain not found
ee|whois.eenet.ee|not found
email|whois.donuts.co|Domain not found
emerck|whois.afilias-srs.net|NOT FOUND
energy|whois.donuts.co|Domain not found.
engineer|whois.rightside.co|not found
engineering|whois.donuts.co|Domain not found.
enterprises|whois.donuts.co|Domain not found
epson|whois.aridnrs.net.au|No Data Found
equipment|whois.donuts.co|Domain not found
ericsson|whois.nic.ericsson|no match
erni|whois.nic.erni|no match
esq|domain-registry-whois.l.google.com|Domain not found.
estate|whois.donuts.co|Domain not found
eu|whois.eu|Status: available
eurovision|whois.nic.eurovision|no match
eus|whois.eus.coreregistry.net|no match
events|whois.donuts.co|Domain not found.
everbank|whois.nic.everbank|object does not exist
exchange|whois.donuts.co|Domain not found.
expert|whois.donuts.co|Domain not found
exposed|whois.donuts.co|Domain not found
express|whois.donuts.co|not found
extraspace|whois.afilias-srs.net|not found
fage|whois.afilias-srs.net|not found
fail|whois.donuts.co|Domain not found.
fairwinds|whois.nic.fairwinds|no match
faith|whois.nic.faith|available
family|whois.rightside.co|not found
fan|whois.nic.fan|not found
fans|whois.nic.fans|not found
farm|whois.donuts.co|Domain not found
fashion|whois-dub.mm-registry.com|available
fedex|whois.afilias-srs.net|not found
feedback|whois.centralnic.com|not found
fi|whois.fi|not found
film|whois.nic.film|no match
final|whois.gtlds.nic.br|object does not exist
finance|whois.donuts.co|Domain not found.
financial|whois.donuts.co|Domain not found.
firestone|whois.nic.firestone|available
firmdale|whois.nic.firmdale|not found
fish|whois.donuts.co|Domain not found.
fishing|whois-dub.mm-registry.com|available
fit|whois-dub.mm-registry.com|available
fitness|whois.donuts.co|Domain not found.
fj|whois.usp.ac.fj|not found
flights|whois.donuts.co|Domain not found
florist|whois.donuts.co|Domain not found
flowers|whois.uniregistry.net|available
flsmidth|whois.ksregistry.net|object does not exist
fly|domain-registry-whois.l.google.com|Domain not found.
fm|whois.nic.fm|Not Registered
fo|whois.nic.fo|no entries found
foo|domain-registry-whois.l.google.com|Domain not found.
foodnetwork|whois.nic.foodnetwork|no match
football|whois.donuts.co|Domain not found.
forex|whois.nic.forex|no match
forsale|whois.unitedtld.com|Domain not found.
forum|whois.nic.forum|not found
foundation|whois.donuts.co|Domain not found.
fr|whois.nic.fr|no entries found
fresenius|whois.ksregistry.net|object does not exist
frl|whois.nic.frl|no match for
frogans|whois-frogans.nic.fr|object does not exist
frontdoor|whois.nic.frontdoor|no match
fund|whois.donuts.co|Domain not found.
furniture|whois.donuts.co|Domain not found.
futbol|whois.unitedtld.com|not found
fyi|whois.donuts.co|not found
gal|whois.gal.coreregistry.net|no match
gallery|whois.donuts.co|Domain not found
gallo|whois.nic.gallo|no match
gallup|whois.afilias-srs.net|not found
game|whois.uniregistry.net|available
games|whois.rightside.co|not found
garden|whois-dub.mm-registry.com|available
gbiz|domain-registry-whois.l.google.com|Domain not found.
gd|whois.nic.gd|not found
gdn|whois.nic.gdn|not found
gea|whois.afilias-srs.net|not found
gent|whois.nic.gent|no match for
genting|whois.nic.genting|no match
gg|whois.channelisles.net|not found
ggee|whois.nic.ggee|not found
gi|whois.afilias-grs.info|not found
gift|whois.uniregistry.net|available
gifts|whois.donuts.co|Domain not found.
gives|whois.rightside.co|Domain not found.
giving|whois.nic.giving|No Data Found
gl|whois.nic.gl|No Object Found
glass|whois.donuts.co|Domain not found
gle|domain-registry-whois.l.google.com|Domain not found.
global|whois.afilias-srs.net|not found
globo|whois.gtlds.nic.br|object does not exist
gmail|domain-registry-whois.l.google.com|Domain not found.
gmbh|whois.donuts.co|not found
gmx|whois-fe1.gmx.tango.knipp.de|no match
gold|whois.donuts.co|not found
goldpoint|whois.nic.goldpoint|not found
golf|whois.donuts.co|not found
goo|whois.nic.gmo|not found
goodyear|whois.afilias-srs.net|not found
goog|domain-registry-whois.l.google.com|Domain not found.
google|domain-registry-whois.l.google.com|Domain not found.
gop|whois-cl01.mm-registry.com|available
gov|whois.dotgov.gov|no match for
gq|whois.dominio.gq|not known
gr|whois.ripe.net|no entries found
graphics|whois.donuts.co|Domain not found
gratis|whois.donuts.co|Domain not found.
green|whois.afilias.net|NOT FOUND
gripe|whois.donuts.co|Domain not found.
group|whois.donuts.co|not found
gs|whois.adamsnames.tc|No Object Found
guge|domain-registry-whois.l.google.com|not found
guide|whois.donuts.co|Domain not found.
guitars|whois.uniregistry.net|available
guru|whois.donuts.co|Domain not found
gy|whois.registry.gy|Domain Status: No Object Found
hamburg|whois.nic.hamburg|object does not exist
hangout|domain-registry-whois.l.google.com|Domain not found.
haus|whois.unitedtld.com|not found
hdfcbank|whois.afilias-srs.net|not found
healthcare|whois.donuts.co|Domain not found.
help|whois.uniregistry.net|available
helsinki|whois.afilias-srs.net|not found
here|domain-registry-whois.l.google.com|Domain not found.
hermes|whois.afilias-srs.net|not found
hgtv|whois.nic.hgtv|no match
hiphop|whois.uniregistry.net|available
hisamitsu|whois.nic.gmo|not found
hitachi|whois.nic.gmo|not found
hiv|whois.afilias-srs.net|NOT FOUND
hk|whois.hkirc.hk|The domain has not been registered
hkt|whois.afilias-srs.net|not found
hm|whois.registry.hm|not found
hn|whois.nic.hn|No Object Found
hockey|whois.donuts.co|not found
holdings|whois.donuts.co|Domain not found
holiday|whois.donuts.co|Domain not found
homedepot|whois.afilias-srs.net|not found
homes|whois.afilias-srs.net|not found
honda|whois.nic.honda|not found
horse|whois-dub.mm-registry.com|available
host|whois.centralnic.com|not found
hosting|whois.uniregistry.net|available
house|whois.donuts.co|Domain not found
how|domain-registry-whois.l.google.com|Domain not found.
hr|whois.dns.hr|no entries found
ht|whois.nic.ht|No Object Found
hu|whois.nic.hu|no match
hyundai|whois.nic.hyundai|not found
ibm|whois.nic.ibm|No Data Found
ice|whois.nic.ice|no match
id|whois.pandi.or.id|not found
ie|whois.domainregistry.ie|not registered
ifm|whois.nic.ifm|no match
iinet|whois.aridnrs.net.au|available
ikano|whois.ikano.tld-box.at|object does not exist
il|whois.isoc.org.il|no data was found
im|whois.nic.im|not found
imamat|whois.afilias-srs.net|not found
immo|whois.donuts.co|Domain not found.
immobilien|whois.unitedtld.com|Domain not found.
in|whois.inregistry.in|NOT FOUND
industries|whois.donuts.co|Domain not found.
infiniti|whois.nic.gmo|not found
info|whois.afilias.info|not found
ing|domain-registry-whois.l.google.com|Domain not found.
ink|whois.centralnic.com|not found
institute|whois.donuts.co|Domain not found
insurance|whois.nic.insurance|no match
insure|whois.donuts.co|Domain not found.
int|whois.iana.org|but this server does not have
international|whois.donuts.co|Domain not found
investments|whois.donuts.co|Domain not found.
io|whois.nic.io|available
iq|whois.cmc.iq|No Object Found
ir|whois.nic.ir|no entries found
irish|whois.afilias-srs.net|not found
is|whois.isnic.is|no entries found
iselect|whois.nic.iselect|available
ismaili|whois.afilias-srs.net|not found
ist|whois.afilias-srs.net|not found
istanbul|whois.afilias-srs.net|not found
it|whois.nic.it|available
itv|whois.afilias-srs.net|not found
jaguar|whois.nic.jaguar|no match
java|whois.nic.java|no match
jcb|whois.nic.gmo|not found
jcp|whois.afilias-srs.net|not found
je|whois.channelisles.net|not found
jetzt|whois.nic.jetzt|not found
jewelry|whois.donuts.co|not found
jll|whois.afilias-srs.net|not found
jobs|whois.nic.jobs|no match
joburg|joburg-whois.registry.net.za|available
jp|whois.jprs.jp|no match
juegos|whois.uniregistry.net|available
kaufen|whois.unitedtld.com|not found
kddi|whois.nic.kddi|not found
ke|whois.kenic.or.ke|No Object Found
kerryhotels|whois.nic.kerryhotels|no match
kerrylogistics|whois.nic.kerrylogistics|no match
kerryproperties|whois.nic.kerryproperties|no match
ki|whois.nic.ki|No Object Found
kia|whois.nic.kia|not found
kim|whois.afilias.net|NOT FOUND
kitchen|whois.donuts.co|Domain not found
kiwi|whois.dot-kiwi.com|available
kn|whois.nic.kn|No Object Found
koeln|whois-fe1.pdt.koeln.tango.knipp.de|no match
komatsu|whois.nic.komatsu|not found
kosher|whois.afilias-srs.net|not found
kr|whois.kr|not found
krd|whois.aridnrs.net.au|No Data Found
kred|whois.nic.kred|available
kuokgroup|whois.nic.kuokgroup|no match
ky|whois.kyregistry.ky|available
kyoto|whois.nic.kyoto|not found
kz|whois.nic.kz|nothing found
la|whois.nic.la|not found
lacaixa|whois.nic.lacaixa|no match
lamborghini|whois.afilias-srs.net|not found
lamer|whois.afilias-srs.net|not found
lancaster|whois-lancaster.nic.fr|object does not exist
land|whois.donuts.co|Domain not found
landrover|whois.nic.landrover|no match
lasalle|whois.afilias-srs.net|not found
lat|whois.nic.lat|no existe
latrobe|whois.nic.latrobe|No Data Found
law|whois-dub.mm-registry.com|available
lawyer|whois.rightside.co|Domain not found.
lc|whois.afilias-grs.info|not found
lease|whois.donuts.co|Domain not found.
leclerc|whois-leclerc.nic.fr|object does not exist
legal|whois.donuts.co|Domain not found.
lego|whois.nic.lego|no match
lexus|whois.nic.lexus|not found
lgbt|whois.afilias.net|NOT FOUND
li|whois.nic.li|not have an entry
liaison|whois.nic.liaison|no match
lidl|whois.nic.lidl|available
life|whois.donuts.co|Domain not found.
lifestyle|whois.nic.lifestyle|no match
lighting|whois.donuts.co|Domain not found
limited|whois.donuts.co|Domain not found.
limo|whois.donuts.co|Domain not found
linde|whois.nic.linde|no match
link|whois.uniregistry.net|available
lipsy|whois.nic.lipsy|no match
live|whois.rightside.co|not found
lixil|whois.nic.lixil|not found
loan|whois.nic.loan|available
loans|whois.donuts.co|Domain not found.
locker|whois.afilias-srs.net|not found
locus|whois.nic.locus|available
lol|whois.uniregistry.net|available
london|whois-lon.mm-registry.com|available
lotte|whois.nic.lotte|not found
lotto|whois.afilias.net|not found
love|whois.centralnic.com|not found
lt|whois.domreg.lt|available
ltd|whois.donuts.co|not found
ltda|whois.afilias-srs.net|not found
lu|whois.dns.lu|% no such domain
luxe|whois-dub.mm-registry.com|available
luxury|whois.donuts.co|available
lv|whois.nic.lv|Status: free
ly|whois.nic.ly|Not found
ma|whois.iam.net.ma|No Object Found
madrid|whois.madrid.rs.corenic.net|no match
maison|whois.donuts.co|Domain not found
makeup|whois.nic.makeup|no match
man|whois.nic.man|no match
management|whois.donuts.co|Domain not found
mango|whois.mango.coreregistry.net|no match
market|whois.rightside.co|Domain not found.
marketing|whois.donuts.co|Domain not found
markets|whois.nic.markets|no match
marriott|whois.afilias-srs.net|not found
mba|whois.donuts.co|not found
me|whois.nic.me|not found
med|whois.nic.med|no match
media|whois.donuts.co|Domain not found.
meet|whois.afilias.net|not found
melbourne|whois.aridnrs.net.au|No Data Found
meme|domain-registry-whois.l.google.com|Domain not found.
memorial|whois.donuts.co|Domain not found.
men|whois.nic.men|available
menu|whois.nic.menu|No Data Found
metlife|whois.afilias-srs.net|not found
mg|whois.nic.mg|No Object Found
miami|whois-dub.mm-registry.com|available
mil|whois.internic.net|no match for
mini|whois.ksregistry.net|object does not exist
mk|whois.marnet.mk|% No entries found.
ml|whois.dot.ml|not known
mls|whois.nic.mls|no match
mn|whois.afilias-grs.info|NOT FOUND
mo|whois.monic.mo|no match for
mobi|whois.dotmobiregistry.net|not found
moda|whois.unitedtld.com|Domain not found.
moe|whois.nic.moe|available
mom|whois.uniregistry.net|available
monash|whois.nic.monash|No Data Found
money|whois.donuts.co|Domain not found.
mortgage|whois.rightside.co|Domain not found.
moscow|whois.nic.moscow|not found
motorcycles|whois.afilias-srs.net|not found
mov|domain-registry-whois.l.google.com|Domain not found.
movie|whois.donuts.co|not found
movistar|whois-fe.movistar.tango.knipp.de|no match
ms|whois.adamsnames.tc|No Object Found
mtn|whois.nic.mtn|available
mtpc|whois.nic.gmo|not found
mtr|whois.nic.mtr|The domain has not been registered
mu|whois.nic.mu|No Object Found
museum|whois.museum|not found
mutuelle|whois-mutuelle.nic.fr|object does not exist
mx|whois.mx|Object_Not_Found
mz|whois.nic.mz|No Object Found
na|whois.na-nic.com.na|No Object Found
nadex|whois.nic.nadex|no match
nagoya|whois.gmoregistry.net|not found
name|whois.nic.name|no match
natura|whois.afilias-srs.net|not found
navy|whois.rightside.co|Domain not found.
nc|whois.nc|no entries found
nec|whois.nic.nec|not found
net|whois.crsnic.net|no match for
netbank|whois.nic.netbank|No Data Found
network|whois.donuts.co|Domain not found.
new|domain-registry-whois.l.google.com|Domain not found.
news|whois.rightside.co|not found
next|whois.nic.next|no match
nextdirect|whois.nic.nextdirect|no match
nexus|domain-registry-whois.l.google.com|Domain not found.
nf|whois.nic.nf|No Object Found
ng|whois.nic.net.ng|No Object Found
ngo|whois.publicinterestregistry.net|NOT FOUND
nico|whois.nic.nico|not found
nikon|whois.nic.nikon|no match
ninja|whois.donuts.co|not found
nissan|whois.nic.gmo|not found
nissay|whois.nic.nissay|no match
nl|whois.domain-registry.nl|is free
no|whois.norid.no|no match
nokia|whois.afilias-srs.net|not found
norton|whois.nic.norton|no match
nowruz|whois.agitsys.net|No Object Found
nowtv|whois.afilias-srs.net|not found
nra|whois.afilias-srs.net|NOT FOUND
nrw|whois.nic.nrw|no match
nu|whois.iis.nu|not found
nyc|whois.nic.nyc|object does not exist
nz|whois.srs.net.nz|220 Available
obi|whois.nic.obi|no match
olayan|whois.nic.olayan|available
olayangroup|whois.nic.olayangroup|available
ollo|whois.afilias-srs.net|not found
om|whois.registry.om|no data found
omega|whois.nic.omega|no match
one|whois.nic.one|No Data Found
ong|whois.publicinterestregistry.net|NOT FOUND
onl|whois.afilias-srs.net|NOT FOUND
online|whois.centralnic.com|not found
ooo|whois.nic.ooo|no match for
oracle|whois.nic.oracle|no match
orange|whois.nic.orange|no match
org|whois.pir.org|not found
organic|whois.afilias-srs.net|NOT FOUND
orientexpress|whois.afilias-srs.net|not found
origins|whois.afilias-srs.net|not found
osaka|whois.nic.osaka|available
ott|whois.afilias-srs.net|not found
ovh|whois-ovh.nic.fr|object does not exist
page|domain-registry-whois.l.google.com|not found
paris|whois-paris.nic.fr|object does not exist
pars|whois.agitsys.net|No Object Found
partners|whois.donuts.co|Domain not found.
parts|whois.donuts.co|Domain not found.
party|whois.nic.party|available
pccw|whois.afilias-srs.net|not found
pe|kero.yachay.pe|No Object Found
pet|whois.afilias.net|not found
pf|whois.registry.pf|Domain unknown
philips|whois.nic.philips|available
photo|whois.uniregistry.net|available
photography|whois.donuts.co|Domain not found
photos|whois.donuts.co|Domain not found
physio|whois.nic.physio|No Data Found
pics|whois.uniregistry.net|available
pictures|whois.donuts.co|Domain not found.
pid|whois.nic.pid|not found
pink|whois.afilias.net|not found
pioneer|whois.nic.gmo|not found
pizza|whois.donuts.co|Domain not found.
pl|whois.dns.pl|No information available
place|whois.donuts.co|Domain not found.
play|whois.nic.google|not found
playstation|whois.nic.playstation|available
plumbing|whois.donuts.co|Domain not found
plus|whois.donuts.co|not found
pm|whois.nic.fr|no entries found
pnc|whois.afilias-srs.net|not found
pohl|whois.ksregistry.net|object does not exist
poker|whois.afilias.net|NOT FOUND
politie|whois.nic.politie|Status: free
porn|whois.afilias-srs.net|not found
post|whois.dotpostregistry.net|not found
pr|whois.nic.pr|is not registered
press|whois.centralnic.com|not found
pro|whois.afilias.net|not found
prod|domain-registry-whois.l.google.com|Domain not found.
productions|whois.donuts.co|Domain not found.
prof|domain-registry-whois.l.google.com|Domain not found.
progressive|whois.afilias-srs.net|not found
promo|whois.afilias.net|not found
properties|whois.donuts.co|Domain not found.
property|whois.uniregistry.net|available
protection|whois.centralnic.com|not found
ps|whois.pnina.ps|No Object Found
pt|whois.dns.pt|no match
pub|whois.unitedtld.com|not found
pwc|whois.afilias-srs.net|not found
qa|whois.registry.qa|no data found
qpon|whois.nic.qpon|available
quebec|whois.nic.quebec|no match
quest|whois.nic.quest|available
racing|whois.nic.racing|available
re|whois.nic.fr|no entries found
realestate|whois.nic.realestate|no match
realty|whois.nic.realty|not found
recipes|whois.donuts.co|Domain not found
red|whois.afilias.net|NOT FOUND
redstone|whois.afilias-srs.net|not found
redumbrella|whois.afilias-srs.net|not found
rehab|whois.rightside.co|Domain not found.
reise|whois.nic.reise|not found
reisen|whois.donuts.co|Domain not found.
reit|whois.nic.reit|not found
rentals|whois.donuts.co|Domain not found.
repair|whois.donuts.co|Domain not found
report|whois.donuts.co|Domain not found.
republican|whois.rightside.co|Domain not found.
rest|whois.centralnic.com|not found
restaurant|whois.donuts.co|Domain not found.
review|whois.nic.review|available
reviews|whois.unitedtld.com|Domain not found.
rexroth|whois.nic.rexroth|no match
rich|whois.afilias-srs.net|NOT FOUND
richardli|whois.afilias-srs.net|not found
ricoh|whois.nic.ricoh|not found
rio|whois.gtlds.nic.br|object does not exist
rip|whois.rightside.co|Domain not found.
ro|whois.rotld.ro|no entries found
rocks|whois.unitedtld.com|Domain not found.
rodeo|whois-dub.mm-registry.com|available
rs|whois.rnids.rs|is not registered
rsvp|domain-registry-whois.l.google.com|Domain not found.
ru|whois.ripn.net|No entries found
ruhr|whois.nic.ruhr|no match
run|whois.donuts.co|not found
rw|whois.ricta.org.rw|No Object Found
rwe|whois.nic.rwe|no match
sa|whois.nic.net.sa|No Match
saarland|whois.ksregistry.net|object does not exist
sale|whois.rightside.co|not found
salon|whois.donuts.co|not found
samsung|whois.nic.samsung|no match
sandvik|whois.nic.sandvik|available
sandvikcoromant|whois.nic.sandvikcoromant|available
sanofi|whois.nic.sanofi|no match
sap|whois.nic.sap|no match
sarl|whois.donuts.co|Domain not found.
saxo|whois.aridnrs.net.au|No Data Found
sb|whois.nic.net.sb|No Object Found
sbi|whois.afilias-srs.net|not found
sbs|whois.nic.sbs|no match
sc|whois.afilias-grs.info|not found
sca|whois.nic.sca|no match for
scb|whois.nic.scb|not found
schaeffler|whois.afilias-srs.net|not found
schmidt|whois.nic.schmidt|No Data Found
school|whois.donuts.co|Domain not found.
schule|whois.donuts.co|Domain not found.
schwarz|whois.nic.schwarz|available
science|whois.nic.science|available
scor|whois.nic.scor|No Data Found
scot|whois.scot.coreregistry.net|no match
se|whois.iis.se|not found
seat|whois.nic.seat|no match
seek|whois.nic.seek|available
select|whois.nic.select|available
services|whois.donuts.co|Domain not found.
seven|whois.nic.seven|available
sew|whois.afilias-srs.net|not found
sex|whois.afilias-srs.net|not found
sexy|whois.uniregistry.net|available
sfr|whois.nic.sfr|no match
sg|whois.nic.net.sg|not found
sh|whois.nic.sh|is available for purchase
shangrila|whois.nic.shangrila|no match
sharp|whois.nic.gmo|not found
shaw|whois.afilias-srs.net|not found
shell|whois.nic.shell|no match
shia|whois.agitsys.net|No Object Found
shiksha|whois.afilias.net|NOT FOUND
shoes|whois.donuts.co|Domain not found
shopping|whois.donuts.co|not found
shouji|whois.teleinfo.cn|no match
show|whois.donuts.co|not found
shriram|whois.afilias-srs.net|not found
si|whois.arnes.si|no entries found
sina|whois.afilias-srs.net|not found
singles|whois.donuts.co|Domain not found
sk|whois.ripe.net|no entries found
ski|whois.ksregistry.net|object does not exist
skin|whois.nic.skin|no match
sky|whois.nic.sky|no match
sl|whois.nic.sl|No Object Found
sm|whois.nic.sm|No entries found
sn|whois.nic.sn|NOT FOUND
sncf|whois-sncf.nic.fr|object does not exist
so|whois.nic.so|not found
soccer|whois.donuts.co|not found
social|whois.unitedtld.com|Domain not found.
softbank|whois.nic.softbank|not found
software|whois.rightside.co|Domain not found.
sohu|whois.gtld.knet.cn|object does not exist
solar|whois.donuts.co|Domain not found
solutions|whois.donuts.co|Domain not found
sony|whois.nic.sony|No Data Found
soy|domain-registry-whois.l.google.com|Domain not found.
space|whois.nic.space|not found
spiegel|whois.ksregistry.net|object does not exist
spreadbetting|whois.nic.spreadbetting|no match
srl|whois.afilias-srs.net|not found
st|whois.nic.st|no entries found
stada|whois.afilias-srs.net|not found
star|whois.afilias-srs.net|not found
starhub|whois.nic.starhub|available
statebank|whois.afilias-srs.net|not found
statoil|whois.nic.statoil|no match
stc|whois.centralnic.com|not found
stockholm|whois.afilias-srs.net|not found
storage|whois.afilias-srs.net|not found
store|whois.nic.store|not found
studio|whois.rightside.co|not found
study|whois.nic.study|No Data Found
style|whois.donuts.co|Domain not found.
su|whois.ripn.net|No entries found
sucks|whois.nic.sucks|No Data Found
supplies|whois.donuts.co|Domain not found.
supply|whois.donuts.co|Domain not found.
support|whois.donuts.co|Domain not found
surf|whois-dub.mm-registry.com|available
surgery|whois.donuts.co|Domain not found.
swatch|whois.nic.swatch|no match
swiss|whois.nic.swiss|no match
sx|whois.sx|no match for
sy|whois.tld.sy|No Object Found
sydney|whois.nic.sydney|No Data Found
symantec|whois.nic.symantec|no match
systems|whois.donuts.co|Domain not found
tab|whois.nic.tab|available
taipei|whois.nic.taipei|object does not exist
tatamotors|whois.nic.tatamotors|no match
tatar|whois.nic.tatar|object does not exist
tattoo|whois.uniregistry.net|available
tax|whois.donuts.co|Domain not found.
taxi|whois.donuts.co|not found
tc|whois.adamsnames.tc|No Object Found
tci|whois.agitsys.net|No Object Found
tdk|whois.nic.tdk|available
team|whois.donuts.co|not found
tech|whois.nic.tech|not found
technology|whois.donuts.co|Domain not found
tel|whois.nic.tel|not found
telecity|whois.nic.telecity|available
telefonica|whois-fe.telefonica.tango.knipp.de|no match
temasek|whois.afilias-srs.net|not found
tennis|whois.donuts.co|Domain not found.
teva|whois.nic.teva|available
tf|whois.adamsnames.tc|no entries found
tg|whois.nic.tg|No Object Found
th|whois.thnic.co.th|no match for
theater|whois.donuts.co|not found
theatre|whois.nic.theatre|not found
tickets|whois.nic.tickets|not found
tienda|whois.donuts.co|Domain not found.
tiffany|whois.nic.tiffany|no match
tiffay|whois.nic.tiffany|no match
tips|whois.donuts.co|Domain not found
tires|whois.donuts.co|Domain not found.
tirol|whois.nic.tirol|object does not exist
tk|whois.dot.tk|not known
tl|whois.nic.tl|No Object Found
tm|whois.nic.tm|is available
to|monarch.tonic.to|no match for
today|whois.donuts.co|Domain not found
tokyo|whois.nic.tokyo|not found
tools|whois.donuts.co|Domain not found.
top|whois.nic.top|object does not exist
toray|whois.nic.toray|not found
toshiba|whois.nic.toshiba|not found
total|whois-total.nic.fr|object does not exist
tours|whois.donuts.co|not found
town|whois.donuts.co|Domain not found.
toyota|whois.nic.toyota|not found
toys|whois.donuts.co|Domain not found.
trade|whois.nic.trade|object does not exist
trading|whois.nic.trading|no match
training|whois.donuts.co|Domain not found
travel|whois.nic.travel|not found
travelchannel|whois.nic.travelchannel|no match
travelers|whois.afilias-srs.net|not found
travelersinsurance|whois.afilias-srs.net|not found
trust|whois.nic.trust|No Data Found
trv|whois.afilias-srs.net|not found
tui|whois.ksregistry.net|object does not exist
tv|tvwhois.verisign-grs.com|no match for
tvs|whois.afilias-srs.net|not found
tw|whois.twnic.net.tw|No Found
tz|whois.tznic.or.tz|% No entries found.
ua|whois.net.ua|No Object Found
ubs|whois.nic.ubs|no match
ug|whois.co.ug|no entries found
uk|whois.nic.uk|no match
university|whois.donuts.co|Domain not found.
uno|whois.nic.uno|available
uol|whois.gtlds.nic.br|object does not exist
ups|whois.afilias-srs.net|not found
us|whois.nic.us|not found:
uy|whois.nic.org.uy|no match for
uz|whois.cctld.uz|not found
vacations|whois.donuts.co|Domain not found.
vana|whois.nic.vana|no match
vc|whois.adamsnames.tc|not found
ve|whois.nic.ve|no match for
vegas|whois.afilias-srs.net|NOT FOUND
ventures|whois.donuts.co|not found
verisign|whois.nic.verisign|no match
vermgensberater|whois.ksregistry.net|object does not exist
vermgensberatung|whois.ksregistry.net|object does not exist
versicherung|whois.nic.versicherung|object does not exist
vet|whois.rightside.co|Domain not found.
vg|ccwhois.ksregistry.net|not found
viajes|whois.donuts.co|Domain not found
video|whois.rightside.co|Domain not found.
vig|whois.afilias-srs.net|not found
viking|whois.afilias-srs.net|not found
villas|whois.donuts.co|Domain not found.
vin|whois.donuts.co|not found
vip|whois-dub.mm-registry.com|available
virgin|whois.nic.virgin|available
vision|whois.donuts.co|Domain not found.
vista|whois.nic.vista|No Data Found
vistaprint|whois.nic.vistaprint|No Data Found
viva|whois.centralnic.com|not found
vlaanderen|whois.nic.vlaanderen|available
vodka|whois-dub.mm-registry.com|available
volkswagen|whois.afilias-srs.net|not found
vote|whois.afilias.net|NOT FOUND
voting|whois.voting.tld-box.at|object does not exist
voto|whois.afilias.net|NOT FOUND
voyage|whois.donuts.co|Domain not found
vu|vunic.vu|is not valid!
wales|whois.nic.wales|available
walter|whois.nic.walter|available
wang|whois.gtld.knet.cn|object does not exist
warman|whois.nic.warman|no match
watch|whois.donuts.co|Domain not found.
webcam|whois.nic.webcam|available
weber|whois.nic.weber|no match
website|whois.nic.website|not found
wed|whois.nic.wed|Domain Status: No Object Found
wedding|whois-dub.mm-registry.com|available
wf|whois.nic.fr|no entries found
whoswho|whois.nic.whoswho|not found
wien|whois.nic.wien|object does not exist
wiki|whois.nic.wiki|not found
win|whois.nic.win|available
wine|whois.donuts.co|not found
wme|whois.centralnic.com|not found
wolterskluwer|whois.afilias-srs.net|not found
woodside|whois.nic.woodside|available
work|whois-dub.mm-registry.com|available
works|whois.donuts.co|Domain not found.
world|whois.donuts.co|Domain not found.
ws|whois.website.ws|no match for
wtc|whois.nic.wtc|No Data Found
wtf|whois.donuts.co|Domain not found.
xerox|whois.nic.xerox|no match
xihuan|whois.teleinfo.cn|no match
xin|whois.afilias-srs.net|not found
xperia|whois.nic.xperia|no match
xxx|whois.nic.xxx|NOT FOUND
xyz|whois.nic.xyz|not found
yachts|whois.afilias-srs.net|not found
yodobashi|whois.nic.gmo|not found
yoga|whois-dub.mm-registry.com|available
youtube|domain-registry-whois.l.google.com|Domain not found.
yt|whois.nic.fr|no entries found
yun|whois.teleinfo.cn|no match
zara|whois.afilias-srs.net|not found
zip|domain-registry-whois.l.google.com|Domain not found.
zm|whois.nic.zm|Domain Status: No Object Found
zone|whois.donuts.co|Domain not found.
zuerich|whois.ksregistry.net|object does not exist

 

WP AntiFlood: WordPress Flood Koruma Eklentisi

WordPress flood koruma eklentisi, WP Anti Flood ile blogunuza yönelen istekleri Ip adresi ve milisaniye bazında bekleterek yönlendirmeye tabi tutabilirsiniz. WordPress blogunuza yönelen ve http isteğinde bulunan saldırıların tahribatını yine WordPress üzerinden azaltabilirsiniz. Saldırıların neden olduğu yüksek kaynak kullanımından meydana gelen yavaşlıktan, fazla bağlantı nedeniyle oluşan “Error establishing a database connection” hatalarından sıyrılmanız olanaklı.

 

Wordpress Flood Koruması WP AntiFlood Eklentisi
WordPress Flood Koruması WP AntiFlood Eklentisi

WP AntiFlood’un Çalışma Süreci

WP AntiFlood eklentisi, Worpdress’e eklemlenen işlem öncesi, PHP tabanlı bir süzgeçtir. Bu süzgeç, bir ip adresinden gelen isteğin zamanını session yardımıyla depolayarak; aynı ip adresinden gelen bir sonraki isteğin zamanıyla ilk isteğin zamanını karşılaştırır. Eğer Settings bölümünde milisaniye cinsinden belirlediğiniz süreden daha kısa bir sürede http get/post talebinde bulunulmuşsa ilgili ip adresini bir geçiş/kapı sayfasına yönlendirir. Bu geçiş sayfası hızlı talepte bulunan kişiyi birkaç saniyeliğine yavaşlatıp istekte bulunduğu sayfaya tekrar yönlendirir. Eğer aşırı istek nedeniyle bir veritabanı hatasıyla karşılaşıldıysa yine bir kapı kullanarak talep edilen sayfaya yönlendirme yapar. Böylece -sunucu ve ağ optimizasyonunuzla da ilişkili olarak- yüksek talepte bulunan ipler beklemeye alınıp normal ziyaretçilerin bu yoğunluktan en az biçimde etkilenmesi; site hızının ve kararlılığının, sunucu kaynaklarının korunması amaçlanır.

WP AntiFlood Hangi Durumlarda Kullanılır?

WP AntiFlood, blogunuz için daima önerilen bir yazılımımız. Çünkü bir saldırının ne zaman geleceğini kestirmek mümkün değil. Normal zamanlarda Level 1-2-3’te bırakabileceğiniz eklenti ayarı, saldırı durumlarında Level 4-5 veya belirlediğiniz bir ayara (Random) çekilebilir.

WP AntiFlood Arama Motorlarını Engeller Mi? veya Arama Motorları Taklit Edilerek Saldırı Yapılabilir Mi?

Wp AntiFlood’un arama motorlarını engellememesi için kullanılan bir fonksiyona sahiptir. Bu fonksiyonun manipule edilmemesi için referer, browser agent yerine IP/hostname tabanlı bir tarama yapılır. Böylece flood araçlarını kullanan ip adresleri, arama motorlarını taklit edemez. Wp AntiFlood proxy flood saldırılarında da gerçek ip adresine ulaşmaya çalışarak bu ip adresiyle ilgili veriyi sessionda saklar. Bu sayede transparan ve bazı anonymous proxyler WPAntiFlood’u alt edemez.

Wp AntiFlood, Blogumu Tüm Ddos/Botnet Saldırılarından Korur Mu?

Hayır. Wp AntiFlood, WordPress’e eklemlenen bir PHP yazılımıdır. Direk olarak network veya Internet bağlantınız ile ilgili bir koruma sağlamaz. WordPress’in sunucu (cpu, ram vb.) ve Internet kaynak kullanımını, http saldırıları süresince, en alt düzeyde tutmayı amaçlar.

Wp AntiFlood’un Artıları Nelerdir?

Wp AntiFlood eklentisi;

  1. Bir veritabanına gereksinim duymaz. WordPress veritabanını kullanmaz. Bu anlamda ekstra bir yüke veya koruma zaafiyetine neden olmaz.
  2. WordPress’in “options” ayarlarına kaydolmaz. Tüm işlemleri PHP dosyasına yazma/değiştirme yoluyla sağlar. Böylece en az düzeyde kaynak tüketir ve özgürce çalışır.
  3. wp-admin/, ?s= arama sorguları gibi WordPressle ilgili tüm görüntülenebilir sayfalar flood korumasına dahildir.
  4. Random bölümüyle özelleştirilebilir. Sunucu ve Internet özelliklerinizle de ilişkili olarak koruma düzeyini milisaniye cinsinden özelleştirebilirsiniz.
  5. İçeriğinde zararlı kodlar, başka bir siteyle bağlantı bulunmaz. Bir ihtiyaçtan ortaya çıkarak kullanıcılara temiz biçimde ulaşmıştır.
  6. Açık kaynak kodlu ve ücretsizdir.
  7. Talep ve takdir ile gelişime daima açıktır.

WordPress’in resmi sitesinde eklentinin sayfasına ulaşabilir; eklentiyi oradan kurabilirsiniz. Ancak oradaki sürümü ilk olduğundan ve onay süreci gerektirdiğinden aşağıdaki indirme bağlantısını kullanabilirsiniz. Yine de beklemek ve ilk sürümü kullanmak isterseniz: https://wordpress.org/plugins/wp-antiflood/

Wp AntiFlood Eklentisini İndir

Kurulum: Zip dosyasının içeriğini Worpdress’in kurulu olduğu dizinde /wp-content/plugins klasörüne klasör olarak Ftp ile yükleyin. WordPress admin panelinizde Eklentiler bölümünden eklentiyi etkinleştirerek; sol menüde görebileceğiniz bölüme tıklayıp ayarları kendinize göre yapıp kaydedin.

İyi kullanımlar dilerim. Geliştirme için görüş ve taleplerinizi lütfen yorum bölümünden bildiriniz.

Php Curl İle Facebook Login

Php Curl yardımıyla Facebook’a login olup bir sayfa açalım. Facebook Apilerinin kimi kısıtlamalarından kurtulmak veya Php ile daha özgür (FB flood korumasını gözardı edersek.) işlemler yapabilmek için ilk adım elbette Facebook’ta oturum açmak olacak. Bu noktada Php’nin Curl fonksiyonu imdadımıza yetişiyor. Aşağıdaki kodlar Facebook üzerinde oturum açarak bir profili ziyaret eder. Daha sonra dilerseniz explode vb. yardımıyla ilgili sayfadaki verileri parçalayıp alabilirsiniz. Örneğimizde kodlarımız Facebook’a login olup anasayfaya gidiyor. Ardından Beybut’un Facebook sayfasını ziyaret edip ilgili sayfa kaynağını ekrana yazdırıyor.

<?php
error_reporting(0);
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
//Facebook giriş bilgileriniz
$login_email = 'email@email.com';
$login_pass = 'şifreniz';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://m.facebook.com/login.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'charset_test=€,´,€,´,水,Д,Є&email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Charset: utf-8',
'Accept-Language: en-us,en;q=0.7,bn-bd;q=0.3',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5')); 
curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd () . '/cerez.txt' ); // çerezler
curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd () . '/cerez.txt' );	// çerezlerin saklanacağı dosya
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_REFERER, "http://m.facebook.com");
$fbMain = curl_exec($ch) or die(curl_error($ch)); 
header('Content-Type: text/html; charset=utf-8'); //hata alırsanız bu satırı kaldırabilirsiniz.
$url = 'http://m.facebook.com/home.php?refid=18';
curl_setopt($ch, CURLOPT_URL, $url);
$demo_mac=curl_exec($ch);
$url = 'https://www.facebook.com/Beybut-191209184580446/';
curl_setopt($ch, CURLOPT_URL, $url);
$beybut=curl_exec($ch);
echo $beybut; //gelen sayfayı gösterdik.
exit;
?>

 

Php Ajax Domain Sorgulama Scripti

Php ve Ajax ile toplu alan adı (domain) sorgulayan bir script kodlayalım. Script, belirlediğimiz alan adı uzantıları için topluca sorgulama yapıp uygun alan adlarını listeleyecek. Alan adı sorgulamak biraz zaman aldığı için sorgulama sırasında Ajax’ın “beforeSend” metoduyla sorgulayana sorgulama bitene kadar hareketli bir görsel gösterecek. Demoda .com, .net, .org, .biz, .info, com.tr, gen.tr uzantıları kontrol ediliyor. Dilerseniz örnekten farklı uzantılar için de sorgulama türetebilirsiniz.

Tüm domain whois uzantıları, whois serverları ve yanıtları için yeni bir yazı yayınladım.

Script üç dosyadan oluşuyor: beybut-domain.php, beybut-sorgu.php ve yukleniyor.gif

beybut-domain.php kaynak kodları aşağıdaki gibi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Beybut Alan Adı - Domain Sorgulama</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#img1").hide();
$("#sorgu-buton").click(function(e){
e.preventDefault();
deger = $('#bunu').val()
$.ajax({
type: "POST",
url: "beybut-sorgu.php",
data: "sorguc="+deger,
error:function(){ $('#alan-adlari').html("Uygun alan adları getirilemedi."); }, 
beforeSend:function () {
$('#alan-adlari').html("<img src='yukleniyor.gif' />");
},
success: function(veri) { $('#alan-adlari').html(veri);}
});
});
});     
</script>
</head>
<body>
<p>Beybut alan adı/domain uygunluk kontrolü scripti</p>
<p>com, net, org, biz, info, com.tr, gen.tr uzantılı alan adlarını sorgulamak için aşağıdaki kutucuğu kullanın.</p>
<p>
<input name="bunu" type="text" id="bunu" size="55" />
<input type="submit" name="button" id="sorgu-buton" value="Kontrol Et" />
</p>
<div id="alan-adlari"><div id="img1" name="img1"><img src="yukleniyor.gif" /></div></div>
<p>&nbsp;</p>
</body>
</html>

Burada iki form elementi ve birkaç satırlık Js kodu ile sorgumuzu beybut-sorgu.php dosyasına gönderiyoruz.

<?php 
error_reporting(0);
function domainlestir($dom) {
$dom=strip_tags($dom);
$dom=trim($dom);
$dom=str_replace('Ş','s',$dom);	
$dom=str_replace('ş','s',$dom);	
$dom=str_replace('ç','c',$dom);	
$dom=str_replace('Ç','c',$dom);	
$dom=str_replace('Ğ','g',$dom);	
$dom=str_replace('ğ','g',$dom);	
$dom=str_replace('İ','i',$dom);	
$dom=str_replace('ı','i',$dom);	
$dom=str_replace('ö','o',$dom);	
$dom=str_replace('Ö','o',$dom);	
$dom=str_replace('ü','u',$dom);	
$dom=str_replace('Ü','u',$dom);	
$dom=str_replace('"','',$dom);	
$dom=str_replace("'",'',$dom);	
$dom=str_replace('€','eu',$dom);
$dom=str_replace('$','usd',$dom);
$dom=str_replace('?','',$dom);
$dom=str_replace('_','',$dom);
$dom=str_replace('!','',$dom);
$dom=str_replace(',','',$dom);
$dom=str_replace(';','',$dom);
$dom=str_replace('`','',$dom);
$dom=str_replace('^','',$dom);
$dom=str_replace('+','',$dom);
$dom=str_replace('/','',$dom);
$dom=str_replace('\\','',$dom);
$dom=str_replace('*','',$dom);
$dom=str_replace('=','',$dom);
$dom=str_replace('}','',$dom);
$dom=str_replace(']','',$dom);
$dom=str_replace(')','',$dom);
$dom=str_replace('[','',$dom);
$dom=str_replace('(','',$dom);
$dom=str_replace('{','',$dom);
$dom=str_replace('&','',$dom);
$dom=str_replace('%','yuzde',$dom);
$dom=str_replace('<','',$dom);
$dom=str_replace('>','',$dom);
$dom=str_replace('|','',$dom);
$dom=str_replace(':','',$dom);
$dom=str_replace('?','',$dom);
$dom=str_replace('`','',$dom);
$dom=str_replace('Q','q',$dom);
$dom=strtolower($dom);
$dom = preg_replace('/[^a-z0-9-. *]/i', '', $dom); 
$dom = str_replace('      ', ' ', $dom);
$dom = str_replace('     ', ' ', $dom);
$dom = str_replace('    ', ' ', $dom);
$dom = str_replace('   ', ' ', $dom);
$dom = str_replace('  ', ' ', $dom);
$dom = str_replace(' ', '-', $dom); 
return $dom;
}
function domain_sorgula($domain)
{
// fix the domain name:
$domain = strtolower(trim($domain));
$domain = preg_replace('/^http:\/\//i', '', $domain);
$domain = preg_replace('/^www\./i', '', $domain);
$domain = explode('/', $domain);
$domain = trim($domain[0]);
// split the TLD from domain name
$_domain = explode('.', $domain);
$lst = count($_domain)-1;
$ext = $_domain[$lst];
// the list of whois servers
// most taken from www.iana.org/domains/root/db/
$servers = array(
"biz" => "whois.neulevel.biz",
"com" => "whois.internic.net",
"us" => "whois.nic.us",
"coop" => "whois.nic.coop",
"info" => "whois.nic.info",
"name" => "whois.nic.name",
"net" => "whois.internic.net",
"gov" => "whois.nic.gov",
"edu" => "whois.internic.net",
"mil" => "rs.internic.net",
"int" => "whois.iana.org",
"ac" => "whois.nic.ac",
"ae" => "whois.uaenic.ae",
"at" => "whois.ripe.net",
"au" => "whois.aunic.net",
"be" => "whois.dns.be",
"bg" => "whois.ripe.net",
"br" => "whois.registro.br",
"bz" => "whois.belizenic.bz",
"ca" => "whois.cira.ca",
"cc" => "whois.nic.cc",
"ch" => "whois.nic.ch",
"cl" => "whois.nic.cl",
"cn" => "whois.cnnic.net.cn",
"cz" => "whois.nic.cz",
"de" => "whois.nic.de",
"fr" => "whois.nic.fr",
"hu" => "whois.nic.hu",
"ie" => "whois.domainregistry.ie",
"il" => "whois.isoc.org.il",
"in" => "whois.ncst.ernet.in",
"ir" => "whois.nic.ir",
"mc" => "whois.ripe.net",
"to" => "whois.tonic.to",
"tv" => "whois.tv",
"ru" => "whois.ripn.net",
"org" => "whois.pir.org",
"aero" => "whois.information.aero",
"nl" => "whois.domain-registry.nl",
"uk" => "whois.nic.uk",
"us" => "whois.nic.us",
"travel" => "whois.nic.travel",
"gov" => "whois.dotgov.gov",
"tr" => "whois.nic.tr",
"it" => "whois.nic.it"
);
$nic_server = $servers[$ext];
$output = '';
if ($conn = fsockopen($nic_server, 43)) {
fwrite($conn, $domain."\r\n");
while (!feof($conn)) {
$output .= fgets($conn, 128);
}
fclose($conn);
} else {
die('Hata: Bu servise bağlanılamadı: ' . $nic_server . '!');
}
return $output;
}
//
$beybut=domainlestir($_POST["sorguc"]);
//nokta varsa noktadan öncesini alsın. beybut.com ise beybut'u alsın. Böylece diğer uzantıları da kontrol edebilelim.
$noktalimi=substr_count($beybut,'.');
if ($noktalimi>=1) {
$digeruzantilar=explode('.',$beybut);
$digeruzantilar=$digeruzantilar[0];
$digeruzantilar=domainlestir($digeruzantilar);
} else {
$digeruzantilar=$beybut;	
}
//
if (strlen($digeruzantilar)<=2) {
echo 'Lütfen sorgulamak istediğiniz alan adını belirtin.';	
exit;
}
//com, net, org, biz, info, com.tr, gen.tr alan adlarını sorgulatalım.
//com
$sorbakalim=domain_sorgula($digeruzantilar.'.com');
if (strstr($sorbakalim,'No match')) {
echo '<font color="green">'.$digeruzantilar.'.com Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.com Alınmış.</font><br />';	
}
//net
$sorbakalim=domain_sorgula($digeruzantilar.'.net');
if (strstr($sorbakalim,'No match')) {
echo '<font color="green">'.$digeruzantilar.'.net Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.net Alınmış.</font><br />';	
}
//org
$sorbakalim=domain_sorgula($digeruzantilar.'.org');
if (strstr($sorbakalim,'NOT FOUND')) {
echo '<font color="green">'.$digeruzantilar.'.org Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.org Alınmış.</font><br />';	
}
//biz
$sorbakalim=domain_sorgula($digeruzantilar.'.biz');
if (strstr($sorbakalim,'Not found')) {
echo '<font color="green">'.$digeruzantilar.'.biz Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.biz Alınmış.</font><br />';	
}
//info
$sorbakalim=domain_sorgula($digeruzantilar.'.info');
if (strstr($sorbakalim,'NOT FOUND')) {
echo '<font color="green">'.$digeruzantilar.'.info Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.info Alınmış.</font><br />';	
}
//com.tr
$sorbakalim=domain_sorgula($digeruzantilar.'.com.tr');
if (strstr($sorbakalim,'No match')) {
echo '<font color="green">'.$digeruzantilar.'.com.tr Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.com.tr Alınmış.</font><br />';	
}
//gen.tr
$sorbakalim=domain_sorgula($digeruzantilar.'.gen.tr');
if (strstr($sorbakalim,'No match')) {
echo '<font color="green">'.$digeruzantilar.'.gen.tr Uygun.</font><br />';
} else {
echo '<font color="red">'.$digeruzantilar.'.gen.tr Alınmış.</font><br />';	
}
//
?>

Whois servisinden gelen yanıta göre alan adının uygunluk durumunu belirleyip ekrana yazdırıyoruz. Whois servisleri boştaki alan adları için “No match”, “NOT FOUND” ile başlayan çeşitli yanıtlar verebiliyor. Bu yanıt “$sorbakalim” içerisinde bulunuyor. echo ile yanıtı ekrana bastırıp farklı uzantılar için sorgu sayısını artırabilirsiniz. Whois sorgularını 43. porttan fsockopen yöntemiyle yaptığı için bu portun açık olduğuna emin olun.

DEMOİNDİR

 

 

Php Curl Proxy Destekli Bot

Php Curl ile IPv4, IPv6, Https uyumlu ve proxy destekli bir bot yazalım. Özellikle başka sitelerle bağlantı kurduğumuz projelerde IP adresimizin görünmesini istemeyiz. Bu gizlilik gerekliliği bizi proxy kullanımına yönlendirir. Php ile dış mecralardan veri elde etmenin en işlevsel yolu olan Curl’da proxy kullanmını anlatan çok sayıda içerik olmasına rağmen bunların çoğu işlevsel uyumluluk açısından eksik yönlere sahip. Bu projede hemen hemen tüm işlevleriyle Curl proxy kullanımını ve proxyleri otomatik bulma yöntemini örnekleyeceğim.

<?php
$baglanti_zaman_asimi = 15;
$zaman_asimi = 15;
$curl_defaults = array(
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_AUTOREFERER => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CONNECTTIMEOUT => $baglanti_zaman_asimi,
CURLOPT_TIMEOUT => $zaman_asimi,
CURLOPT_VERBOSE => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0
);
function Return_Content_From_URL($url,$proxy,$port,$proxy_kadisifre){
global $curl_defaults;
$ch = curl_init();
curl_setopt_array($ch, $curl_defaults);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"); //Tarayıcı sürümü
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXYPORT, $port);
curl_setopt($ch, CURLOPT_PROXYTYPE, "HTTP"); // HTTP/HTTPS türü proxy kullanacağız.
curl_setopt($ch, CURLOPT_PROXY, $proxy);
if ($loginpassw!="0:0"){
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_kadisifre);
}
$html= curl_exec($ch);
$buhata = 0;
$buhata = curl_errno($ch);
curl_close($ch);
if ($err!=0){
$hata = Echo_Curl_Error($buhata);
if($silent==0){echo "<b>Bir Hata Oluştu. Hata Kodu: $err: ".$hata."</b><br />";}
return false;
}
return $html;
}
$url = "https://www.whatismyip.com/";
$proxy = "146.20.68.224";
$port = "3128";
$proxy_kadisifre = "0:0"; // Kullanıcı adı ve şifreniz yoksa 0:0 olarak belirleyin.
$beybut= Return_Content_From_URL($url,$proxy,$port,$proxy_kadisifre);
echo '<h1>Beybut PHP Curl Proxy Geçit : '.$proxy.':'.$port.'</h1>';
echo $beybut;
?>

Kodları işlettiğimizde karşımıza şöyle bir ekran geliyor:

Php Curl Proxy

“Your IP Address Is: …” tabirindeki ip adresinin garipliği ilginizi çekmiştir. Bu, Ipv6 türü bir ip kullandığımızı gösteriyor.

Temel kodlamamız bu biçimde. Ancak biz işi bir adım daha ileriye götürüp; kullanacağımız proxy’yi güncel bir proxy sitesinden elde ederek her şeyi otomatikleştirelim. Incloak.com bu açıdan bize filtrelenebilir ve ücretsiz proxyler sunuyor. O halde kullanalım.

https://incloak.com/proxy-list/?maxtime=1500&ports=3128&type=s&anon=4” adresine girdiğinizde Https destekli, yüksek gizlilik (High anon.) içeren, 1500 ms’den hızlı ve 3128 portunu kullanan proxylerin yukarıdan aşağı listelendiğini görüyoruz.

incloak.com Proxy Listesi

Bu güzel kaynağı kullanmamak olmaz. En baştaki proxy’i alarak projemize dahil edecek basit explode kodlarını yazalım. Bunun için “getir” adlı normal bir Curl fonksiyonu da oluşturalım.

function getir($url){
$ch = curl_init();
$zaman = 25;
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,  2);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $zaman);
$rmx = curl_exec($ch);
curl_close($ch);
return $rmx;
}
$beybut_proxy_al=getir('https://incloak.com/proxy-list/?maxtime=1500&ports=3128&type=s&anon=4');
$canim_proxyim=explode('</tr><tr><td class=tdl>',$beybut_proxy_al);
$canim_proxyim=explode('<',$canim_proxyim[1]);
$canim_proxyim=$canim_proxyim[0];
echo $canim_proxyim;

“$canim_proxyim” artık kullanıma hazır. Portumuz 3128’di. Toparlayalım.

<?php
function getir($url){
$ch = curl_init();
$zaman = 25;
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,  2);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $zaman); //timeoutsüresi default olarak 5
$rmx = curl_exec($ch);
curl_close($ch);
return $rmx;
}
$beybut_proxy_al=getir('https://incloak.com/proxy-list/?maxtime=1500&ports=3128&type=s&anon=4');
$canim_proxyim=explode('</tr><tr><td class=tdl>',$beybut_proxy_al);
$canim_proxyim=explode('<',$canim_proxyim[1]);
$canim_proxyim=$canim_proxyim[0];
$baglanti_zaman_asimi = 15;
$zaman_asimi = 15;
$curl_defaults = array(
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_AUTOREFERER => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CONNECTTIMEOUT => $baglanti_zaman_asimi,
CURLOPT_TIMEOUT => $zaman_asimi,
CURLOPT_VERBOSE => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0
);
function Return_Content_From_URL($url,$proxy,$port,$proxy_kadisifre){
global $curl_defaults;
$ch = curl_init();
curl_setopt_array($ch, $curl_defaults);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"); //Tarayıcı sürümü
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXYPORT, $port);
curl_setopt($ch, CURLOPT_PROXYTYPE, "HTTP"); // HTTP/HTTPS türü proxy kullanacağız.
curl_setopt($ch, CURLOPT_PROXY, $proxy);
if ($loginpassw!="0:0"){
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_kadisifre);
}
$html= curl_exec($ch);
$buhata = 0;
$buhata = curl_errno($ch);
curl_close($ch);
if ($err!=0){
$hata = Echo_Curl_Error($buhata);
if($silent==0){echo "<b>Bir Hata Oluştu. Hata Kodu: $err: ".$hata."</b><br />";}
return false;
}
return $html;
}
$url = "https://www.whatismyip.com/";
$proxy = $canim_proxyim;
$port = "3128";
$proxy_kadisifre = "0:0"; // Kullanıcı adı ve şifreniz yoksa 0:0 olarak belirleyin.
$beybut= Return_Content_From_URL($url,$proxy,$port,$proxy_kadisifre);
echo '<h1>Beybut PHP Curl Proxy Geçit : '.$proxy.':'.$port.'</h1>';
echo $beybut;
?>

Güncel bir proxy bulup belirlediğimiz sayfayı bu geçit üzerinden çeken, IPv4 ve 6, Https uyumlu nur topu gibi bir “bot”umuz oldu.

Özgün Görseller Oluşturmak

Özgün resim oluşturmak, bulmak özellikle resim sitesi sahipleri için sıkıntılı bir süreç. Seo açısından özgünlüğün önemi ortadayken görselleri özgünlüğün dışında tutmak mantıklı değil. Bu noktadaki en beklendik soru özgün görselin nereden bulunacağıdır. Ancak bu soruyu soruyorsanız muhtemelen aklınıza farklı resim sitelerinden bir görseli indirip ters çevirmek; resmin çözünürlüğüyle oynamak, üzerine watermark/logo basmak veya fotoğraf makinenizle akşam yiyeceğiniz yumurtalı ıspanağın fotoğrafını çekmek geliyordur. Bu projede bunların hiçbirini yapmayacağım. Php, Youtube-dl, FFmpeg kullanarak devinimsel görselleri (video) durağan görsellere (resim) çevireceğim. Böylece, hiçbir arama motorunun benzetemediği ve/veya birebir eşleştiremediği özgün görseller elde edeceğim. Çılgınca…

Başlarken

Kodlamaya başlamadan önce sunucunuzda Youtube-dl ve Ffmpeg’in kurulu olması; Php exec işlevinin kullanılabilir olması gerekiyor. Yapacağım işlem, HD veya Ultra-HD, 4K çözünürlüklü bir Youtube videosundan rastgele olarak 20 adet frame kopyalamak olacak. Videoları HD+ seçmemin nedeni görsellerin yüksek çözünürlüklü ve video hareketlerinden (izli hareketlerden) arındırılmış olmasını istemem.

Özgün Fikir, Özgün Görseller: Videodan Resme

Her şey tamamsa başlayalım. Dubai’yi tanıtan Ultra-HD bir video ( https://www.youtube.com/watch?v=n8d79M0LtfY ), görsellerimizin kaynağı olacak. Youtube-dl ile videoyu indirip; FFmpeg ile temel süre bilgilerini aldıktan sonra 20 adet görseli videonun ilk 10 dakikalık bölümünden -videonun 10 dakikadan kısa olması sorun teşkil etmez-  sökeceğim.

<?php
function url_yap($uri) {
$uri=strip_tags($uri);
$uri=trim($uri);
$uri=str_replace('Ş','s',$uri);    
$uri=str_replace('ş','s',$uri);    
$uri=str_replace('ç','c',$uri);    
$uri=str_replace('Ç','c',$uri);    
$uri=str_replace('Ğ','g',$uri);    
$uri=str_replace('ğ','g',$uri);    
$uri=str_replace('İ','i',$uri);    
$uri=str_replace('ı','i',$uri);    
$uri=str_replace('ö','o',$uri);    
$uri=str_replace('Ö','o',$uri);    
$uri=str_replace('ü','u',$uri);    
$uri=str_replace('Ü','u',$uri);    
$uri=str_replace('"','',$uri);    
$uri=str_replace("'",'',$uri);    
$uri=str_replace('€','eu',$uri);
$uri=str_replace('$','usd',$uri);
$uri=str_replace('?','',$uri);
$uri=str_replace('_','',$uri);
$uri=str_replace('!','',$uri);
$uri=str_replace('.','',$uri);
$uri=str_replace(',','',$uri);
$uri=str_replace(';','',$uri);
$uri=str_replace('`','',$uri);
$uri=str_replace('^','',$uri);
$uri=str_replace('+','',$uri);
$uri=str_replace('/','',$uri);
$uri=str_replace('\\','',$uri);
$uri=str_replace('*','',$uri);
$uri=str_replace('=','',$uri);
$uri=str_replace('}','',$uri);
$uri=str_replace(']','',$uri);
$uri=str_replace(')','',$uri);
$uri=str_replace('[','',$uri);
$uri=str_replace('(','',$uri);
$uri=str_replace('{','',$uri);
$uri=str_replace('&','',$uri);
$uri=str_replace('%','yuzde',$uri);
$uri=str_replace('<','',$uri);
$uri=str_replace('>','',$uri);
$uri=str_replace('|','',$uri);
$uri=str_replace(':','',$uri);
$uri=str_replace('?','',$uri);
$uri=str_replace('`','',$uri);
$uri=str_replace('Q','q',$uri);
$uri=strtolower($uri);
$uri=str_replace('-',' ',$uri);
$uri = preg_replace('/[^a-z0-9 *]/i', '', $uri);
$uri = str_replace('      ', ' ', $uri);
$uri = str_replace('     ', ' ', $uri);
$uri = str_replace('    ', ' ', $uri);
$uri = str_replace('   ', ' ', $uri);
$uri = str_replace('  ', ' ', $uri);
$uri = str_replace(' ', '-', $uri);
return $uri;
}
$baslik='Beybut İle Özgün Görseller İçin Video Kullanımı';
$youtube='https://www.youtube.com/watch?v=n8d79M0LtfY'; // Youtube video adresi
if ( (strlen($baslik)<=3) or (strlen($youtube)<=20) ) {
echo 'Verilerden biri eksik.';	
exit;
}
$vid = '/home/BURADA_TAM_YOL_BELIRTILMELI/islem.mp4'; // Kaydedilecek videonun tam yolu.
unlink('./gorsel/islem.mp4');
exec('youtube-dl -4 -o '.$vid.' -f 22 '.$youtube); // Videoyu indirme. -f 22 indirilecek videonun kalite belirtecidir.
$ffmpeg_path = 'ffmpeg'; 
if (file_exists($vid)) {
$video_attributes = _get_video_attributes($vid, $ffmpeg_path);
print_r('Video codec: ' . $video_attributes['codec'] . ' - width: '  . $video_attributes['width'] 
. ' - height: ' .  $video_attributes['height'] . ' <br/>');
print_r('Video duration: ' . $video_attributes['hours'] . ':' . $video_attributes['mins'] . ':'
. $video_attributes['secs'] . '.'. $video_attributes['ms']);
} else { echo 'Video dosyası yok.'; }
function _get_video_attributes($video, $ffmpeg) {
$command = $ffmpeg . ' -i ' . $video . ' -vstats 2>&1';  
$output = shell_exec($command);  
$regex_sizes = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/";
if (preg_match($regex_sizes, $output, $regs)) {
$codec = $regs [1] ? $regs [1] : null;
$width = $regs [3] ? $regs [3] : null;
$height = $regs [4] ? $regs [4] : null;
}
$regex_duration = "/Duration: ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).([0-9]{1,2})/";
if (preg_match($regex_duration, $output, $regs)) {
$hours = $regs [1] ? $regs [1] : null;
$mins = $regs [2] ? $regs [2] : null;
$secs = $regs [3] ? $regs [3] : null;
$ms = $regs [4] ? $regs [4] : null;
}
return array ('codec' => $codec,
'width' => $width,
'height' => $height,
'hours' => $hours,
'mins' => $mins,
'secs' => $secs,
'ms' => $ms
);
}
$i=1;
while ($i<=20) {
$ro=rand(1,60);
if ($ro<=9) {
$ro='0'.$ro;	
}
$rmin=$video_attributes['mins'];
$rmin=ltrim($rmin,'0');
$rmin=rand(1,$rmin);
$ad=url_yap($baslik).'-'.date('dmYHis');	
exec('ffmpeg -i '.$vid.' -ss 00:'.$rmin.':'.($ro).' -vframes 1 /home/BURADA_TAM_YOL_BELIRTILMELI/gorsel/'.$ad.'-'.$i.'.jpg'); //Videodan resimleri söküyorum.
$i++;
}
?>

Kodlamada, klasörlerin yol bilgilerini tam olarak girmeye özen gösterin. Bakalım fikrimiz ve kodlarımız işe yaramış mı?

Hasat Zamanı

ozgun-gorseller-icin-video-09032016111213-1 ozgun-gorseller-icin-video-09032016110702-6 ozgun-gorseller-icin-video-09032016110503-5 ozgun-gorseller-icin-video-09032016110503-1 ozgun-gorseller-icin-video-09032016110148-17 ozgun-gorseller-icin-video-09032016110148-12 ozgun-gorseller-icin-video-09032016110148-8 ozgun-gorseller-icin-video-09032016110148-7

Artık uygun çözünürlükteki -genelde HD ve üzeri- her video bizim için birkaç özgün görsel anlamına gelebilir.

Projenin Zaafiyetleri ve Öneriler

  1. Videonun indirilmesi ve işlenmesi elde etmek istediğiniz görsel sayısına göre uzayıp kısalabiliyor. Örneğin 30 görsel için 5 dakikadan daha uzun bir süre işlem yapılması gerekebilir. Bu, sunucu bağlantınız, sunucunuzdaki ram ve işlemci gücü, disk özellikleriniz gibi donanımsal ortamla ilişkili. Ayrıca işlem uzun sürebileceği için php.ini’de bekleme süresine (max_execution_time) 300-1800 gibi bir değer vermeniz gerekir.
  2. Eğer scriptte hata alırsanız youtube-dl ve Ffmpeg’in kurulu ve güncel; Php içerisinde exec’in çalıştırılabilir olduğuna emin olun. Tabi ki kod içerisindeki yolların (örn. /home/beybut/public_html/youtube-bot/…) doğru biçimde yazılmasına da dikkat edin. Yine de çözemediğiniz noktalar için yorum bölümü daima emrinize amadedir.
  3. Videoları sadece Youtube’dan değil Youtube-dl’nin desteklediği diğer sitelerden de indirebilirsiniz. Youtube-dl’nin video indirmeyi desteklediği sitelerin listesine bu bağlantıdan ulaşabilirsiniz.