Extraire les recherches Google des logs Apache
Aujourd’hui, c’est un billet de distraction pour geeks.
Lister les recherches
Si vous utilisez Apache, voici une commande qui liste dans l’ordre alphabétique les recherches Google ayant permis aux internautes d’arriver sur vos sites :
php -r "echo urldecode(\\"`zgrep 'http://www\\.google\\.\\w*/' /var/log/apache2/*|grep -o '[?&]q=[^&"]*'|cut -c4-`\\");"|sort|uniq -c
EDIT 25/06/2011 : cette commande semble échouer lorsque la liste des recherches est trop longue, celle donnée à la fin du billet est donc à préférer.
(pour les autres moteurs de recherche, il faudrait s’inspirer de ce qu’ont fait les développeurs de Piwik)
Voici à quoi ressemble le résultat de la commande :
1 ubtunu tiny tiny rss 5 ubuntu 1 ubuntu 10.04 change startup screen 1 ubuntu 10.04 configurer compte messagerie hotmail dans couriel 3 ubuntu 10.04 cryptage 1 ubuntu 10.04 écran grub invisible au démarrage 2 ubuntu 10.04 ecran noir nvidia 1 ubuntu 10.04 et video nvidia 1 ubuntu 10.04 grub nvidia 1 ubuntu 10.04 grub-pc couleur 4 ubuntu 10.04 installation partition home chiffrée
Le texte correspond aux recherches, le numéro devant indique le nombre de fois où elles ont été effectuées.
Analyse
Billets les plus recherchés
Sans conteste, les deux billets qui amènent le plus d’internautes par Google concernent pluzz et apk. Et parfois ça ne doit pas les aider beaucoup : certains recherchent par exemple « pluzz plus belle la vie » dans Google à partir d’Internet Explorer, je ne suis pas sûr que mon script shell pour pluzz réponde à leurs attentes.
Recherches insolites
Dans la liste, il y a forcément des recherches drôles ou étranges. En voici quelques unes que j’ai trouvées dans mes logs :
- « clitoris.apk » : il y a vraiment une application pour tout !
- « comment afficher 350 sous linux » : c’est si différent que sur les autres systèmes d’exploitation ?
- « comment on invente une machine pour voler à usage individuelle » : dérober ou s’envoler ?
- « du-ble-plein-les-poches es ce une arnaque » : sans doute…
- « est-il possible de prelever de l’argent sans que ça se voit sur le compte » : je veux rester discret…
- « l’ecran d’un ordinateur portable est de 14,1 pouce avec 1024*768 pixel quelle est la taille de l’ecran N*H en cm ? » : le moteur de recherche, j’en suis sûr, va comprendre ma question, faire le calcul, et me répondre…
- « logiciel adopy » : comme ça se prononce !
- « pour quel raison on doit interdire le zoo » : les animaux c’est dangereux !
Il y a certains sites qui s’amusent à référencer ce genre de recherches, par exemple Comment devenir un ninja gratuitement ?
N’hésitez pas à poster les vôtres…
Challenge
J’ai essayé d’écrire la commande la plus courte possible. Je n’ai pas réussi à faire moins de 129 caractères sans perdre d’information ou prendre plus de risque (par exemple on pourrait remplacer apache2
par a*2
, mais c’est plus risqué).
Par contre, cette commande ne fonctionne pas correctement si l’on rajoute |less
(on ne peut pas se déplacer avec haut et bas), je ne sais pas trop pourquoi ni comment le résoudre (si certains ont une idée).
Une autre commande, sans php
(en 141 caractères), ne pose pas ce problème :
zgrep 'http://www\\.google\\.\\w*/' /var/log/apache2/*|grep -o '[?&]q=[^&"]*'|cut -c4-|echo -e $(sed 's/$/\\\\n/;s/+/ /g;s/%/\\\\x/g')|sort|uniq -c
Si vous avez des astuces pour faire mieux que 129 (ou 141), ne vous gênez pas
Scripts
D’autres ont fait des scripts plus complets, qui permettent de récupérer des informations supplémentaires, par exemple la page sur laquelle l’internaute est arrivé en effectuant cette recherche…