Jak działa detektor RevealTheme
Gdy wprowadzasz adres URL do jednego z naszych detektorów, w ciągu dwóch sekund, zanim zobaczysz wyniki, dzieje się bardzo wiele. Oto techniczny przegląd dla ciekawskich, wraz z ograniczeniami, których nie jesteśmy w stanie rozwiązać inżynierią.
Krok 1: Pobranie publicznego kodu HTML
Gdy przesyłasz adres URL, nasz serwer pobiera publiczną stronę internetową spod tego adresu, używając standardowego User-Agent przeglądarki. To ten sam kod HTML, który otrzymałaby Twoja przeglądarka, gdybyś odwiedził stronę bezpośrednio. Nie obchodzimy ścian płatności, nie pozyskujemy treści chronionych logowaniem ani nie używamy żadnego uwierzytelniania.
Pobieranie korzysta z 20-sekundowego limitu czasu. Podążamy za maksymalnie 10 przekierowaniami (co obejmuje przekierowania HTTP → HTTPS, www → bez-www oraz przekierowania według kraju). Jeśli strona zwróci odpowiedź 4xx lub 5xx albo nie odpowie w oknie limitu czasu, zwracamy jasny błąd «nie udało się uzyskać dostępu» zamiast zgadywać.
Krok 2: Wykrycie platformy
Zanim spróbujemy zidentyfikować konkretny motyw, sprawdzamy, który CMS obsługuje stronę. Szukamy odcisków palca 7 obsługiwanych platform — WordPress, Shopify, Magento, Joomla, Drupal, Moodle i PrestaShop — i wybieramy najsilniejsze dopasowanie.
Jeśli prześlesz adres URL Shopify do naszego detektora WordPress (lub odwrotnie), poinformujemy Cię o tym i podlinkujemy właściwy detektor. Bez zgadywania, bez fałszywych alarmów.
Krok 3: Wykrywanie motywu
W przypadku konkretnie WordPressa odniesienia do motywu zwykle pojawiają się w kodzie HTML strony w ścieżkach takich jak wp-content/themes/NAZWA_MOTYWU/style.css. Wyodrębniamy każde takie odniesienie z dowolnej części dokumentu: znaczników link, znaczników script, kodu JavaScript wewnątrz strony, bloków JSON-LD, a nawet z treści tekstowej. Pozwala to wykryć motywy, które mocno zoptymalizowane strony ukryły przed standardowymi narzędziami detekcyjnymi.
Dla każdego wykrytego motywu próbujemy pobrać plik style.css tego motywu. Nagłówek tego pliku zawiera oficjalną nazwę motywu, autora, wersję, URI i opis, prosto od dewelopera motywu. To źródło bogatych informacji o motywie, które wyświetlamy obok wyniku wykrywania.
Krok 4: Wykrywanie wtyczek
Wykrywanie wtyczek korzysta z dwóch równoległych podejść. Po pierwsze, wyodrębniamy każdą ścieżkę pliku pasującą do wp-content/plugins/NAZWA_WTYCZKI/. Po drugie, uruchamiamy dziesiątki kontroli opartych na sygnaturach: szukamy konkretnych struktur HTML, nazw klas CSS, zmiennych JavaScript wewnątrz strony oraz nagłówków odpowiedzi HTTP, które jednoznacznie identyfikują popularne wtyczki, takie jak Elementor, Yoast SEO, WPForms, WooCommerce, Wordfence i inne.
Projekt z dwoma podejściami wykrywa wtyczki, które ukrywają swoje ścieżki plików (za pomocą buforowania lub łączenia zasobów), ale i tak pozostawiają charakterystyczne sygnatury. Każdą wykrytą wtyczkę wyszukujemy w Katalogu wtyczek WordPress.org, aby wzbogacić wynik o oficjalną nazwę wtyczki, opis, autora i zrzuty ekranu.
Krok 5: Wyszukiwanie hostingu + DNS
Aby zidentyfikować dostawcę hostingu, wykonujemy zapytanie DNS dla domeny i sprawdzamy adres IP, numer ASN oraz odwrotny DNS. Zestawiamy to z bazą danych znanych zakresów IP dostawców hostingu, aby zidentyfikować dostawcę. Dokładność jest wysoka dla głównych hostingów (AWS, Cloudflare, Hostinger, SiteGround itd.) i niższa dla dostawców niszowych.
Czego nie jesteśmy w stanie zrobić
Kilka przypadków, w których wykrywanie nie zadziała, niezależnie od tego, jak dobry jest nasz kod:
- Wyzwanie dla botów od Cloudflare. Strony z surową ochroną przed botami Cloudflare (ekran «Trwa weryfikacja bezpieczeństwa...») blokują nasz pobieracz tak samo, jak zablokowałyby każde zautomatyzowane żądanie. Nie ma czystego sposobu, by to obejść.
- Intensywnie spersonalizowane motywy. Jeśli motyw został zmodyfikowany na tyle, że z kodu HTML usunięto każde odniesienie do oryginalnej nazwy motywu, nie mamy czego wykryć.
- Agresywne buforowanie z przepisanymi ścieżkami zasobów. Wtyczki takie jak LiteSpeed Cache, WP Rocket i Rocket Loader od Cloudflare czasami przepisują adresy URL zasobów, aby ukryć źródło. Nasze wykrywanie oparte na sygnaturach wychwytuje większość z nich, ale nie wszystkie.
- Strony eksportu statycznego. Strona WordPress wyeksportowana do statycznego HTML traci większość sygnatur działających w czasie wykonywania, które umożliwiają wykrywanie.
Czego nie robimy
Pytano nas o to. Odpowiedzi brzmią: nie:
- Nie przechowujemy adresów URL, które przesyłasz
- Nie rejestrujemy adresów IP w celach marketingowych
- Nie udostępniamy danych wykrywania dostawcom
- Nie obchodzimy uwierzytelniania, robots.txt ani innych kontroli dostępu
- Nie uruchamiamy detektora na wewnętrznych/prywatnych adresach IP (127.0.0.1, 10.x.x.x itd.) ze względów bezpieczeństwa
Pełne szczegóły dotyczące prywatności znajdziesz w naszej Polityce prywatności.
Dostęp do API
Obecnie nie oferujemy publicznego API, ale ograniczony dostęp programistyczny jest dostępny na życzenie dla agencji i badaczy. Napisz na hello@revealtheme.com, podając swój przypadek użycia i przewidywany wolumen żądań.
Dlaczego nie jest to oprogramowanie open source?
Reguły wykrywania są sednem produktu i aktualizujemy je często, w miarę jak ewoluują motywy i wtyczki. Otwarcie ich kodu spowolniłoby tempo naszych aktualizacji. Mimo to publikujemy szczegółowe wpisy o technikach wykrywania na naszym blogu: poszukaj «wykrywanie», aby je znaleźć.
Gotowy, by tego spróbować?
Użyj detektora pasującego do strony, którą chcesz sprawdzić: