PROJET AUTOBLOG


Warrior du Dimanche

Site original : Warrior du Dimanche

⇐ retour index

Work in progress: Googol

jeudi 16 avril 2020 à 15:13

Il y a quelques personnes qui me posent des questions à propos de googol, du coup, je fais une petite page pour résumer à quoi je me suis heurté et où j'en suis de mes tentatives...

À l'origine

Googol était un simple script destiné à s'intercaler entre google et l'usager afin que ce dernier ne donne aucune information au géant du web:

google concept.png

En gros, l'usager envoie sa requête à googol, googol formule l'URL de requête vers Google, récupère les infos pertinentes sur la page de réponse, génère une page propre (sans aucun lien extérieur vers google, sans pub etc) et la restitue à l'usager. Lien

Toutefois...

Google ne facilite pas la tâche: ses pages changent régulièrement (et il faut adapter le parseur) et il finit par bannir mon serveur googol quand trop de requêtes viennent de lui.

J'ai donc un temps opté pour la transmission de la requête vers DDG puis j'ai préféré modifier Googol en profondeur pour qu'il puisse changer son moteur en interne: j'ai donc créé une classe google.php et une startpage.php pour que googol puisse changer de lui-même le temps du débannissement. Lien

startpage.png

Oui mais, bon... voilà.

Startpage s'est mis lui aussi à me bannir et à me renvoyer un captcha... Lien

  Salauds  .jpg

je lâche rien

Je me démonte pas...

... et je me lance dans l'ajout d'un troisième moteur selon le même principe: Qwant...

triforce.png

A ce stade, ça fonctionnait... Mais...

  1. ... ben ça fait quand même trois moteurs différents à maintenir (parseur+URLs etc)
  2. vu le rythme de bannissement, seul qwant était utilisé... Du coup, l'intérêt du cript ne saute pas aux yeux.

Je me remets au boulot         dans la joie .jpg

C'est reparti pour une réflexion

Là je prends le problème dans l'autre sens: au lieu de changer de moteur, je pourrais changer de serveur...

C'est une piste que j'avais explorée à une époque en faisant une sorte de chaîne de Googol qui se renvoyaient la requête.

Le problème, c'est que multiplier les googols, c'est multiplier la maintenance: c'est lourd, peu élégant et pas satisfaisant. Surtout qu'il suffirait de faire transiter la requête par un relais pour que google ne voie plus l'adresse IP du serveur Googol !

Pas con  .jpg

Je pars donc sur un script tout con qui curl l'adresse envoyée en GET et retourne la page. C'est bourrin, c'est pas sécurisé du tout, mais OSEF, c'est pour tester...


if (isset($_GET['url2get'])){
    $url=urldecode($_GET['url2get']);
    $content=file_curl_contents($url);
    $content=str_replace(['<script',''],'',$content);
    echo $url.$content;
}

Je place ledit script sur trois serveurs de test gratuits (un vieux free qui traînait et deux de chez byethost33).

On a donc:

relayid.png

Et là, c'est le drame

Quand je teste, aucun résultat de revient. La page renvoyée est vide ou presque.

relaypb.png

Alors, je teste en copiant l'URL générée par Googol et en la faisant transiter à la main par le relais avec une url du genre:


 http://www.googol.byethost9.com/?url2get=https%3A%2F%2Fwww.google.com%2Fsearch%3Fnum%3D100%26source%3Dlnms%26id%3Dhp%26start%3D0%26q%3Dtest
Et là, j'obtiens bien une page de résultats.

relaisdirect.png

J'en suis là...

Donc, quand googol interroge le relais qui interroge google, il renvoie une page vide mais quand je tape directement dans le navigateur l'adresse que googol utilise pour appeler le relais, ça fonctionne.

J'ai vérifié l'URL et j'ai viré le javascript (dans mon navigateur et dans la page) histoire d'être certain qu'il ne s'agit pas d'une requête ajax impossible à faire en backend.

EDIT :

Après avoir testé d'autres hébergeurs gratuits, j'en ai trouvé un pour qui ça marche... donc, ce sont les hébergeurs qui chient dans la colle quand on y accède via curl...

Il va falloir que je trouve d'autres serveurs pouvant héberger un script de relais...

            <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/>
                <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/>
                <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"></script>
                <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});</script>


► Commentaires