14Aug

Εύκολα αναλύσει / ψάξετε χορδές ερώτημα αναζήτησης σε μια ιστοσελίδα από τα αρχεία καταγραφής Apache με χρήση php awk και sed βοηθητικά προγράμματα γραμμής εντολών linux

6 Μέρη: Χρησιμοποιήστε awk και sed να αναλύσει Apache αρχεία καταγραφής για χρήστης πληκτρολογήσει ερωτήματα αναζήτησης Γνωστά Προβλήματα Έκδοση 2: Λιγότερο προεπεξεργασία γραμμή εντολών και επεξεργασίας php εκκρεμοτήτων Συμβουλές Κόλπα & amp?Προειδοποιήσεις Σχόλια

Αυτό HowTo θα σας δείξει πώς να εύκολα στη γραμμή εντολών του Linux αναλύσει τα αρχεία καταγραφής apache σας για να πάρετε τα δεδομένα συμβολοσειράς ερωτήματος αναζήτησης που πληκτρολογούν οι χρήστες για να βρουν την ιστοσελίδα σας σε μια μηχανή αναζήτησης.Έχω συμπεριλάβει ένα php GUI αναζήτησης, καθώς και για την εύκολη χρήση.

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια
Περιεχόμενα
  • 1 Χρησιμοποιήστε awk και sed να αναλύσει Apache αρχεία καταγραφής για χρήστης πληκτρολογήσει ερωτήματα αναζήτησης
  • 2 Γνωστά Προβλήματα
  • 3 Έκδοση 2: Λιγότερο προεπεξεργασία γραμμή εντολών και επεξεργασίας php
  • 4 εκκρεμοτήτων
  • 5 Συμβουλές Κόλπα & amp?Προειδοποιήσεις
  • 6 Σχόλια
διαφήμισης

Χρησιμοποιήστε awk και sed να αναλύσει Apache αρχεία καταγραφής για χρήστης πληκτρολογήσει ερωτήματα αναζήτησης

Εδώ είναι η πρώτη κώδικα για να γίνει η δουλειά.Σημειώστε ότι $ title2 θα πρέπει να αντικατασταθεί από αυτό που ψάχνετε, ΑΛΛΑ χώρους αντικατασταθεί με "\ +".

Για παράδειγμα: «Πώς να βρείτε ένα μεγάλο γλειφιτζούρι" θα ήταν "Πώς \ + να \ + βρει \ + α \ + μεγάλη \ + γλειφιτζούρι"

Αυτό συμβαίνει επειδή σκοπεύω να καλέσετε από μια συνάρτηση php, όπου θασυμπληρώσετε $ title2 όπως θα δούμε αργότερα.Θα μπορούσα να είχα βάλει το

egrep αργότερα, αλλά τότε δεν θα έχουν τη δυνατότητα να ψάχνουν τόσο τον τίτλο της σελίδας και ερωτήματα.αρχική εκδοχή μου έψαξε ακριβώς ερωτήματα, αλλά ήθελα μια λειτουργία που θα μπορούσε εύκολα να καλέσετε για μια συγκεκριμένη σελίδα και να δείτε όλα τα ερωτήματα που οι χρήστες έχουν πληκτρολογηθεί κατά τη διάρκεια των τελευταίων εβδομάδων.

γάτα /var/log/virtualmin/VisiHow.com_access_log |#Get Δεδομένα από το egrep ημερολογίου πρόσβασης "(q | p) =" |#use Μόνο τα αρχεία που έχουν πιθανό ερωτήματα αναζήτησης sed 's /% 22 / "/ g? S /% 20 / + / g? S / _ / + / g?' | #Do Κάποιες αλλαγές μορφοποίησης και το σημαντικότερο να αλλάξει όλους τους χώρουςή υπογραμμίζει έως + egrep -I "$ title2" | #search για $ title2 awk '{print $ 11}' | sed #extract μόνο δεδομένα αναζήτησης 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab όλα τα δεδομένα ξεκινώντας με q = sed 's / q = // g? s / + / / g? s /% 22 / "/ g? s /% 20/ / g? '|#reformat για την ανθρώπινη αναγνώσιμη μορφή cut -d "& amp?"-f 1 |#strip off άλλες παραμέτρους awk '{print $ 0 "
"}' #add
σύνδεσμο διαλείμματα γιατί σχεδιάζουμε να εξόδου σε μια ιστοσελίδα

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

== Ας δημιουργήσουμε ένα περιτύλιγμα GUI PHP

HTML για αυτό τώρα ==

Για να γίνει αυτό εύκολα τη χρήση που θέλουμε να έχουν πρόσβαση στα δεδομένα του ερωτήματος του χρήστη από μια φόρμα αναζήτησης της ιστοσελίδας.

queries.php

& lt? Title & gt? Ερωτήματα χρήστη & lt? / Title & gt?& Lt? Meta name = "robots" content = "noindex" & gt?

& lt? Φόρμα name = μέθοδος "sform" = "πάρει" & gt?Αναζήτηση Τίτλος: & lt? Εισόδου size = "80" value = "; & lt? Php echo $ _GET [ 'τίτλο']? & Gt?;"name = "τίτλο" type = "text" & gt?& Lt? Τιμή εισόδου = "Αναζήτηση" type = "submit" & gt?ΥΠΟΔΕΙΞΗ: Μπορείτε να χρησιμοποιήσετε ένα μερικό τίτλο ή ακόμα και REGEX όπως & lt? / Έντυπο & gt? "Samsung * βλάβη."

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

$ title = $ _GET [ 'τίτλο']?$ Title = preg_replace( "/ πώς να / i", "", τίτλος $)?$ Title2 = str_replace( "", "\ +", $ τίτλος)?$ Title2 = str_replace( "_", "\ +", $ title2)?

$ bigcmd = & lt? & Lt? & Lt? ΕΟΦ

egrep -i "(q | p) =" |#use Μόνο τα αρχεία που έχουν πιθανό ερωτήματα αναζήτησης sed 's /% 22 / "/ g? S /% 20 / + / g? S / _ / + / g?' | #Do Κάποιες αλλαγές μορφοποίησης και το σημαντικότερο να αλλάξει όλους τους χώρουςή υπογραμμίζει έως + egrep -i "$ title2" | #search για title2 awk '{print $ 11}' | sed #extract μόνο δεδομένα αναζήτησης 's / p = / q = / ig' | #handle yahoo p = awk -F«q = ''{ print $ 2} '| #grab όλα τα δεδομένα ξεκινώντας με q = sed' s / q = // g? s / + / / g? s /% 22 /" / g? s /% 20 // g? '|#reformat για την ανθρώπινη αναγνώσιμη μορφή cut -d "& amp?"-f 1 |#strip off άλλες παραμέτρους awk '{print $ 0 "
"}' #add
σύνδεσμο διαλείμματα γιατί σχεδιάζουμε να εξόδου σε μια ιστοσελίδα

ΕΟΦ?

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

αν "{

εκτύπωση Ψάχνοντας για" $ title "..."( $ title = "!)"?εκτύπωσης "τρέχουσα εβδομάδα. ..
"?εκτύπωσης `/var/log/virtualmin/visihow.com_access_log γάτα |#Get Δεδομένα από το αρχείο καταγραφής πρόσβασης $ bigcmd `?// Υποστηρίζουμε p = πάρα πολύ, διότι το Yahoo χρησιμοποιεί αυτό το. .. περίεργο πάπια lol για( $ i = 1? $ Θ & lt? 6? $ I ++){ print "
$ i εβδομάδα( ες) πριν
"?εκτυπώσετε `zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Δεδομένα από το αρχείο καταγραφής πρόσβασης $ bigcmd `?}}

& gt;?

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

& lt? / ΕΟΦ

Γνωστά Προβλήματα

Η grep είναι μαζεύοντας τα αρχεία με τα στοιχεία παραπομπής, ώστε να επιστρέφει τα ανεπιθύμητα αρχεία.Για παράδειγμα, αν κάποιος ψάχνει για "iPhone" και ο χρήστης ήταν σε ένα iPhone σελίδα, στη συνέχεια, κάνετε κλικ για να μεταβείτε σε μια σελίδα Samsung, αυτός ο κώδικας παίρνει το iPhone από τη παραπομπής και, επομένως, περιλαμβάνει ότι δεδομένα που δεν θα έπρεπε.Είμαι εργάζονται για την έκδοση 2, που κάνει πολλά περισσότερα και θα διορθώσετε αυτό το σφάλμα, μετακινώντας ένα μεγάλο μέρος της γραμμής εντολών προεπεξεργασία σε php.Ο κώδικας θα είναι πιο αμβλεία, αλλά θα δώσει πολύ πιο χρήσιμα και ακριβή δεδομένα.

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

Έκδοση 2: Λιγότερο προεπεξεργασία γραμμή εντολών και επεξεργασίας php

Αυτή η έκδοση έχει τα εξής πλεονεκτήματα / μειονεκτήματα:

  • Λιγότερο γραμμή εντολών προεπεξεργασία σημαίνει πια κωδικό
  • περισσότερα php σημαίνει περισσότερο έλεγχο και διαθέτει
  • Αγνοεί πολλαπλών αιτήσεων διπλούν από την ίδια IP
  • μετράει πολλαπλές αναζητήσεις, αντί εισαγωγή τους πολλές φορές
  • Εμφάνιση trending πληροφορίες, εμφανίζοντας εβδομαδιαία σύνολα
  • εξόδου είναισε κυλιόμενο divs για εύκολη προβολή των δημοφιλείς σελίδες
  • Κατάταξη σύμφωνα με μήκη ερώτημα ανήλθαν, το οποίο περίπου σημαίνει πιο δημοφιλείς σελίδες δείχνουν πρώτο
  • Ένα μικρό γρήγορο και βρώμικο javascript & amp?css να κάνουν την αυτόματη divs επεκταθεί για λεπτομερή προβολή

& lt? title & gt? χρήστη Ερωτήματα & lt? / title & gt?& Lt? Meta name = "robots" content = "noindex" & gt?

& lt? Φόρμα name = μέθοδος "sform" = "πάρει" & gt?Αναζήτηση Τίτλος:; & lt? Εισόδου size = "80" value = "& lt? Php
αν( strlen( $ _ GET [ 'τίτλο']) & gt? 0){
echo $ _GET [ 'τίτλο']?
} else{
echo "*"? & lt? br = "" type = "text" & gt?} & gt?; "name = "title" / & gt?& Lt? Τιμή εισόδου = "Αναζήτηση" type = "submit" & gt?
ΥΠΟΔΕΙΞΗ: Εισάγετε * για να δείτε τα πάντα.Μπορείτε να χρησιμοποιήσετε ένα μερικό τίτλο ή ακόμα και regex όπως "Samsung * βλάβη». & Lt? / Έντυπο & gt?

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια για τη λειτουργία

sortbylen( $ a, $ b){ strlen

επιστροφή( $ β) -strlen( $ a)?

}

$ title = $ _GET [ 'τίτλο']?$ Title = preg_replace( "/ πώς να / i", "", τίτλος $)?$ Title2 = str_replace( "", "\ +", $ τίτλος)?$ Title2 = str_replace( "_", "\ +", $ title2)?

$ bigcmd = & lt? & Lt? & Lt? ΕΟΦ

egrep -i "(q | p) =" |#use Μόνο τα αρχεία που έχουν πιθανό ερωτήματα αναζήτησης sed 's /% 22 / "/ g? S /% 20 / + / g? S / _ / + / g?' | #Do Κάποιες αλλαγές μορφοποίησης και το σημαντικότερο να αλλάξει όλους τους χώρουςή υπογραμμίζει σε awk + '{print $ 1 "" $ 7 "" $ 11}' | egrep -i "$ title2" #search για title2

ΕΟΦ?

ήταν χρήσιμες Ναι | Όχι | χρειάζομαι βοήθεια
;

if( $ title = "!"){

εκτύπωσης "Αναζήτηση" $ title "..."? για( $ i = 0? $ θ & lt? 6? $ i ++){ if( $ i == 0){ $ searchlogdata = `/var/log/virtualmin/visihow.com_access_log γάτα | $ bigcmd`?} else{ $ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`?} $ searchlogarray = εκραγεί( "\ n", $ searchlogdata)? foreach( $ searchlogarray όπως $ sdata){ $ logparts = εκραγεί( "", $ sdata)? $ ip = $ logparts [0]? $ url = $ logparts[1]? preg_match( "/( q | p) =( *).?"( \ & amp? |; $) / ", $ logparts [2], $ αγώνες)?$ Ss = urldecode( $ αγώνες [2])?$ Ss = str_replace( "+", "", $ ss)?αν( (strlen( trim( $ ss)) & gt? 3) & amp? & amp?( preg_match( "# http \: \ / \ / # i", $ ss))!){ // κρατήσει έξω url από τις αναζητήσεις ιστοσελίδααν( ($ ip = $ χείλος) ||( $ ss = $ LSS)!!){ $ χείλος = $ ip?$ LSS = $ ss?$ Ssdata [ "url $"] = "$ ss |".?}}} Uasort( $ array, «sortbylen»)?foreach( $ ssdata ως κλειδί $ = & gt? $ αξία){ $ Sarr = εκραγεί( "|", $ αξία)?foreach( $ Sarr όπως $ s){ if( strlen( $ s) & gt? 0) $ s2 [$ s] ++?} Arsort( $ s2)?foreach( $ s2 όπως $ key2 = & gt? $ Val2){ $ urldata [πλήκτρο $] [$ i] = "$ Val2: $ key2
"?.$ STOT [πλήκτρο $] [$ i] + = $ Val2?} Unset( $ s2)?} Unset( $ ssdata)?} Foreach( $ urldata όπως $ url = & gt? $ Weekdata){ print " & lt? Α target =" _ blank "href =" url $ "& gt? $ Url & lt? / A & gt?
"?$ Εβδομάδες = 0?... Foreach( $ weekdata όπως $ εβδομάδα){ print "
" $ εβδομάδες ++ "ΕΒΔΟΜΑΔΑ( ες) πριν: Σύνολο Ψάχνει =" $ STOT [$ url] [$ WK-1] "
"?.εκτύπωσης "& lt? div onmouseover =" this.style.height = 500 "onMouseOut =" this.style.height = 100 "& lt? br =" "& gt? & lt? / div & gt? style =" width: 800px? ύψος: 100px? σύνορα: 1px στερεό γκρι? υπερχείλιση: κύλιση "& gt? $ εβδομάδα"?}}}

& gt;?

Ήταν χρήσιμες αυτές;Ναι |Όχι |Χρειάζομαι βοήθεια

& lt? / ΕΟΦ

εκκρεμοτήτων

Ταξινόμηση κατά μήκος ερώτημα ως δευτερεύον είδος, με μεγαλύτερα ερωτήματα

πρώτη

αυτό είναι όλο.Θα ήθελα πολύ να ακούσω τις εμπειρίες σας με αυτόν τον κωδικό ή προτάσεις για βελτίωση.

Συμβουλές Κόλπα & amp?Προειδοποιήσεις

  • Σημείωση: Υποστηρίζω p =, καθώς και η τυπική q = επειδή το Yahoo είναι το περίεργο πάπια είναι χρησιμοποιεί p =
  • Έκδοση 2 php είναι πιο περίπλοκη και ήμουν κωδικοποίησης γρήγορα, ώστε κάποιες από τις μεταβλητέςονόματα επιλέχθηκαν φτωχά.σας παρακαλώ να μην παραπονιούνται και δωρεάν κωδικό του.Αλλά αν θέλετε να το φτιάξω και να τεκμηριώσει αυτό και να το προσθέσετε στο wiki ως έκδοση 3 που θα είναι φανταστική:) καταβάλει προς τα εμπρός!
  • Εάν έχετε προβλήματα με οποιοδήποτε από αυτά τα βήματα, να θέσω ένα ερώτημα για περισσότερη βοήθεια, ή να δημοσιεύσετε στο τμήμα σχόλιο παρακάτω.

Σχόλια

VisiHow καλωσορίζει όλα τα σχόλια .Εάν δεν θέλετε να είναι ανώνυμα, εγγραφείτε ή συνδεθείτε. Είναι δωρεάν.




Daniel
Προτεινόμενα Συντάκτης
69 άρθρα Ξεκίνησε
2601 άρθρο Επεξεργάζεται
24.290 Πόντοι
Daniel είναι ένα χαρακτηρισμένο συγγραφέας με VisiHow.Daniel έχει επιτύχει το επίπεδο της «υπολοχαγός» με 24.290 πόντους.Ο Daniel ξεκίνησε 69 άρθρα και έκανε 2.601 επεξεργασίες άρθρο.17.578 άνθρωποι έχουν διαβάσει τις εισφορές του άρθρου Δανιήλ.
Ρωτήστε τον Daniel
Daniel : Γεια σου, το όνομά μου είναι Daniel.
Daniel : Μπορώ να σας βοηθήσει με το πρόβλημά σας για το "Εύκολα αναλύσει / ψάξετε χορδές ερώτημα αναζήτησης μιας ιστοσελίδας από Apache κορμούς χρησιμοποιώντας php awk και sed βοηθητικά προγράμματα linux γραμμή εντολών";
Αποδοχή