Googol résiste (et ça fait du boulot)

imgbin-computer-icons-avatar-deadpool-desktop-deadpool-pixel-art-x5Gc4h4YnvARncaJgpPeGT2bw.png
La version 4.2 «unban» de Googol est en phase de test et elle m'a pris le pack premium de chez MaximumEffort. Toutefois, ça valait le coup: plutôt que de me contenter de rediriger vers duckduckgo lors du bannissement par google - ce qui arrivait de plus en plus souvent - j'ai opté pour l'utilisation temporaire d'un moteur alternatif à la place de google...

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...

  Y connaît pas Raoul   .jpg

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.

  1. c'est plus propre
  2. c'est plus transparent
  3. c'est plus rapide
  4. 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:

  1. il fonctionne parfaitement sans javascript
  2. il fonctionne également avec des requêtes GET (et pas seulement POST)
  3. 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.
  4. il a des résultats souvent assez proches de google (à part pour les vidéos)

Plus retors qu'il n'y paraît

  Ça n a pas été sans mal   .jpg

Au fur et à mesure de mes modifs, je me suis heurté à quelques difficultés:

  1. il a fallu convertir les requêtes vers google en requêtes vers startpage de façon transparente pour l'utilisateur
  2. les regexes ont du être adaptées elles aussi
  3. 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...
  4. 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

  1. 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)
  2. J'ai aussi ajouté une page d'info.
  3. Copyright: L'image de deadpool n'est pas de moi mais de gabrielfvale et vous pouvez la trouver ici

❝ 12 commentaires ❞

1  jerry wham le

Ça fonctionne nickel. Merci.
Pour la page vidéo, j'ai une erreur 408 (time out).
Juste un petit oubli : il faut ajouter un dossier "temp" à la racine avec un chmod à 775 pour que le zip soit correctement généré. Sinon, on tombe sur une page 404.

 
2  Bronco le

Merci copain !
J'ai ajouté un test sur l'existence du temp juste avant la génération du zip.
Je n'ai pas eu de timeout sur les vidéos par contre... je pousserai plus loin dans la journée pour voir ;-)

 
3  jerry wham le

Framabee a été retiré des services Framasoft. Il faut utiliser une autre instance.
Au choix :
- Disroot (fondation hollandaise) : https://search.disroot.org/
- Eelo (fondation française) : https://spot.ecloud.global/
- Elukerio (chaton rhônalpin) : https://searx.elukerio.org/
- La Quadrature du Net (association française) : https://searx.laquadrature.net/
- Roflcopter (chaton toulousain) : https://wtf.roflcopter.fr/searx/

Ne pas utiliser la même permettrait de répartir la charge. Peut-être faire une fonction qui tirerait "au hasard" une instance parmi celles-ci (et d'autres si besoin) ?

 
4  jerry wham le

Un truc du style, dans config.php :
< ?php
$searX = [
'https://search.disroot.org/',
'https://spot.ecloud.global/',
'https://searx.elukerio.org/',
'https://searx.laquadrature.net/',
'https://wtf.roflcopter.fr/searx/'
];

$config['alternatives']=array(
'DDG'=>['url'=>'https://duckduckgo.com/?q=','mode'=>'&ia='],
'SearX'=>['url'=>$searX[mt_rand(0, count($searX) - 1)].'?q=','mode'=>'&ia='],
'Qwant'=>['url'=>'https://www.qwant.com/?q=','mode'=>'&t=']
);

 
5  jerry wham le

Autre remarque et après promis, j'arrête, quand on clique sur les boutons DDG, SearX ou QWANT, le terme recherché n'est pas repris dans l'url. Tu pourrais nous faire un petit script pour le coller à la suite de "?q=" et qui permettrait également d'enlever le "?q=" si le champ de recherche est vide (afin d'éviter le message d'erreur sur certaines instances de Searx) ? Bisous

 
6  Bronco le

Excellent je m'y mets cet aprème !

 
7  jerry wham le

Ah oui. Il manque aussi le fichier xml pour ajouter le moteur de recherche au navigateur :
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Googol</ShortName>
<Description>Googol - google sans mensonge</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="32" height="32">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCFJREFUeNrEV21MW2UUfm7v7QcwWqj9YBQyEAdqwBGGY3xkQRlLRjLnsmnUOOOSJYsmxvhDo/7VRH+YaPxhYqLRiAkuccbh5jbFRZgR3IbpwphG0wxaSgOUXgot7W177/V9L/DDrLv3bcK2kzy97e15zz3vOc85573c4bfOY112ruNuyATBKP0iQNVufETwKu6ufElwTFBVtf0ePJzKiwQniQNoLmRVYyUHT5kNT3f7YLbatHtkE4gvr+LsWATT82kEoszm2gVFVZk0K+0qnulwoM7nAG82gxfM2n2OM5HfAjzeYhw76EIuk8HV6zP4engBYoozMmuhKTB8eJ0LeHlvGc74VzHwexyz8f//73NweNBnRU9rJWq3VaBzVwNqKkrwdv9NpHP6Thg6QHfe12TDO6dFiKv5dWaWVIIUhiYDeK4rhid7m+D2utDkm8blKUXXvommQA9HO4rw1Wgai0l9vQ2cGotBSiaQTafwz5xsqC+g4+QEIfJrtbTLCTtLyIQyqxjIGLIaZ1gqLcPgVVTko2CxQlxexAx3YbRv4M46cJtjW6HOA4DntaqiApPC5eEzEj6uezs94Kj8OCjy8sMTusG4EbYYlEQMChfU040C1BzmZJzed3wmTiwfE8hq8GYeVFpLKsDuiQIBgDBkcCOLyvEcX2MvC8QMNyW31VUdDbaSNlCbzRH2JMgaJfhv3DIubFcRx5rAZljhItLXkjQJyzFhVrTcphL4aRXaYUbMg5f5Jg0lDv2T0ezdFvfw1CYXaAsRWziN2SwXdDf+FHf2JzSJhPdtaYsbvBjrb6LWuVQsgXislaCn6biOLMeLwge0yzYENe6fPi8UercWUygte+CCK6osBVasKJ/T50tdaiurIcgYifVE+W2aaJMpcFT7U7sL/7ISQlBR9+P4OFeE67T6/vfjONqdA8vF433jvRgupyDqx2TQr5MIKzBDja97A2/3+4NIVEWr5FZ+DnAGQ5h1KnG4c6PGCxS2Gi5WKEtu0lsG0p1UK2nJDy6oz9TQaQlNac7GmrAYtdCiYOVDhthGQ8NnTzrUlKZLqRCNA+QQl5H+FodEVlaUSKoVIimdUeSjshdUZvjSzLWIonCTdkRhISw0b4N5wgRy0JJjIXdjVuzatTZFnrhlkphV/+mAaLXQqmKrgeTCOysKql4f7areh5xH6LTm9zuTaQZkNhnBqZZa4C3U74wfNubKtyacSyWbNYic5rUXj9hRZymhnHkH9t7O7d4cDxJ+oRCUfw5qfXMLcsM/cBrvnIZy+R6yesCw7udqK1wY0ddXbkshJlJObEDM5dmcPg5aVCu/f7AgqcBadHFzVslhTUiu+AZOh54OY9dOAGLcPzBJ+zls0m4izBSXLG0lJwnL4oEnTRxneHdx1bfzUfpD/+E2AAqmeV253DYKAAAAAASUVORK5CYII=</Image>
<Url type="text/html" method="get" template="httpS://googol.ecyseo.net/?q=">
<Param name="q" value="{searchTerms}"/>
</Url>
<moz:SearchForm>https://googol.ecyseo.net/?q=</moz:SearchForm>
</OpenSearchDescription>

De rien

 
8  jerry wham le

Pour le fichier xml, il faut supprimer le './' avant le nom des fichiers dans le tableau de handleGetData.php pour que le fichier xlm soit pris en compte.

 
9  Bronco le

oui, et il faut aussi qu'il soit nommé correctement (genre pas «google.xml mais googol.xml )

 
10  jerry wham le

Il manque aussi une </div> dans le formulaire juste avant le </form>.
Promis, j'arrête !

 
11  frankybalboa le

Bonjour,
https://googol.warriordudimanche.net/ c'est ok dans la barre d'adresse
mais si j'ajoute googol à firefox (72.0.1)et aprés ma recherche ,
j'ai droit à ça :
http://googole.warriordudimanche.net/?q=test
et
Impossible de se connecter au serveur à l’adresse googole.warriordudimanche.net.
blablabla....
?

 
12  Bronco le

Je viens de corriger: c'était une erreur d'url dans le fichier xml. En ajoutant à nouveau googol dans les moteurs de recherche, ça devait être ok. ;-)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

Inutile de poster un commentaire à la con pour vous faire de la pub, ce sera filtré et dégagé direct...

Quelle est la deuxième lettre du mot ndez ?