Hello!

Inspiré(e) de prendre part à la discussion ? Ou de poser une question ou demander de l’aide ?

Alors bienvenues dans les grands sujets des forums de La Bulle : m’inscrire.

Cette partie du forum n’est pas compatible avec les bloqueurs publicitaires

Félicitations à vous, de préférer les accès payants plutôt que la gratuité par la publicité, c’est honnorable et cohérent de votre part. Malheureusement, l’accès payant par micropaiement (qui serait d’environ 1 cent pour 20 pages consultées) n’est pour l’instant pas encore mis en place, et l’accès gratuit sans publicité, est réservé aux membres actif(ve)s du forum. En attendant, si vous souhaitez poursuivre votre visite chez nous, vous pouvez ajouter le site à votre liste blanche, ou encore mieux, désactiver le bloqueur partout. Pour ajouter le site à votre liste blanche, pour Firefox (similaire pour les autres navigateurs), rendez‑vous en bas à gauche de la fenêtre de votre navigateur, et cliquez sur le menu comme dans l’exemple de l’image ci‑dessous, puis rechargez la page, en appuyant sur F5.

Effectuer des recherches et requêtes sur le web avec Ada
Auteur Message
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Oct 2015 13:51
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Bonjour, bonjour Hibou, bonjour Zen, et bonjour à tous et à chacun de toutes manières.

J'utilise donc Ada Web Server pour scruter le WWW avec Ada.
Je suis à la recherche d'un moyen une méthode pour optimiser mes recherches qui aboutissent rarement.

En fait ce n'est pas la recherche même qui pose problème, mais le parcours du WWW.

Pour le moment, enfin, j'ai essayé avec des timeouts de 1 à 2seconde, je tire une adresse IPv4 aléatoirement en évitant le réseau local et les réseaux privés.

J'obtiens comme ceci environ 80% de Get timeout et 10% de réseau introuvable ou non autorisé.

10% donc aboutisse au chargement d'un page.
Je cherche ce qui cloche,

Merci pour vos réponses.
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22208
Ven 30 Oct 2015 14:43
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Si je devine bien, il manque un Host dans l’entête de tes requêtes.

HTTP 1.1 a introduit le champs Host, pour permettre à plusieurs noms de domaine de répondre depuis la même IP. Si ce champs n’est pas présent ou mal renseigné, un serveur hébergeant plusieurs sites par exemple, ne sait pas auprès de quel site la requête est faite, et alors il n’y répond pas ou pas comme attendu.

Sans champs Host, une requête est comme en HTTP 1.0, qui n’est plus que peu utilisé depuis bien longtemps.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Oct 2015 15:11
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Merci Hibou.

la fonction Ada Aws.Client.Get (URL : string; .../...) return Reponse.Data;

Source Ada : 

function Get
(URL : String;
User : String := No_Data;
Pwd : String := No_Data;
Proxy : String := No_Data;
Proxy_User : String := No_Data;
Proxy_Pwd : String := No_Data;
Timeouts : Timeouts_Values := No_Timeout;
Data_Range : Content_Range := No_Range;
Follow_Redirection : Boolean := False;
Certificate : String := Default.Client_Certificate;
Headers : Header_List := Empty_Header_List)
return Response.Data;
-- Retrieve the message data given a specific URL. It open a connection
-- with the server and ask for the resource specified in the URL it then
-- return it in the Response.Data structure.
-- If User/Pwd are given then it uses it to access the URL.
--
-- Eventually it connect through a PROXY using if necessary the Proxy
-- authentication Proxy_User:Proxy_Pwd.
--
-- Only Basic authentication is supported (i.e. Digest is not). Digest
-- authentication is supported with the keep-alive client API, see below.
--
-- If Follow_Redirection is set to True, Get will follow the redirection
-- information for 301 status code response. Note that this is not
-- supported for keep-alive connections as the redirection could point to
-- another server.
--
-- Get will retry one time if it fails.


Comme tu peux voir, je n'ai pas de champ Host.
Je passe l'adresse IP dans le champ URL.
Heureusement, AWS est bien en version 1.1.

Cela dit, je vais essayer d'exploiter le champ Follow_Redirection.

Si tu vois autre chose qui peut m'aider..
Merci en tout cas de m'avoir remis le nez sur ce prototype.
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22208
Ven 30 Oct 2015 15:18
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Emmanuel Sens a écrit : 
Comme tu peux voir, je n'ai pas de champ Host.

Host est un champs d’entête, c’est donc dans la liste de champs d’entête Headers qu’il faut le passer. Le paramètre déclaré ainsi dans ton extrait :

Source Ada : 

Headers            : Header_List     := Empty_Header_List


D’après la déclaration, c’est par défaut une liste vide … normal que ça ne marche pas Clin d’œil .

Emmanuel Sens a écrit : 
Heureusement, AWS est bien en version 1.1.

Mais pour les serveurs qui la reçoivent, la requête émane d’un client défectueux, car le champs Host est obligatoire en HTTP 1.1, et il la traitent comme une requête HTTP 1.0.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Oct 2015 15:26
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Commet faire alors ?
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22208
Ven 30 Oct 2015 15:28
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Instancier un Header_List (probablement un conteneur générique), y ajouter l’élément correspondant, et passer cette instance de Header_List en paramètre.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Oct 2015 15:36
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Je pense bien, mais comment savoir ce que je doit mettre dans la liste ?
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22208
Ven 30 Oct 2015 16:02
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Normalement, un élément de Headers_List devrait avoir deux membres. Un pour le nom du champs, qui doit être “Host” et l’autre pour le nom de l’hôte, qui doit être le nom de domaine, sans le préfixe du protocole et sans barre oblique à la fin. Par exemple pour ce forum, l’hôte serait “bulleforum.net”. Si c’est un sous‑domaine, il faut indiquer l’hôte et le sous‑domaine, comme par exemple “www.site.fr” ou “blog.site.fr”, de la même manière, sans préfixe de protocole ni barre oblique à la fin.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Oct 2015 16:08
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Ah.

Et donc, à chaque adresse IP il peut y avoir plusieurs Host,
Donc après l'adresse IP, je devrais parcourir tout les mots composable ?
Je peux pas mettre "*" ?
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22208
Ven 30 Oct 2015 16:20
Message Re: Effectuer des recherches et requêtes sur le web avec Ada
Non, ce n’est pas comme ça, et il n’est pas possible d’utiliser un joker et il ne peut y avoir qu’un seul champs Host, et par une convention fortement appliquée (bien que ce ne soit pas formellement requis par la spécification HTTP 1.1), ce champs vient toujours en premier, c’est à dire juste après le GET, c’est à dire qu’il faut ajouter cet élément en premier dans la liste.

Si tu utilises un joker, le serveur ne sait pas quoi renvoyer (s’il y a plusieurs sites sur le serveur, il ne va pas en choisir un au hasard), idem si tu utilises plusieurs champs Host, et ces deux choses rendent la requête non‑conforme, par spécification, de toutes manières.

Il faut faire comme ça : prendre le nom de domaine, par exemple “bulleforum.net”, résoudre son adresse IP, par exemple actuellement “82.165.52.26”. Dans l’élément, comme nom du champs, donner “Host” et comme valeur du champs, donner “bulleforum.net”, puis soumettre la requête à l’adresse IP.

Une requête HTTP 1.1 ne se fait jamais avec seulement une IP, et d’ailleurs, c’est très déconseillé de scruter les IP sur le Web, il faut l’explorer avec des noms de domaines, et obtenir l’IP des noms de domaine, et non‑pas explorer des IP au hasard.

Explorer des IP au hasard, c’est même courir le risque d’un black‑listage ou de se faire remarquer comme pirate.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
cron