Merhaba arkadaşlar, başlıktan da anlaşılacağı gibi sitemize gelen ziyaretçilere ait bazı istatistiksel bilgileri tutmak isteyebiliriz ya da sitemizin güvenliği için bu tarz tespitler yapmak zorunda kalabiliriz. Bu tespitlerimizi hazır bir servise istek göndererek yapacağız. Php IP Filtreleme, VPN – Proxy – Tor ve ISS tespit etme işlemlerini biz dizi işlemler sonucunda yapabiliyoruz. Bu işlemler sırası ile şu şekilde;
Adım 1 : ipqualityscore.com sitesinden ücretsiz ya da ücretli (tercih meselesi) hesap oluşturun.
Adım 2 : Private Key sayfasından hesabımıza ait Private Key kodumuzu almamız gerekiyor.
Private key’imizi aldıktan sonra koda geçebiliriz.
//API Key. $key = 'Key Buraya Yazılmalı'; //Filtrelenecek ip adresi. $ip = isset($_SERVER['HTTP_CF_CONNECTING_IP']) ? $_SERVER['HTTP_CF_CONNECTING_IP'] : $_SERVER['REMOTE_ADDR']; // Ziyaretçinin kullandığı cihaza ait bilgiler. $user_agent = $_SERVER['HTTP_USER_AGENT']; $user_language = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $strictness = 1; // Kafeler, okullar, şirketler vb. Gibi genel erişim noktalarına izin vermek isteyebilirsiniz... $allow_public_access_points = 'true'; $lighter_penalties = 'false'; // Parametrelerimizi oluşturuyoruz. $parameters = array( 'user_agent' => $user_agent, 'user_language' => $user_language, 'strictness' => $strictness, 'allow_public_access_points' => $allow_public_access_points, 'lighter_penalties' => $lighter_penalties ); $formatted_parameters = http_build_query($parameters); // API URL oluşturuyoruz $url = sprintf( 'https://www.ipqualityscore.com/api/json/ip/%s/%s?%s', $key, $ip, $formatted_parameters ); // Sonuçları getiriyoruz. $timeout = 5; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); $json = curl_exec($curl); curl_close($curl); //Sonuçları result değişkenine aktarıyoruz. $result = json_decode($json, true); //Artık kontrollere geçebiliriz. if(isset($result['success']) && $result['success'] === true){ if($result['proxy'] === true){ exit(header("Location: Proxy_URL")); } if($result['vpn'] === true){ exit(header("Location: Vpn_URL")); } if($result['tor'] === true){ exit(header("Location: Tor_URL")); } }
Yukarıda sadece Proxy/Tor/Vpn tespiti yapmış olduk. Fakat api bize bundan daha fazlasını sağlıyor. $result değişkenini ekrana yazdırdığımızda aşağıda olduğu gibi bir sonuç elde ederiz. Tabi ki ben bunu localhost üzerinden test ettiğim için servis sağlayıcı ve bazı bilgiler tespit edilemedi. Takdir edersiniz ki localhosttan apiye gönderilen ip adresi ::1 şeklinde olduğundan bu bilgileri localhosttan almak mümkün değil. Testlerinizi internete çıkan canlı bir host üzerinden yapabilirsiniz.
Array ( [success] => 1 [message] => Success [fraud_score] => 100 [country_code] => N/A [region] => N/A [city] => N/A [ISP] => Loopback [ASN] => 0 [operating_system] => Windows 10 [browser] => Chrome 88.0 [organization] => N/A [latitude] => 0 [longitude] => 0 [is_crawler] => [timezone] => N/A [mobile] => [host] => ::1 [proxy] => 1 [vpn] => 1 [tor] => [active_vpn] => [active_tor] => [device_brand] => N/A [device_model] => N/A [recent_abuse] => 1 [bot_status] => 1 [connection_type] => Premium required. [abuse_velocity] => Premium required. [request_id] => 4uXGDE6vTF93k8 )
Yukarıda geriye dönen sonuçlara göre istediğiniz şekilde filtreleme yapabilirsiniz. Bu sizin ne yapmak istediğinize bağlı olarak değişir.
Bu sayfadaki bilgiler, sitelerimizi ziyaret eden IP adreslerinizi analiz etmeye, ayrıştırmaya ve depolamaya yarar. Bu IP adreslerinin bir VPN sağlayıcısına, TOR ağına ya da ISS sağlayıcısına ait olduğunu anlayıp rapor eder. Bu tür bilgileri depolamak bazı durumlarda gerekli olabilir. Makale içerisindeki servisi projenize dahil ederek bu tür bilgileri işleyebilirsiniz. Sonraki yazılarda görüşmek üzere.