Attention, ce blog est en mode archive. Il n'est plus alimenté et consultable en lecture seulement. Il se peut que certaines informations ne soient plus à jour.
Si vous souhaitez continuer à me suivre, je continuerai à bloguer d'ici quelques semaines sur le blog de SEObserver.

Géolocaliser ses SERPs à l’échelle ultra-locale

by 512banque on 21 octobre 2013

D’abord aux USA, puis plus récemment et progressivement en France, Google Venice a définitivement changé l’aspect des SERPs. Sur de plus en plus de mots-clés, parfois très génériques et de manière parfois pas très pertinente, Google propose des résultats géolocalisés.

Pour modifier cette géolocalisation, on peut aller tout simplement dans « Outils de recherche » puis cliquer sur la ville en haut à droite.

Géolocaliser ses recherches sur Google

Géolocaliser ses recherches sur Google

Mais cette démarche est longue et fastidieuse (2 clics), et pas universelle, surtout si notre souci est de scraper des données, pour pouvoir faire des tris, des comparaisons et des vérifications de rankings en passant en argument la géolocalisation de l’utilisateur.

Ou tout simplement pour pouvoir communiquer à son client des liens directs vers des versions différentes des pages de ranking, géolocalisées à l’échelle de la ville. Idem, les suggests nous intéressent et depuis peu, elles changent elles aussi en fonction de la géolocalisation.

Géolocalisation des Suggests à Paris de la requête "Restaurant"

Géolocalisation des Suggests à Paris de la requête "Restaurant"

Géolocalisation des Suggests à Chambéry de la requête "Restaurant"

Géolocalisation des Suggests à Chambéry de la requête "Restaurant"

Si les paramètres hl (langue) ou gl (géolocalisation au niveau du pays) sont bien connus, il n’existait à ma connaissance aucune méthode permettant de géolocaliser à l’échelle de la ville ou du département, en passant directement un argument dans l’url. Personnellement, je devais aller faire la manipulation via « Outil de recherche », citée précédemment. Mais c’était sans compter la révélation de ce soir.

Comme d’habitude, c’est du côté d’Adwords qu’il faut se tourner pour espérer avoir un peu d’informations de la part de Google. En effet, les annonceurs aiment pouvoir voir à quoi vont ressembler leurs pubs sur les pages de résultat géolocalisées. Il fallait bien les contenter, et Google leur a proposé un outil en ligne pour afficher l’aperçu des SERPs pour un lieu donné.

Sur l’outil de diagnostic et de prévisualisation des annonces, Google nous permet de générer des requêtes en personnalisant l’affichage (mobile ou desktop) et la géolocalisation des requêtes, en modifiant le champ « zone ».

Outil de Prévisualisation et diagnostic des annonces

Outil de Prévisualisation et diagnostic des annonces

Vous rentrez un mot-clé et modifiez les différentes options, puis obtenez un résultat de type preview, tout à fait sexy avec des vrais morceaux de Wordart dedans.

Ce résultat est chargé dans une iframe en-dessous. Donc deux options :

  • soit examiner le DOM et récupérer le src de l’iframe
  • soit surveiller nos en-têtes réseau et récupérer le premier GET qui nous passe sous la main après le POST

Ce qui nous donne, pour la requête « randonnée » géolocalisée un peu partout, les urls suivantes (j’ai mis en gras les arguments qui changent d’une requête à l’autre) :

  • Le Creusot : https://www.google.fr/search?ie=UTF-8&oe=UTF-8&hl=fr&q=randonn%C3%A9e&adtest=on&ip=0.0.0.0&noj=1&nomo=1&nota=1&igu=1 &adsdiag=-1275564587398859936&tci=g:1005852,p:30000&glp=1&uule=w+CAIQICIaTGUgQ3JldXNvdCxCdXJndW5keSxGcmFuY2U
  • Chambéry : https://www.google.fr/search?ie=UTF-8&oe=UTF-8&hl=fr&q=randonn%C3%A9e&adtest=on&ip=0.0.0.0&noj=1&nomo=1&nota=1&igu=1 &adsdiag=4778293742799311731&tci=g:1006388,p:30000&glp=1&uule=w+CAIQICIbQ2hhbWJlcnksUmhvbmUtQWxwZXMsRnJhbmNl
  • Aix-en-Provence : https://www.google.fr/search?ie=UTF-8&oe=UTF-8&hl=fr&q=randonn%C3%A9e&adtest=on&ip=0.0.0.0&noj=1&nomo=1&nota=1&igu=1 &adsdiag=6370497183717865163&tci=g:1006327,p:30000&glp=1&uule=w+CAIQICIxQWl4LWVuLVByb3ZlbmNlLFByb3ZlbmNlLUFscGVzLUNvdGUgZCdBenVyLEZyYW5jZQ

On a donc 3 paramètres qui changent : adsdiag, tci et uule. La logique voudrait qu’adsdiag soit une espèce de token lié à la génération d’un test de pub (« ads diagnostic ? »), que tci contienne le paramètre de géolocalisation ; en l’occurence, le numéro suivant g: est exactement le même que celui dans le lien de la liste des codes géographiques dont je vais vous parler dans quelques lignes, et que uule soit un énième paramètre wtf qu’on ne comprend pas.

C’est faux.

En faisant mes tests, j’ai supprimé les différents paramètres dans l’url et ai constaté que Google se préoccupait uniquement du uule pour géolocaliser. Après une recherche google sur « uule » (c’est drôle non ? Chercher sur google des infos sur un paramètre de recherche google), je suis tombé sur un article d’un voisin qui expliquait qu’il trouvait ce paramètre de géolocalisation dans les pubs android, et qu’il s’agissait en fait d’un résultat d’encryption AES.

Là, petit coup de flip : et si cette chaîne dépendait également de l’utilisateur qui est logué ? J’ai eu peur qu’il s’agisse d’un mélange d’une data géoloc + utilisateur en cours ? Ça réduirait à néant tous mes espoirs d’un paramètre universel et d’une seule et même requête GET pour géolocaliser par ville.

Petit coup de fil sur Skype à RaphSEO pour qu’il fasse la même démarche que moi et qu’il me sorte la valeur de ce fameux uule : bingo, la valeur de son paramètre est exactement identique à la mienne.

Big deal !

Parfait. Nous avons donc trouvé un paramètre uule qui permet de géolocaliser nos recherches à l’échelle de la ville, mais nous sommes tombés dessus un peu par hasard. Il nous faudrait donc une liste. Quelle est la liste exhaustive de tous les lieux possibles, si je suis – par exemple – un gros annonceur et que je veux tester l’affichage de mes pubs partout et que j’utilise mon API Google Adwords, et où la trouver ?

Pas d’inquiétude mon good buddy, sur ce lien, vous pourrez trouver la liste des codes de géolocalisation utilisés dans adwords. Le fichier total à télécharger fait quand même 3,5 Mo, et il y a à l’heure où j’écris ces lignes 78618 lieux différents dans le monde entier. Une chose très instructive est de regarder à quelle échelle la géolocalisation peut se faire :

  • Airport
  • Autonomous Community (Espagne)
  • Borough (Mexique)
  • Canton (Suisse)
  • City
  • Congressional District (USA)
  • Country
  • County
  • Departement (France, cocorico)
  • DMA Region (USA, zone de « media market »)
  • Governorate (Egypte)
  • Municipality (Bulgarie)
  • Okrug (Russie)
  • Postal code (USA, Canada, Grande Bretagne et Allemagne)
  • Prefecture (Japon)
  • Province
  • Region
  • State
  • Territory (Canada)
  • TV Region (Grande Bretagne)
  • Union Territory (Inde)
Des aéroports. Quoi ? Après le petit moment « wtf » initial, on comprend que c’est finalement logique pour Google de cibler aussi des aéroports car il s’agit de lieux avec du trafic international donc attendant des poches de résultat plus internationaux que les bleds paumés desquels ils sont souvent proches

Au global concernant la France, voici la répartition des 1893 lieux possibles :

  • 1 pays
  • 7 aéroports
  • 22 régions
  • 96 départements
  • 1767 villes
Et pour les aéroports :
  • Aero-Club de Nimes-Courbessac,Languedoc-Roussillon,France
  • Bordeaux-Merignac Airport,Aquitaine,France
  • EuroAirport Basel-Mulhouse-Freiburg,Alsace,France
  • Le Bourget Airport,Ile-de-France,France
  • Nice Cote d’Azur Airport,Provence-Alpes-Cote d’Azur,France
  • Nantes Atlantique Airport,Pays de la Loire,France
  • Paris Orly Airport,Ile-de-France,France
