Php Sayfaya Doğrudan Erişimi Engelleme ve Web Botları Tespit Etme

Php Bot ve Sayfaya Doğrudan Girişi Tespit Etme

Php Sayfaya Doğrudan Erişimi Engelleme ve Web Botları Tespit Etme 

Merhaba arkadaşlar bu yazımda sizlere php ile nasıl site kullanıcılarının doğrudan bir sayfaya girişini engelleyebileceğinizden ve daha sonrasında ise kullanıcı hariç kişilerin bu sayfaya nasıl girebileceğinden bahsedeceğim.

Burada sayfaya doğrudan girişi engellemek ile kullanıcıların o sayfaya sadece menüden ya da herhangi bir yönlendirme ile girebilmelerini sağlamak olacak.

Sayfaya Direkt / Doğrudan Girişi Tespit Etme

function DirectLoginControl()
{
    try {
        if (isset($_SERVER['HTTP_REFERER'])) {
            return true;
        } else {
            return false;
        }
    } catch (Exception $e) {
        return false;
    }
}

Yukarıdaki fonksiyon ile kullanıcıların doğrudan girmesini istemediğiniz sayfalara girmesini engelleyebilirsiniz, bu fonksiyon içerisinde bulunan "$_SERVER['HTTP_REFERER']" kullanıcıların sayfaya girerken daha önce nereden geldiğini tespit ediyor ve eğer doğrudan giriş yapılmış ise boş değer döndürüyor, bizde bu boş değer olduğu zaman kullanıcının sayfaya girmesini engelliyoruz.

İlerleyen yazılarda "HTTP_REFERER" ile ilgili daha detaylı işlemler de paylaşmayı düşünüyorum. (Bizim sitenin dışından gelen bağlantılardan sayfaya girişi engellemek gibi.)

Web Botları Tespit Etme

Yukarıda anlattığım fonksiyon ile sayfaya kullanıcıların direkt girişini engelledik ama bir sorun ortaya çıktı, kullanıcıları engeller iken web botları da engellediğimiz için sayfamız Google üzerinde düzgün indexlenemeyebilir  ama siz düzgün indexlenmesini isteyebilirsiniz işte bu yüzden aşağıdaki fonksiyon ile siteye giren botları tespit edebilir ve bu botların siteye girmesine izin verebilirsiniz.

function BotDedector()
{
    try {
        if (preg_match('/abacho|accona|AddThis|AdsBot|ahoy|AhrefsBot|AISearchBot|alexa|altavista|anthill|appie|applebot|arale|araneo|AraybOt|ariadne|arks|aspseek|ATN_Worldwide|Atomz|baiduspider|baidu|bbot|bingbot|bing|Bjaaland|BlackWidow|BotLink|bot|boxseabot|bspider|calif|CCBot|ChinaClaw|christcrawler|CMC\/0\.01|combine|confuzzledbot|contaxe|CoolBot|cosmos|crawler|crawlpaper|crawl|curl|cusco|cyberspyder|cydralspider|dataprovider|digger|DIIbot|DotBot|downloadexpress|DragonBot|DuckDuckBot|dwcp|EasouSpider|ebiness|ecollector|elfinbot|esculapio|ESI|esther|eStyle|Ezooms|facebookexternalhit|facebook|facebot|fastcrawler|FatBot|FDSE|FELIX IDE|fetch|fido|find|Firefly|fouineur|Freecrawl|froogle|gammaSpider|gazz|gcreep|geona|Getterrobo-Plus|get|girafabot|golem|googlebot|\-google|grabber|GrabNet|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|HTTrack|ia_archiver|iajabot|IDBot|Informant|InfoSeek|InfoSpiders|INGRID\/0\.1|inktomi|inspectorwww|Internet Cruiser Robot|irobot|Iron33|JBot|jcrawler|Jeeves|jobo|KDD\-Explorer|KIT\-Fireball|ko_yappo_robot|label\-grabber|larbin|legs|libwww-perl|linkedin|Linkidator|linkwalker|Lockon|logo_gif_crawler|Lycos|m2e|majesticsEO|marvin|mattie|mediafox|mediapartners|MerzScope|MindCrawler|MJ12bot|mod_pagespeed|moget|Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|NationalDirectory|naverbot|NEC\-MeshExplorer|NetcraftSurveyAgent|NetScoop|NetSeer|newscan\-online|nil|none|Nutch|ObjectsSearch|Occam|openstat.ru\/Bot|packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pingdom|pinterest|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|rambler|Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Scrubby|Search\-AU|searchprocess|search|SemrushBot|Senrigan|seznambot|Shagseeker|sharp\-info\-agent|sift|SimBot|Site Valet|SiteSucker|skymob|SLCrawler\/2\.0|slurp|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|spider|suke|tach_bw|TechBOT|TechnoratiSnoop|templeton|teoma|titin|topiclink|twitterbot|twitter|UdmSearch|Ukonline|UnwindFetchor|URL_Spider_SQL|urlck|urlresolver|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|wapspider|WebBandit\/1\.0|webcatcher|WebCopier|WebFindBot|WebLeacher|WebMechanic|WebMoose|webquest|webreaper|webspider|webs|WebWalker|WebZip|wget|whowhere|winona|wlm|WOLP|woriobot|WWWC|XGET|xing|yahoo|YandexBot|YandexMobileBot|yandex|yeti|Zeus/i', $_SERVER['HTTP_USER_AGENT'])) {
            return true;
        }
        return false;
    } catch (Exception $e) {
        return false;
    }
}

Fonksiyonda "preg_match" ile "HTTP_REFERER" içerisinde botların döndürdüğü değerleri arattık ve eğer ki herhangi bir bot değeri dönüyor ise true döndürdük.

Evet bu yazımızda burada bitiyor bu iki fonksiyonu birleştirmek, düzenlemek ve kendi projelerinizde kullanılabilir hale getirmek size kalmış. İyi günler dilerim.