Présentation
Pour des raisons de suivis de conso, j’avais besoin de récupérer des fichiers sur un site. Historiquement c’était possible par API mais … ce n’est plus possible. Une solution est d’automatiser une action manuelle.
Plein de choix possible mais j’ai décidé de passer par Selenium. Pas vraiment de raison.
Tout fonctionne bien sauf une chose : la gestion du Captcha
Souci
La connexion du site est protégé par un Captcha afin d’éviter j’imagine que des petits malins viennent prendre les données de manière trop automatique. Seulement, j’avais remarqué que cette protection n’était pas active sur mon profil général mais uniquement lors de l’appel via Selenium.
J’en déduis (peut-être à tort) qu’il y a une notion de “première fois” et qu’il doit stocker une info quelque part pour ne pas le demander à chaque fois.
Je sais qu’il existe des solutions à base d’IA pour bypasser les Captcha mais bon … on parle de récupérer un fichier.
Solution “à l’ancienne”
La solution trouvée est finalement assez simple : créer un profil pour mon navigateur, me connecter une première fois et l’utiliser ce profil pour les tests.
Gestion du profil :
- Ouvrir le gestionnaire de profil de Firefox,
- Au moment de l’écriture de ses lignes (firefox -P),
- Créer un nouveau profil,
- Je lui ai donné le jolie de Selenium et son chemin est directement dans le répertoire de mon projet.
Ensuite, il faut paramétrer Selenium :
// Chemin vers ton profil Firefox et geckodriver
console.log("-- Parametres");
const firefoxProfilePath = '/Chemin/du/profil';
const firefoxBinaryPath = '/Chemin/du/firefox/que/je/veux/utiliser';
// Options de configuration pour Firefox
console.log("-- Création de l'option");
let options = new firefox.Options();
options.setProfile(firefoxProfilePath); // Affectation du profil
options.setBinary(firefoxBinaryPath); // Utilisation du bon firefox
Un point complémentaire : J’ai plusieurs versions de Firefox sur mon ordinateur, il faut bien utiliser celui qui a permis de créer le profil. C’est pour cela que le script “force” l’utilisation d’une certaine version de Firefox.
Bilan : ca marche.
Alors ca marche nickel. Après est-ce que le temps passé sur le script sera un jour rentabilisé … Je ne pense pas …
Une bonne image qui résume : https://www.commitstrip.com/fr/2014/05/30/for-the-love-of-code/?