Aller au contenu

Je lance un outil pour détecter les affiliations sur la SERP !

Antoine Brisset
Antoine Brisset
Temps de lecture : 4 min
Je lance un outil pour détecter les affiliations sur la SERP !

Table des matières

Depuis quelques semaines, je travaille sur un outil à destination des éditeurs de sites web.

Je m'étais lancé le défi de le sortir avant la fin du mois et... je l'ai lancé hier.

Mission accomplie ! 😀

L'outil s'appelle Affiloop, il est gratuit, et tu peux le découvrir ici : https://affiloop.com/.

L'idée, c'est de de valider le potentiel d'un site de niche en analysant la SERP.

Comment ? En vérifiant, à partir d'un mot-clé, quelles sont les plateformes d'affiliation qu'on retrouve dans les liens sortants des 10 premiers résultats Google.

Les plateformes que j'ai retenues sont les suivantes :

  • Affilae
  • Amazon
  • Awin
  • CJ
  • Effiliation
  • Kwanko
  • Partnerize
  • Rakuten Advertising
  • Sharesale
  • Timeone
  • Tradedoubler
  • Webgains

Il en existe des dizaines d'autres mais mon choix s'est arrêté sur les régies les plus populaires en France.

Pour faire le POC, j'ai d'abord codé un Google Sheets qui allait vérifier en semi-auto grâce à Apps Script la présence de liens d'affiliation sur une liste d'URLs.

Voilà à quoi ça ressemblait.

Affiloop version 0 : une mini app sur Google Sheets

C'était brut, c'était moche mais ça faisait exactement ce que je voulais.

Rapidement, je me suis dit que je pouvais devais transformer ça en interface web.

Je me suis donc lancé dans le développement de l'outil, avec pour objectif de sortir une première version très basique, en utilisant des technos que je maitrise et que j'aime bien :

Tu t'en doutes, j'ai rencontré quelques difficultés pendant le projet.

Je t'explique comment je m'y suis pris.

La récupération des résultats Google

Pour ce qui est du scraping des résultats Google, en réalité, pas de soucis.

Avec une API, ça se fait facilement.

Ici j'ai choisi VALUE SERP, mais il en existe plein d'autres.

Le scraping des pages positionnées

Là, on attaque une partie plus compliquée :

  • comment gérer les codes d'erreur (4xx / 5xx) ?
  • quel timeout définir avant de passer au résultat suivant ?

Pour les codes d'erreur, c'est simple, j'ai choisi de les ignorer et de passer au site suivant.

Clairement il y a mieux à faire, mais la problématique est vraiment très complexe. Les erreurs 403 dues aux protections anti-bot, par exemple, sont aujourd'hui de plus en plus difficiles à contourner (poke @aurelienbardon). Je me pencherai donc là-dessus plus tard.

Pour ce qui est du timeout, je l'ai défini à deux niveaux :

  • API VALUE SERP : 3 secondes (avec 3 tentatives max.)
  • résultats Google : 4 secondes (avec 2 tentatives max.)

Il fallait aussi que je prenne en compte une contrainte importante : si mon application met plus de 30 secondes à répondre à une requête, la connexion sera automatiquement interrompue par Heroku.

Il a donc fallu que je revois l'architecture du code.

Plutôt que de faire une seul "grosse" requête, j'ai divisé le code en plusieurs requêtes de petite taille :

  1. je récupère les URLs positionnées (1 requête API)
  2. j'interroge chaque URL une à une pour vérifier ou non la présence de liens affiliés (1 requête par URL soit 10 requêtes)

Et j'assemble le tout dans un tableau qui se remplit au fur et à mesure (merci AJAX).

0:00
/
Démo d'Affiloop

L'affichage des résultats

Pour la partie front, j'ai utilisé le framework Tailwind CSS.

C'est simple à prendre à main, totalement personnalisable et on trouve plein de composants gratuits sur le web.

Franchement, c'est ultra agréable à utiliser.

Les dilemmes

Pendant le développement, je me suis posé pas mal de questions.

Et notamment : comment être sûr de détecter tous les liens ?

Et oui, les éditeurs n'ont pas toujours envie de montrer leurs liens affiliés à Google et certains utilisent des techniques de Sioux pour se protéger :

  • obfuscation JavaScript
  • cloaking
  • redirection (serveur ou JS)
  • etc.