Ah oui, mais dans cette liste, quand on regarde le fichier csv, il n’y a aucun paramètre « uule ». Il n’y a que les lieux, en dur, et les id de chacun de ces lieux. Argh.
Colonnes du fichier de géolocalisation de Google

Colonnes du fichier de géolocalisation de Google

Nous avons donc deux solutions pour trouver le paramètre uule qui correspond à la géoloc que l’on veut cibler, à partir de la liste :

  • la méthode hacker, qui consiste à compiler/décompiler/encrypter AES, pour trouver la méthode de génération du paramètre uule à partir de l’id, par exemple, un peu comme un générateur de md5, comme l’a expliqué dans l’article de floyd.ch cité précédemment (un morray ami à moi est en train de travailler dessus),
  • la méthode scrapeur, qui consiste à scraper la liste de tous les codes.

Si la méthode 1 est plus pratique et plus propre, car plus pérenne, je dois avouer qu’elle me dépasse un peu et que je ne sais pas faire. Alors quand on ne sait pas, on prend du proxy et on bourrine : on scrape.

On a donc le fichier d’origine avec tous les lieux à scraper, et il ne reste plus qu’à scraper le src de l’iframe générée, avec un casperjs ou imacros. Personnellement, si je suis un grand fan d’imacros pour les tâches simples de scrap facile ou de submit, avouons-nous le : casperjs est la solution des mecs qui savent ce qu’ils veulent, et je n’ai réussi à scraper de l’adwords dégoûtant plein d’ajax qu’avec ce framework magnifique (d’autant plus que son créateur, Nicolas Perriault, est un gars très sympa, mais qui déteste le spam) ; casperjs permet en effet de passer à l’étape suivante lorsqu’un élément précis de la page est chargé (alors qu’on est obligé de mettre un timer un peu au pif en croisant les doigts pour que ce soit chargé avec imacros), et il bug beaucoup moins qu’un navigateur.

Le résultat ? Une (grosse) liste de paramètres pour la géolocalisation. Admirez un peu :

Mais si vous êtes trop flemmards pour le faire voici la liste de tous les paramètres de géolocalisation uule scrapés, bien proprement dans un csv, si vous voulez géolocaliser plus finement vos recherches, pour la modique somme de 100€ 50€ un tweet. Je précise que ce scrap m’a quand même coûté une IP hein :)

Petit bémol, dans la liste d’origine de tous les lieux possibles, il manquait les différents arrondissements à Paris, Lyon et Marseille. Qu’à cela ne tienne, j’ai géocodé pour vous (grâce à l’API Google Maps) les différents arrondissements et j’ai récupéré le fameux uule arrondissement par arrondissement. J’ai ajouté tout cela à la fin du fichier.

En revanche, il manque bizarrement dans la liste de Google plein de petits patelins, qui influent pourtant sur la géolocalisation si on passe par la case coordonnées gps. Si vous voulez vous géolocaliser à Penne d’Agenais ou Saint-Sylvestre-sur-Lot, vous serez donc obligés de taper dans l’API Google Maps et de passer ces coordonnées dans Adwords.

Je pense que les logiciels et services de monitoring de ranking devraient désormais proposer de suivre des requêtes au niveau local, avec le fameux paramètre uule, même si on retombe grosso modo sur les mêmes résultats en passant en dur la ville dans la requête (« plombier » avec uule paris 15, et « plombier paris 15 »).

Bon scrap à vous :)

Et n’oubliez pas, si ça vous a plu et que vous voulez en savoir plus sur le SEO en général, il y a très bientôt la prochaine session de formation au référencement avancé « SEO High Level » à Paris. Profitez-en si vous avec des budgets OPCA en rab 😉

Si vous voulez le script casperjs pour scraper tout cela et que vous n’avez pas l’humeur à le coder mais que vous avez une centaine d’euros, contactez-moi à 512banque -at- gmail.com .

{ 6 comments }

Si vous avez trouvé ce blog via une liste de blogs dofollow, ne perdez pas votre temps, je refuse systématiquement tous les commentaires sauf ceux en valent réellement la peine ;)

Comments on this entry are closed.

Previous post:

Next post: