Jak pozbyłem się 95 procent niechcianych wejść na stronę




kontrola wejść na stronę

Wstęp

Artykuł ten został napisany na podstawie własnych obserwacji i przemyśleń, został napisany na podstawie danych z otrzymanych z systemu monitoringu stron, który opracowałem sam i który to dalej rozwijam. Źródłem danych dla tego artykułu jest klikanascie stron internetowych, zarówno własnych jak i obcych o róznej popularnosci, pozycji w wyszukiwarkach, wielkości, optymalizacji, tematyce i geolokalizacji. W serwisach zbierających dane użyte zostały różne systemy (skrypty) włącznie w tymi popularnymi. By uzyskać pełniejszy obraz dane są zbierane zarówno od strony serwera jak od strony przeglądarki.

Pozbycie się niechcianych automatycznych wejść przynosi wymierne korzyści w postaci:

  • mniejszego obiążenia serwerów co w każdym przypadku przekłada się na wydajnośc serwisów
  • zapobiegania wyłudzeń i kopiowaniu treści przez automaty
  • zapobiegania refspamowi mogącemu obniżyć zarówno prestiż strony jak i jej pozycje w wyszukiwarkach
  • zapobiega zaciemnianiu danych statystycznych stosowanych do analizy wejść i zachowań użytkowników
  • zapobiega cześci ataków na stronę poprzez świadome podawanie niechcianym automatom błędnych odpowiedzi

Kim jesteś wchodzący na stronę?

... bo jak nie jesteś kimś to jesteś czymś czyli automatem więc potencjalnym żródłem problemu. Rozpoznanie kim lub czym jest wchodzący na stronę jest kuczowym momentem całego procesu. W naprostszy sposób wejcia możemy podzielic na:

  • wejśca faktycznych internautów
  • wejścia różnych automatów

Wejscia internautów w naszych rożważaniach pomijamy gdyż są one jak najbardziej pożadane. Wejścia automatów możemy podzielić na:

  • wejścia wyszukiwarek - pożądane
  • wejścia różnego rodzaju automatów z serwisów wspomagących lub współpracujących stroną - pożądane
  • inne wejścia automatów - niepożądane

Zmienne

Cały proces rozpoznawania wejścia opiera sie na zmiennych serwera:

  • REMOTE_ADDR - informuje o adresie IP wchodzacego
  • HTTP_USER_AGENT - jest nagłowkem żądania, w nim znajdziemy takie informacje jak np. system operacyjny, rodzaj i wersję przegladarki
  • HTTP_REFERER - informuje o poprzednim adresie strony czyli o adresie z którego "przyszedł" internauta
  • REQUEST_METHOD - informuje o metodzie przy wejściu na stronę np GET
  • REMOTE_HOST - informuje o serwerze przy pomocy którego wykonano wejscie na stronę, zienna ta najczęściej ma taką samą wartość jak IP

Dodatkowe przydatne zmienne i informacje:

  • QUERY_STRING - informuje o adresie strony na którą było wejście
  • czas serwera - uzyskiwany przy pomocy funcji, skryptu, zmiennej REQUEST_TIME lub REQUEST_TIME_FLOAT
  • dodatkowe informacje uzyskane od przeglądarki przy pomocy Javascript (AJAX)

Na podstawie tych danych można z dużą dokładnością określić paramerty wejścia.

Nagłówek wejścia

W zmiennej HTTP_USER_AGENT mamy nagłowek wejscia.

Dla przykładu wejscie internauty, który korzysta z Windowsa 6.3 oraz urzywa przeglądarki Chrome:

Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

