14Aug

Lako analizirati / traži se web stranica upit pretraživanja žice od Apache trupaca pomoću php awk i sed Linux alata naredbenog retka

click fraud protection
6 dijelova: Koristite awk i sed analizirati Apache log datoteke za korisničke upisali upite pretraživanja poznatih problema Verzija 2: Manje naredbenog retka predobradi i više obrade php ToDo Savjet & amp;Upozorenja Komentari

Ovaj KAKO će vam pokazati kako se lako na Linux naredbeni redak analizirati Apache log datoteke dobiti za pretraživanje string upita podatke koje korisnici upisati kako bi pronašli Vaše web stranice u tražilicu.Imam uključen php pretragu GUI, kao i za jednostavno korištenje.

Je li to bila korisna?Da |Ne |Trebam pomoć
sadržaje
  • 1 Koristite awk i sed analizirati Apache log datoteke za korisnika upisali upite pretraživanja
  • 2 poznatih problema
  • 3 Verzija 2: Manje naredbenog retka predobrada i obrada php
  • 4 ToDo
  • 5 Savjet & amp;Upozorenja
  • 6 Komentari
Ad

Koristite awk i sed analizirati Apache log datoteke za korisnika upisali upite pretraživanja

Ovdje je sirovo kod da biste dobili posao ispunjavanja.Imajte na umu da $ TITLE2 treba zamijeniti ono što tražite ALI prostori zamjenjuju se s "\ +".

instagram viewer

Na primjer: "Kako pronaći veliki lollypop" biti "Kako \ + na \ + pronašli \ + A \ + veliki \ + lollypop"

To je zato što sam planiraju pozvati iz funkcije PHP, gdje ja hoćunaseliti $ TITLE2 kao što ćete vidjeti kasnije.Mogao sam staviti egrep

kasnije, ali onda nećete imati mogućnost traženja kako naslov stranice i upite.Moja izvorna verzija samo tražili upita, ali ja sam htjela neku funkciju sam lako mogao pozvati na određenu stranicu i vidjeti sve upite koje korisnici imaju te upisali u proteklih nekoliko tjedana.

mačka /var/log/virtualmin/VisiHow.com_access_log |#Get Podaci iz pristupa log egrep "(q | p) =" |#Use Samo zapisi koji vjerojatno imaju upite za pretraživanje sed 's /% 22 / "/ g; s /% 20 / + / g; a / _ / + / g;' | #Do neke promjene oblikovanja i što je najvažnije promijeniti sve prostoreili naglašava da + egrep -I "$ TITLE2" | #search za $ TITLE2 awk '{print $ 11}' | sed #extract samo podaci za pretraživanje 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab sve podatke koje počinju s Q = sed 's / q = // g, s / + / / g, s /% 22 / "/ g; s /% 20/ / g; '|#reformat ljudskom čitljivom obliku rezanog D "& amp;"f 1 |#strip off ostali parametri awk '{print $ 0 "
"}' #add
vezi pauze jer mi planiramo izlaz na web-stranicu

Je li to bilo korisno?Da |Ne |Trebam pomoć

== Idemo stvoriti PHP

HTML GUI omot za ovo sada ==

Kako bi se ova lako korištenje želimo pristupiti podacima upite korisnika iz obrasca za pretraživanje web stranica.

queries.php

& lt; title & gt; korisničkih upita & lt; / naslov & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; oblik name = metoda "sform" = "dobiti" & gt;Traži Naslov: & lt; size = "80" unos vrijednosti = "? & Lt; php echo _GET $ [ 'naslov']; & gt;?"name = "naslov" type = "text" & gt;& Lt; ulazna vrijednost = "Traži" type = "submit" & gt;SAVJET: Možete koristiti djelomični naslov ili čak regex kao & lt; / forma & gt; "Samsunga * štetu."

Je li to bila korisna?Da |Ne |Trebam pomoć

