Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> unikalni odwiedzający stronę, czyli o tym jak pozbyć się robotów ?
mkoszar
post 17.01.2021, 09:39:04
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

Ostrzeżenie: (0%)
-----


Sprawa dość ciekawa. Na stronie index i podstronach umieściłem kawałek takiego kodu:

  1. $ip = $_SERVER["REMOTE_ADDR"];
  2. $zapytanie = "INSERT INTO `licznik` (`id`, `ip`, `data`, `strona`) VALUES (NULL, '$ip', NOW(), 'index')";
  3. mysqli_query($db, $zapytanie);


Rejestruję tym samym zdarzenie otwarcia/pobrania danej strony/podstrony.
Wszystko fajnie, ale w liście dostaje zdarzenia z IP pochodzące od Googolebot, OVH, SAS, ColoCrossing-USA, Amazon itp. Takie dane są nie istotne.

Wymyśliłem, że zrobię tablicę, bo cześć tych IP się cyklicznie powtarza a jak dojdą nowe to się douzupełni tablicę i jako tako będzie

  1. $lista_ip=array("54.36.149.96"=>"OVH SAS-FRANCJA","66.249.79.110"=>"Googlebot-USA","66.249.79.106"=>"Googlebot-USA","107.172.228.78"=>"ColoCrossing-USA");


I teraz w liście którą pobieram z bazy

  1. while ($row_ip = mysqli_fetch_row($result_ip)) {
  2. /* row_ip[1] = IP*/
  3. /* row_ip[2] = data*/
  4. /* row_ip[3] = strona*/}


chciałbym sprawdzić czy zmienna np. $ip_z_bazy = $row[1];
znajduje się w tablicy $lista_ip=array(...);
a jeśli tak to zapisz jako np. 66.249.79.110_Googlebot-USA
no a jak nie występuje to po prostu 52.161.150.183 i tyle...

tym samym po jakimś czasie wyfiltruje te wejścia, które nie będę brał pod uwagę jako informacja o wejściach przez żywych ludzi smile.gif

Jest taka funkcja
array_values() returns all the values from the array and indexes the array numerically.
tylko że ona mi znowu poda tablicę ze wszystkimi wartościami kluczy - chyba nie przydatne

in_array($row_ip[1],$lista_ip,) Returns true if needle is found in the array, false otherwise.
też nie specjalnie, bo uzyskam jedynie info, że tak występuje w tablicy albo nie.

Może jest jakiś inny sposób ? sekret.gif
Go to the top of the page
+Quote Post
trueblue
post 17.01.2021, 09:52:48
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Chcesz przy wyświetlaniu danego IP doklejać informację?

  1. echo $row_ip[1];
  2. if(isset($lista_ip[$row_ip[1]]){
  3. echo $lista_ip[$row_ip[1]];
  4. }


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 17.01.2021, 10:05:32
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Takich IP będą TYSIĄCE, które kilka razy dziennie trzeba będzie dodawać do wykluczenia. IP to ostateczność.

Jeśli chcesz się pozbyć robotów to identyfikuj je po imieniu. Zazwyczaj roboty się przedstawiają, jednak korzystają z SETEK adresów IP, zamęczysz się na śmierć po IP.

Przeglądarka też się przedstawia, można tez po przeglądarce logować odwiedziny.


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
mkoszar
post 17.01.2021, 10:06:06
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 17.01.2021, 09:52:48 ) *
Chcesz przy wyświetlaniu danego IP doklejać informację?

  1. echo $row_ip[1];
  2. if(isset($lista_ip[$row_ip[1]]){
  3. echo $lista_ip[$row_ip[1]];
  4. }


DOKŁADNIE TAK exclamation.gif!



po modyfikacji, ale to to samo w zasadzie

  1. if(isset($lista_ip[$row_ip[1]])){
  2. $xxx = $lista_ip[$row_ip[1]];
  3. } else {$xxx = '';}

Go to the top of the page
+Quote Post
dublinka
post 17.01.2021, 10:12:18
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Troche zle do tego podeszles. Sprawdzaj
  1. $_SERVER ['HTTP_USER_AGENT'];

Jest lista robotow. Porownaj liste z tym co poboerasz i wtedy zapisuj do bazy.

Ten post edytował dublinka 17.01.2021, 10:13:42


--------------------
Go to the top of the page
+Quote Post
mkoszar
post 17.01.2021, 10:20:09
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

Ostrzeżenie: (0%)
-----


Cytat(dublinka @ 17.01.2021, 10:12:18 ) *
Troche zle do tego podeszles. Sprawdzaj
  1. $_SERVER ['HTTP_USER_AGENT'];

Jest lista robotow. Porownaj liste z tym co poboerasz i wtedy zapisuj do bazy.


O ! sprawdzę to za moment.
Ale skąd się problem pojawił. Miałem na 000webhost darmowy serwer i już pierwszego dnia zablokowali z powodu tego że miałem 100 unikalnych wejść. i blokada.
Unikalnych .. mhm, chyba robotów . Ale regulamin to regulamin i zablokowali.
A jak już zbieram te dane to niech coś z tego też wiem. Zaraz obczaje co zwraca $_SERVER ['HTTP_USER_AGENT'];
Go to the top of the page
+Quote Post
dublinka
post 17.01.2021, 10:22:56
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Chocby stad przyklady

https://stackoverflow.com/questions/422969/...e-bots-with-php


--------------------
Go to the top of the page
+Quote Post
mkoszar
post 17.01.2021, 11:08:18
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

Ostrzeżenie: (0%)
-----


a tak z innej beczki: To chyba dobrze, że te Googleboty i inne odwiedzają stronę. Przy okazji indeksują zawartość. Pewnie z pozycjonowaniem to niema nic wspólnego w wyszukiwaniach, bo to inna bajka..
Tutaj chodzi o to, żeby "wyłuskać" unikalnych odwiedzających.

Wrzuciłem nową kolumnę do bazy i zobaczymy co się stanie. To już jest dużo informacji smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 17.01.2021, 19:02:59
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


https://github.com/JayBizzle/Crawler-Detect
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 18:32