Googol résiste (et ça fait du boulot)
Mon problème
Rediriger vers DuckDuckGo était simple mais ça temporisait l'accès aux résultats et comme le bannissement arrivait très souvent, ça devenait chiant...
Je me suis donc dit qu'au lieu de rediriger vers un moteur alternatif, je pouvais l'utiliser comme je le fais avec Google: lui transmettre la requête, parser la page de résultats puis afficher ma page googol.- c'est plus propre
- c'est plus transparent
- c'est plus rapide
- mais c'est plus de boulot
Un moteur alternatif à google
Mon choix s'est porté sur startpage plutôt que vers duckduckgo pour le combo de raisons suivant:
- il fonctionne parfaitement sans javascript
- il fonctionne également avec des requêtes GET (et pas seulement POST)
- il a commencé sa migration vers le côté obscur il y a peu... donc pas de honte à le repomper outrageusement au lieu de leur apporter du traffic.
- il a des résultats souvent assez proches de google (à part pour les vidéos)
Plus retors qu'il n'y paraît
Au fur et à mesure de mes modifs, je me suis heurté à quelques difficultés:- il a fallu convertir les requêtes vers google en requêtes vers startpage de façon transparente pour l'utilisateur
- les regexes ont du être adaptées elles aussi
- startpage m'a fait chmir avec son securitycode de merde qui change à chaque chargement de page pour autoriser la requête vers la page suivante... je ne récupérais que la première page des vidéos et jamais les suivantes... Avant de comprendre d'où ça venait...
- certaines données sont dans la page en JSON et doivent être traitées selon un mode différent du parsing habituel.
Solution utilisée
J'ai séparé le code spécifique à google et startpage dans deux classes différentes afin que toute leur logique soit interne mais qu'elles soient utilisées de la même façon de l'extérieur.
Ainsi, les regex/url etc font partie des propriétés de chaque moteur, le déroulement des requêtes et du parsing est adapté et je peux gérer les spécificités de startpage.
La classe «app» fait ainsi appel à la classe «google» en temps normal ou «startpage» lors bannissement par google.
Résultat
Tout fonctionne bien et pour l'utilisateur, le bannissement est pratiquement transparent (comme j'aime bien pousser la transparence jusqu'au bout, j'ai quand même mis une ligne pour dire quand on est banni et que les résultats de startpage sont utilisés.)
Notes diverses
- Je pense virer le github à plus ou moins long terme: je trouve ça vraiment trop chiant à utiliser pour l'usage que j'en fais. Quand on veut un suivi un peu pro, c'est bien mais pour les ceusses qui veulent juste filer leur boulot aux autres sans se prendre la tête, rien ne vaut le zip à la con glissé déposé vite fait. D'ailleurs, j'ai ajouté une option en footer de googol pour que l'utilisateur puisse récupérer la version courante (le zip est généré à la volée)
- J'ai aussi ajouté une page d'info.
- Copyright: L'image de deadpool n'est pas de moi mais de gabrielfvale et vous pouvez la trouver ici
❝ 12 commentaires ❞
Fil RSS des commentaires de cet article
✍ Écrire un commentaire
les commentaires relevant du SPAM seront filtrés et dégagés direct...