Wejście robota Google jako urządzenia mobilnego:

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Wejścia robota Bing:

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Jak widać przeglądarka internauty informuje nasz serwer o swoich parametrach a roboty wyszukiwarek się przedstawiają włącznie z adresem strony, na której można uztskać o nich informacje (np  http://www.google.com/bot.html). Jednak by wyeliminować niechciane wejścia aż tak proste to nie jest. Po pierwsze niechciane automaty będą się przedstawiać podobnie jak internauta, po drugie mnogość systemów operacyjnych i ich wersji oraz powiązań sytem-przegladarka skutecznie utrudnia analizę.

Moje założenia blokowania dla nagłówka wejścia

Moje założenia blokowania wejścia na podstawie zmiennej HTTP_USER_AGENT:

  • blokowane są wejścia gdzie zmienna HTTP_USER_AGENT jest pusta lub nieinformacyjna (niejasna)
  • blokowane są wejścia z systemów, które które jednoznacznie wskazują na automat a z nimi nie wspóracuje strona
  • blokowane są wejścia z sytemów lub przeglądarek starych, już niewspieranych

Wyjaśnienie do punktu ostatniego:

Po pierwsze wiele softów spamujących lub wyłudzajacych treści pracuje na systemach starych by uzyskać wiekszą wydajność gdyż starty system zabiera mniej zasobów komputera i w ten sposób moze zrobic wiecej w tym samym czasie niż soft oparty o nowy, wiecej wymagający system.

Po drugie nie przekonują mnie argumeny by dostosowywać stronę do systemów starych i niewspieranych, taka operacja to dodatkowe, czasami niemałe koszty by prawidłowo wyświetkić stronę niekedy raz na kilka tysięcy wejść.

Przykład nagłówka nieinofmacyjnego:

Mozilla

Przyklad nagówka systemu strego:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 

Metoda wejścia GET i POST

Zmienna REQUEST_METHOD informuje o metodzie użytej przez przeglądarkę lub automat by uzyskać dostęp do strony. W wiekszości przypadków jest to metoda GET. Metoda POST jest częściej uzywana do wysyłania danych z formularzy. Przy odpowiedniej konstrukcji strony można wyeliminować metodę jako metodę POST jako metodę wejścia na stronę przez zastąpieniej jej odpowiednim żądaniem AJAXowym. Wtedy to zostanie sama metoda GET i jest to sytuacja najbardziej pożdądana zarówno jeżeli chodzi o bezpieczeństwo strony jak i o eliminację niepożądanych wejść. Sytuacja jest uproszczona do warunku jeżeli metoda nie jest metodą GET takie wejście jest bolowane.

Wejścia z innych stron oraz refspam

W zmiennej HTTP_REFERER zapisana jest informacja o poprzedniej stronie, którą wyświetłała przeglądarka. Najczęściej znajdziemy tu adresy stron, które po prostu likują do naszego serwisu. Jeżeli ta wartość jest faktyczą stroną która do nas linkuje aaka wartość jest jak najbardziej pożądana. 

W zmiennej HTTP_REFERER może jednak pojawić się adres strony, której nie dość że nieznamy to jeszcze znajdziemy na niej delikatnie mówiąc mierne treści. To takzwany refspam. Proceder polega na tym by narzędziom analitycznym wyszukiwarek podsunąć tę niepożądaną stronę jako stronę linkującą do nas i mającą faktyczny ruch. Może to spowodować obniżenie naszej stony nie dośc że w rankingu to jeszcze może ona zostać powiązana z traściami strony spamującej czasami o bardzo niepożądanej reputacji.

Likwidacja refspamu wymaga ciągłego monitorowania jednak monitoring taki jest konieczny by nie paśc ofiarą obniżenia w rankingu mimo odpowiednich działań w obszarze SEO i optymalizacji.

Głębsze rozpoznawanie automatów wspomagane Javascript

Przy rozpoznawaniu niechcianego automaty może nam pomóc Javascript a konkretnie specjalnie do tego celu przygotowane żądanie AJAX. Wychodząć ż założenia, że wiekszość nowoczesnych przegladarek obsługuje Javascript mozemy zaraz po wczytaniu strony wysłać żądanie AJAX jako potwierdzenie wejścia faktycznego użytkownika. Automaty natomiast takiej operacji w wiekszości wypadków nie zrobią gdyz są ustawione na odczyt danych w formaci HTML.

Pełny zestaw reguł blokujących

Zestaw reguł blokujących jest unikalny dla każdej domeny, oczywiście pewne reguły sie powtarzają jednak każdy serwis trzeba monitorować osobno. Pełny zestaw reguł zawiera od 50 do 100 (czasami wiecej) reguł. Zestaw ten zmienia się w czasie w zależności od potrzeb czasami z częstotliwością jedna reguła dzienne.

Reguły blokujące składają się z:

  • adresów IP lub zakresu adresów IP
  • reguł utworzonych ze zmiennej HTTP_USER_AGENT (np reguła dla starych systemów Mozilla/4)
  • reguł przeciwdziałających refspamowi utworzonych ze zmiennej HTTP_REFERER
  • reguł bokujących na podstawie zmiennej REQUEST_METHOD (np blokuj wszystko poza GET)
  • reguł blokujących konkretne serwery utworzonych na podstawie REMOTE_HOST
  • reguł wychwytujących jednoznaczne dane (np pusty HTTP_USER_AGENT, samo słowo Mozilla)
  • reguł skomplikowanych utworzonych z kilku powiązanych zmiennych

Blokowanie dostępu niechcianym automatom przez twardy ERROR 404

Wiekszość stron ma własną sronę błedu 404 jak na przykład ta moja strona. Jednak jak widać taka stona poinofuje automat, że strona istnieje. Poinformuje go takze o faktycznych linkach wewnętrzych a tego nie chcemy. Rozwiazaniem tego jest cos co nazwałem twardy error 404 czyli widok na którym widnieje tylko napis ERROR 404 Not found. Zasadniczą zaletą takiego postepowania jest dezinformacja, automat nie jest w stanie strwerdzić nawet czy domena jest obecnie aktywna co dopiero czy strona pod konkretnym adresem istnieje.  

Pozdrawiam Piotr Nowak



Wszystkie artykuły

Statystyki

Kategorii: 14
Podkategorii: 75
Wpisów razem: 148
Wpisów opublikowanych: 148
Wpisów oczekujacych: 0
Wpisów odrzuconych: 0
Wpisy wyświetlono: 45516 razy

Stronę odwiedzono: 156014 razy
Użytkowników online: 18

Cookies

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Pokaż wiecej