RevealTheme logo

RevealTheme dedektörü nasıl çalışır

Dedektörlerimizden birine bir URL girdiğinizde, sonuçları görmenizden önceki iki saniye içinde birçok şey gerçekleşir. İşte meraklılar için teknik bir tur; mühendislikle çözemediğimiz sınırlamalar dahil.

1. Adım: Herkese açık HTML'i alma

Bir URL gönderdiğinizde, sunucumuz standart bir tarayıcı User-Agent'ı kullanarak o URL'nin herkese açık web sayfasını alır. Bu, siteyi doğrudan ziyaret etseydiniz tarayıcınızın alacağı HTML'in aynısıdır. Ödeme duvarlarını aşmıyor, oturum açma korumalı içerikleri çıkarmıyor veya herhangi bir kimlik doğrulama kullanmıyoruz.

Alma işlemi 20 saniyelik bir zaman aşımı kullanır. En fazla 10 yönlendirmeyi takip ederiz (bu, HTTP → HTTPS, www → www-siz ve ülkeye göre yönlendirmeleri kapsar). Site bir 4xx veya 5xx yanıtı döndürürse ya da zaman aşımı penceresi içinde yanıt vermezse, tahmin etmek yerine net bir «erişilemedi» hatası döndürürüz.

2. Adım: Platformu algılama

Belirli bir temayı belirlemeye çalışmadan önce, sitenin hangi CMS'yi çalıştırdığını kontrol ederiz. Desteklenen 7 platformun —WordPress, Shopify, Magento, Joomla, Drupal, Moodle ve PrestaShop— izlerini ararız ve en güçlü eşleşmeyi seçeriz.

WordPress dedektörümüze bir Shopify URL'si gönderirseniz (veya tam tersi), bunu size söyler ve doğru dedektöre bağlantı veririz. Tahmin yok, yanlış pozitif yok.

3. Adım: Tema algılama

Özellikle WordPress için tema referansları genellikle sayfanın HTML'inde wp-content/themes/TEMA_ADI/style.css gibi yollarda görünür. Bu referansların her birini belgenin herhangi bir yerinden çıkarırız: link etiketleri, script etiketleri, satır içi JavaScript, JSON-LD blokları ve hatta metin içeriği. Bu, son derece optimize edilmiş sitelerin standart algılama araçlarından gizlediği temaları algılar.

Algılanan her tema için temanın style.css dosyasını almaya çalışırız. Bu dosyanın başlığı, doğrudan tema geliştiricisinden gelen resmi tema adını, yazarı, sürümü, URI'yi ve açıklamayı içerir. Algılama sonucunun yanında gösterdiğimiz zengin tema bilgisinin kaynağı budur.

4. Adım: Eklenti algılama

Eklenti algılama iki paralel yaklaşım kullanır. İlk olarak, wp-content/plugins/EKLENTI_ADI/ ile eşleşen herhangi bir dosya yolunu çıkarırız. İkinci olarak, onlarca imza tabanlı kontrol çalıştırırız: Elementor, Yoast SEO, WPForms, WooCommerce, Wordfence gibi popüler eklentileri benzersiz şekilde tanımlayan belirli HTML yapılarını, CSS sınıf adlarını, satır içi JavaScript değişkenlerini ve HTTP yanıt başlıklarını ararız.

Çift yaklaşımlı tasarım, dosya yollarını (önbellekleme veya kaynak paketleme yoluyla) gizleyen ancak yine de ayırt edici imzalar bırakan eklentileri algılar. Algılanan her eklenti için, sonucu resmi eklenti adı, açıklaması, yazarı ve ekran görüntüleriyle zenginleştirmek üzere onu WordPress.org Eklenti Dizini'nde ararız.

5. Adım: Barındırma + DNS aramaları

Barındırma sağlayıcısını belirlemek için alan adında bir DNS araması yapar ve IP adresini, ASN'yi ve ters DNS'i inceleriz. Sağlayıcıyı belirlemek için bunu bilinen barındırma sağlayıcısı IP aralıklarından oluşan bir veritabanıyla çapraz kontrol ederiz. Doğruluk, büyük barındırma sağlayıcıları için (AWS, Cloudflare, Hostinger, SiteGround vb.) yüksek, niş sağlayıcılar için daha düşüktür.

Yapamadıklarımız

Kodumuz ne kadar iyi olursa olsun algılamanın işe yaramayacağı bazı durumlar:

  • Cloudflare bot mücadelesi. Katı Cloudflare bot korumasına sahip siteler («Güvenlik doğrulaması yapılıyor...» ekranı), her otomatik isteği engelleyecekleri gibi alıcımızı da engeller. Bunu aşmanın temiz bir yolu yoktur.
  • Yoğun şekilde özelleştirilmiş temalar. Bir tema, orijinal tema adına yapılan her referans HTML'den kaldırılacak kadar değiştirilmişse, algılayacak bir şeyimiz kalmaz.
  • Yeniden yazılmış kaynak yollarıyla agresif önbellekleme. LiteSpeed Cache, WP Rocket ve Cloudflare'in Rocket Loader'ı gibi eklentiler, kaynağı gizlemek için bazen kaynak URL'lerini yeniden yazar. İmza tabanlı algılamamız bunların çoğunu yakalar, ancak hepsini değil.
  • Statik dışa aktarma siteleri. Statik HTML'e dışa aktarılmış bir WordPress sitesi, algılamayı mümkün kılan çalışma zamanı imzalarının çoğunu kaybeder.

Yapmadıklarımız

Bize bunları sordular. Yanıtlar hayır:

  • Gönderdiğiniz URL'leri saklamıyoruz
  • Pazarlama amacıyla IP adreslerini kaydetmiyoruz
  • Algılama verilerini sağlayıcılarla paylaşmıyoruz
  • Kimlik doğrulamayı, robots.txt'yi veya diğer erişim kontrollerini aşmıyoruz
  • Güvenlik nedenleriyle dedektörü dahili/özel IP'lerde (127.0.0.1, 10.x.x.x vb.) çalıştırmıyoruz

Tam gizlilik ayrıntıları Gizlilik Politikası'mızda yer almaktadır.

API erişimi

Şu anda herkese açık bir API sunmuyoruz, ancak ajanslar ve araştırmacılar için talep üzerine sınırlı programatik erişim mevcuttur. Kullanım durumunuzu ve öngörülen istek hacminizi hello@revealtheme.com adresine yazın.

Neden açık kaynak değil?

Algılama kuralları ürünün çekirdeğidir ve temalar ile eklentiler geliştikçe bunları sık sık güncelleriz. Kodlarını açmak, güncelleme temponuzu yavaşlatırdı. Bununla birlikte, algılama teknikleri hakkında ayrıntılı yazıları blogumuzda yayınlıyoruz: bulmak için «algılama» araması yapın.

Denemeye hazır mısınız?

İncelemek istediğiniz siteyle eşleşen dedektörü kullanın: