Comment contourner le « not provided » de Google

Notez cet article

Cela fait maintenant plus d’un an que Google a choisi de dissimuler les mots-clés tapés par un visiteur. Auparavant, ces requêtes étaient une très précieuse information surtout pour ceux qui travaillent beaucoup leur longue traîne, exactement comme moi et qui en plus en font des outils pour améliorer leur trafic. C’est d’autant plus ennuyeux que ces données correctement exploitées permettent de créer des sites qui marchent.

Alors, dans ces moments de doute, je choisi de remettre en question mes zakisocio et ce-fabuleux-modèle-social-que-tout-le-monde-nous-envie-mais-que-personne-ne-copie certitudes et de trouver une solution à cet épineux problème.

Tout d’abord, je choisi d’analyser ces fameuses requêtes « not provided » pour voir ce qu’il est possible d’en faire ou du moins essayer de comprendre leur fonctionnement. Car initialement, je suis parti sur deux hypothèses: dans une solution idéale, j’aspire à ce que Google continue de passer les mots clés dans les URL de recherche mais sous une forme codée. Je peux alors non pas tenter de les décoder, n’étant pas prétentieux à ce point, mais construire un dictionnaire de correspondance avec d’un côté, le mot clé et de l’autre la chaîne codée. Dans une seconde hypothèse, j’imagine que Google garde toutes ces informations chez lui et ne passe que quelques jetons ou autres clés complétement inutilisables. Voici donc ce genre de requête qui vient nous gâcher la vie:

http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CFoQFjAD&url=http%3A%2 %2Fwww.pagasa.net%2F&ei=uXUWUdfTGeWc0AXpnoGwAw&usg=AFQjCNHq94CK7d6ciGvazV93Cn H_jQxDmQ&sig2=ffHi4_ZcJvtsDMgpRkupVQ

Il y a trois variables qui nous intéressent: ei, sig2 et usg. Les deux premières sont des jetons qui changent à chaque requête et j’ai découvert que la variable usg est tout simplement l’identificateur de l’URL. Ce qui vient donc confirmer la terrible sanction: Google stocke ses données chez lui et il n’est donc plus possible d’exploiter les mots-clés, flute alors !

A terme, cela signifie donc la mort clinique de mon plugin XLT et aussi des baisses de performances sur mes autres techniques de longue traine. Mais c’est sans compter sur les observations que j’ai pu effectuer en débroussaillant précisément mes statistiques Web.

Tous les autres moteurs continuent d’afficher les mots clés dans les URL référentes.

Alors certes, Google représente une bonne majorité des requêtes, du moins sur le marché Francophone avec dans mon cas 85% de part; mais sur le marché international, ces requêtes chutent à 70%. Si je fais donc le calcul, je peux pour le moment compléter mes informations avec les requêtes des autres moteurs pour arriver à quelque chose de quasiment complet. J’ai également observé que ces requêtes étaient très proches de celles de Google, donc je n’y perd pas en qualité. J’ajoute aussi que j’ai été surpris du nombre de moteurs alternatifs. Après quelques recherches, il s’agit en fait la plupart du temps de toolbars installées dans les navigateurs, avec ou sans la permission des utilisateurs :-)

Si Google venait à supprimer définitivement les mots-clés, ce ne serait toujours pas très grave: il me faudrait juste un peu plus de temps pour collecter les données, et puis des toolbars et d’autres moteurs de recherche, il en apparait de nouveaux très régulièrement.

Je termine cet article en vous proposant la petite fonction PHP suivante qui extrait les mots-clés des URL de n’importe quel moteur. Elle sera facilement incorporable et modifiable à souhait pour celui qui a un minimum de connaissances en PHP. J’utilise cette fonction dans plusieurs de mes programmes.


<php
function parse_se() {
  $mref=$_SERVER["HTTP_REFERER"];
  $mk = "";
  $mse = array();
  $mse[0][0] = ".google.";
  $mse[0][1] = "q=";
  $mse[1][0] = ".search.yahoo.";
  $mse[1][1] = "p=";
  $mse[2][0] = ".voila.fr";
  $mse[2][1] = "rdata=";
  $mse[3][0] = ".bing.fr";
  $mse[3][1] = "q=";
  $mse[3][0] = ".ask.com";
  $mse[3][1] = "q=";

  $i = 0;
  $ms = "";
  $mq = "";
  foreach ($mse as $v1) {
    $q = strstr($mref,$mse[$i][0]);
    if(strlen($q)) {
      $ms = $mse[$i][0];
      $mq = $mse[$i][1];
      break;
    }
    $i++;
  }
 if(strlen($ms)){
    $q = strstr($mref,"&".$mq);
    if(strlen($q)) {
      $tab = split("&".$mq,$mref);
      $mk = $tab[1];
      $tab =  split("&",$mk);
      $mk = $tab[0];
      if (strlen($mk))
        $mk = urldecode($mk);
      else
        $mk = "-1";
    }
    else {
      $q = strstr($mref,"?".$mq);
      if(strlen($q)) {
        $tab = split("\?".$mq,$mref);
        $mk = $tab[1];
        $tab =  split("&",$mk);
        $mk = $tab[0];
        $mk = urldecode($mk);
      }
    }
  }
  return $mk
}
?>

La fonction retourne le mot-clé, -1 en cas de « not provided » ou rien s’il n’y a rien.

4 commentaires sur “Comment contourner le « not provided » de Google

  1. Excellente technique, mais les datas de mots clés en claires sont toujours présentes sur les outils de webanalytique, alors pourquoi faire un script pour les extraire ? Comment utilises tu ces datas ?

  2. ça peut etre utile pour les tools maison, mais sinon nous pouvons aussi parametrer google analytics pour ne pas avoir de not provided.
    Apres sur semrush il y a aussi le top 20 des mots intéressants.

Laisser un commentaire