D'autres installent des plugins comme Affimax ou AAWP qui n'affichent pas les liens "en clair" dans le code source.

Résultat : le parsing du HTML ne donne pas toujours les bonnes informations, ce qui produit des faux négatifs.

Alors, comment procéder ?

Pour ce qui est du JS, j'ai choisi de ne pas m'en occuper pour la V1. Il aurait fallu faire tourner un browser headless (type Selenium) et ça aurait fait exploser les coûts du projet.

Le cloaking ? J'ai bien une petite idée pour le détecter mais là aussi ça aurait nécessité un traitement supplémentaire. Donc tant pis pour la V1.

Et enfin les redirections. Ma plus grosse prise de tête du projet.

Suivre les redirections, OK, c'est facile. Mais comment identifier un lien derrière lequel se cache une redirection intermédiaire ?

Faut-il crawler tous les liens sortants ? Seulement les liens du corps de la page ?

Si je choisis la deuxième option, comment savoir si un lien fait bien partie du contenu principal ? Sur quelle base ?

Comment être sûr de ne pas interroger inutilement des liens de navigation ? Des liens footer ? Pire, un mega menu ?

Et surtout : comment faire pour ne pas exploser le timeout Heroku ?

Comme tu le vois, dès qu'on touche à ce sujet, c'est l'avalanche de problèmes 😬

Pour trancher, voici ma méthode (imparfaite) pour la V1 :

  • je sélectionne les liens présents dans les balises HTML5 main ou article (si elles n'existent pas... tant pis)
  • s'il y en a moins de 50, je les interroge en parallélisant les requêtes
  • si des redirections sont trouvées, j'analyse les URLs de redirections à la recherche de liens affiliés

Clairement, cette solution n'est ni bonne ni mauvaise, mais c'est un compromis acceptable.

Dernier point : fallait-il que j'affiche les noms des sites ?

Étant moi-même éditeur de sites, je me suis dit que j'apprécierais moyennement de voir mon site affiché tel quel, surtout si des screenshots étaient partagés publiquement.

J'ai donc décidé de les flouter et de les rendre uniquement visibles au survol.

Bonne solution ? Je ne sais pas. En fonction des retours des utilisateurs, je modifierai peut-être ce comportement.

Bon allez, je vais m'arrêter là sinon cette édition va être beaucoup trop longue à lire.

J'aurais encore pu te parler de la problématique des redirections JavaScript, des balises meta refresh, des plugins comme Affimax, All4Affiliates & Co et bien d'autres choses encore, mais ce sera peut-être pour une prochaine fois 😉

Je compte bien faire évoluer l'outil, donc n'hésite pas à le tester et à me faire un retour.

Affiliation

Antoine Brisset Twitter

Consultant SEO depuis 2010. Je traque les clics inutiles et j'automatise les tâches répétitives pour gagner du temps dans mon quotidien de travailleur du web.


Articles Similaires

Membres Public

Comment vérifier ses liens d'affiliation avec Screaming Frog ?

Quand on fait de l'édition de sites, on passe beaucoup de temps à créer du contenu, à le promouvoir, à faire des liens. Mais on oublie parfois le plus important : s'assurer que les liens d'affiliation qu'on a glissés dans nos contenus sont

Comment vérifier ses liens d'affiliation avec Screaming Frog ?
Membres Public

De consultant SEO à éditeur de sites : mon bilan 2023

Tout d'abord, laisse-moi te présenter mes meilleurs vœux pour l'année 2024. Je te souhaite d'être en bonne santé, de réussir tes projets, et de prendre du plaisir dans tout ce que tu fais ! Aujourd'hui, j'ai décidé de faire une sorte

De consultant SEO à éditeur de sites : mon bilan 2023
Membres Public

Ce plugin t'aide à trouver des programmes d'affiliation !

Aujourd'hui, l'astuce sera très courte mais je suis sûr qu'elle va t'être utile si, comme moi, tu fais du marketing d'affiliation. Est-ce que tu connais Wappalyzer ? C'est une extension qui permet de connaître les technologies qui se cachent

Ce plugin t'aide à trouver des programmes d'affiliation !