$ naslov = $ _GET [ 'naslov'];$ Title = preg_replace( "/ kako / i", "", $ naslov);$ TITLE2 = str_replace( "", "\ +", naslov $);$ TITLE2 = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(q | p) =" |#Use Samo zapisi koji vjerojatno imaju upite za pretraživanje sed 's /% 22 / "/ g; s /% 20 / + / g; a / _ / + / g;' | #Do neke promjene oblikovanja i što je najvažnije promijeniti sve prostoreili naglašava da + egrep -i "$ TITLE2" | #search za TITLE2 awk '{print $ 11}' | #extract samo podaci za pretraživanje sed 's / p = / q = / ig' | #handle yahoo p = awk-F'q =' '{print $ 2}' | #grab sve podatke koje počinju s Q = sed 's / q = // g, s / + / / g, s /% 22 / "/ g; s /% 20 // g; '|#reformat ljudskom čitljivom obliku rezanog D "& amp;"f 1 |#strip off ostali parametri awk '{print $ 0 "
"}' #add
vezi pauze jer planiraju izlaz na web-stranici

EOF;

Je li to bila korisna?Da |Ne |Trebam pomoć

ako "{

print potrazi za" $ naslov "..."( $ title = "!)";print "tekući tjedan. ..
";print `mačka /var/log/virtualmin/visihow.com_access_log |#Get Podaci iz pristupa log $ bigcmd `;// Podržavamo p = previše, jer yahoo koristi da. .. čudno patka lol za( $ i = 1; I. $ & lt; 6; $ i ++){ print "
$ i tjedan( s) ago
";print `zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Podaci iz pristupa log $ bigcmd `;}

} & gt;

Je li to bila korisna?Da |Ne |Trebam pomoć

& lt; / EOF

poznatih problema

grep je branje gore evidencije s podacima za preporuku pa se vraća neželjene zapisa.Na primjer, ako netko traži "iPhone", a korisnik je na stranici iPhone onda kliknuo da ide na Samsung stranicu, ovaj broj pokupi iPhone od preporuka i na taj način uključuje da su podaci koji se ne bi trebali.Radim na verziji 2, da se puno više i da će popraviti ovaj bug pomicanjem mnogo naredbenog retka predobradi u php.Kod će biti tup, ali će dati puno više korisnih i točnih podataka.

Je li to bila korisna?Da |Ne |Trebam pomoć

Verzija 2: Manje naredbenog retka predobrada i php obradu

Ova verzija ima sljedeće prednosti / nedostatke:

  • Manje naredbenog retka predobrada znači više kod
  • više php znači više kontrole i mogućnosti
  • zanemaruju više dvostrukih zahtjeva s iste IP
  • bilježi više pretraživanja umjesto navodeći ih više puta
  • Show Trending informacija prikazivanjem tjedni zbrojeve
  • izlaz jeu kretati divova za jednostavno pregledavanje popularne stranice
  • razvrstani prema dužinama upita iznosio, što otprilike znači više popularan stranice prikazuju prve
  • malo brze i prljave javascript & amp;CSS da bi DIV auto proširiti za detaljniji gledanje

& lt; title & gt; korisničkih upita & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; oblik name = metoda "sform" = "dobiti" & gt;Traži Naslov: & lt; size = "80" unos vrijednosti = "& lt; php
if( strlen( $ _ GET [ 'naslov']) & gt; 0){
echo $ _GET [ 'naslov'];
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "name = "naslov" / & gt;& Lt; ulazna vrijednost = "Traži" type = "submit" & gt;
SAVJET: Unesite * da biste vidjeli sve.Možete koristiti djelomični naslov ili čak regex poput "Samsunga * šteta". & Lt; / forma & gt;

Je li to bila korisna?Da |Ne |Trebam pomoć

funkcija sortbylen( $ a, $ b){

povratak strlen( $ b) -strlen( $ a);

}

$ naslov = $ _GET [ 'naslov'];$ Title = preg_replace( "/ kako / i", "", $ naslov);$ TITLE2 = str_replace( "", "\ +", naslov $);$ TITLE2 = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(q | p) =" |#Use Samo zapisi koji vjerojatno imaju upite za pretraživanje sed 's /% 22 / "/ g; s /% 20 / + / g; a / _ / + / g;' | #Do neke promjene oblikovanja i što je najvažnije promijeniti sve prostoreili naglašava da + awk '{ispisati $ 1 "" $ 7 "" 11 $}' | egrep -i "TITLE2 $" #search za TITLE2

EOF;

Je li to bilo korisno da | Ne | trebam pomoć
?

if( $ title = "!"){

print "U potrazi za" $ nazivom "..."; za( $ i = 0;: i $ & lt; 6; $ i ++){ if( $ i == 0){ searchlogdata $ = 'mačka /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ searchlogdata $ =' zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | bigcmd` $;} $ searchlogarray = eksplodirati( "\ n", $ searchlogdata), foreach( $ searchlogarray kao sdata $){ $ logparts = eksplodiraju( "", $ sdata), $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( *).?"( \ & amp;? | $) / ", $ logparts [2], $ utakmice);$ Ss = urldecode( $ utakmice [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( trim( $ ss)) & gt; 3) & amp; & amp;( preg_match( "# http \: \ / \ / # i", $ ss))!){ // držati izvan url iz pretraživanja web-mjestaif( ($ ip = $ usna) ||( $ P = $ LSS)!){ $ usne = $ ip;$ LSS = $ ss;$ Ssdata [ "$ url"] = "$ ss |.";}}} Uasort( $ array "sortbylen ');foreach( $ ssdata kao $ key = & gt; $ vrijednost){ $ Sarr = eksplodirati( "|", $ vrijednost);foreach( $ Sarr kao $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( s2 $ kao $ ključ2 = & gt; VAL2 $){ $ urldata [$ ključ] [$ i] = "$ VAL2: $ ključ2
.";$ STOT [$ ključ] [$ i] + = $ VAL2;} Postavljeno( $ s2);} Postavljeno( $ ssdata);} Foreach( $ urldata kao $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";$ Tjedno = 0;... Foreach( $ weekdata kao $ tjedno){ print "
" $ tjedno ++ "tjedan( s) ago: Ukupno pretraživanja =" $ STOT [$ url] [$ tjedno-1] "
.";print "& lt; div onmouseover =" this.style.height = 500 "onmouseout =" this.style.height = 100 "& lt; br =" "& gt; & lt; / div & gt; style =" width: 800px; height: 100piks; border: 1 piksela čvrsta siva; overflow: dođite '& gt; $ tjedan ";}}

} & gt;

Je li to bila korisna?Da |Ne |Trebam pomoć

& lt; / EOF

ToDo

Sortiraj po dužini upita kao sekundarni vrste, s duljim upitima prvi

to je to.Volio bih čuti vaša iskustva s ovim kodom ili prijedloge za poboljšanje.

Savjet & amp;Upozorenja

  • Napomena: Podržavam p =, kao i standardni q = zato Yahoo tome što je čudno patka je koristi p =
  • Verzija 2 php je složeniji, a ja sam kodiranja brzo tako da neke od varijabliimena su izabrani loše.nemojte se žaliti u obliku slobodne koda.Ali, ako želite to popraviti i dokumentirati ga i dodati ga u wiki kao verzija 3 koja bi bila fantastična:) Pay It Forward!
  • Ako imate problema sa bilo kojim od ovih koraka, postavite pitanje za dodatnu pomoć, ili post u komentare ispod odjeljka.

Komentari

VisiHow pozdravlja sve komentare .Ako ne želite biti anonimni, registrirajte se ili prijavite. To je besplatno.




Daniel
Istaknuti autor
69 članaka rada
2,601 Članak uređivanja
24,290 bodova
Daniel je istaknuta pisac s VisiHow,Daniel je postigao razinu "časnik" sa 24,290 bodova.Daniel je počeo 69 članaka i napravio 2,601 članak uređivanja.17,578 ljudi su pročitali članak doprinose Danielovu.
Postavi Daniel
Daniel : Bok, moje ime je Daniel.
Daniel : Mogu li vam pomoći s vašim problemom o "Lako analizirati / traženje web-stranice o upitima za pretraživanje žice od Apache trupaca pomoću php awk i sed Linux naredbenog retka komunalije"?
Prihvati