Requête CURL vers Nominatim (OpenStreetMap)
... / Requête CURL vers Nominat...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Requête CURL vers Nominatim (OpenStreetMap)

Par
MichaelL1
Créé le 2017-09-09 16:04:55 (edited on 2024-09-04 11:42:15) dans Hébergement Web-old

Bonjour,

J'ai un site qui tourne sous Laravel et avec lequel j'affiche une carte via la librairie Leaflet.

Ceci fonctionne très bien mais lorsque j'essaie de faire une requête CURL vers une adresse de Nominatim (OpenStreetMap) pour obtenir les coordonnées d'une adresse, j'ai un timeout qui me bloque.

Si je fais la même requête vers Google API Geocoding, cela fonctionne.

Je comprends bien que les serveurs mutualisés d'OVH ne sont pas "grand" ouvert vers l'extérieur mais pourquoi ne pas laisser passer un service API tel que celui d'OpenStreetMap ? (a contrario de Google, qui n'est pas aussi précis qu'OpenStreetMap, je suis d'accord que c'est sans doute Google le plus utilisé mais avoir la possibilité d'utiliser des services libres ne devraient pas être bloquant).

Plus tard dans mon site, je devrais rajouter des requêtes CURL vers les réseaux sociaux (Facebook et Twitter), j'espère qu'eux ne seront pas bloqués, non plus ?

Avez-vous des solutions à me proposer ? Ou sinon dois-je prendre un serveur VPS pour m'affranchir de cette contrainte ?

Bien à vous,


12 réponses ( Latest reply on 2018-05-17 13:45:22 Par
vcasse
)

Facebook et twitter ne sont pas bloqués, mais tu es limité à quelques centaines de requêtes par tranches de 5 minutes.

Après, si @vcasse ou @Ludo.H (ou un autre) passe par là, il pourra voir pour OpenStreetMap.

Bonjour,

est-ce qu'un jour cette appel API à déjà fonctionné ?
Car si oui c'est peut être que malheureusement l'une des IPs de sortie du cluster a été blacklisté.

Si cela n'a jamais fonctionné c'est peut être qu'il ont déjà quelques IPs en blackliste.

Cordialement, janus57

Je vous confirme que cet api fonctionne avec aussi des restrictions mais que je ne dépasse pas puisque je mets mes résultats en cache (ou en db dans certains cas), donc je fais pas beaucoup d'appel vers cet API.

Après comme je suis sur un serveur mutualisé, je suppose que j'ai la même adresse IP que les autres hébergements sur le même serveur et donc mon site est susceptible de dépasser le quota autorisé dès lors qu'un autre site sur le même serveur fait appel aussi à cet API.

A défaut de Google avec lequel je lui passe mon access token et je suppose qu'il filtre les serveurs avec cet access-token et donc pas de limite à cause des autres (que depuis mon site uniquement).

L'API fonctionne très bien, exemple avec cette adresse : http://nominatim.openstreetmap.org/search?format=json&q=Chauss%C3%A9e+de+Wavre+55%2C+1370+Jodoigne%2C+Brabant+Wallon%2C+Belgique&limit=1

Bonjour,

la question n'est pas de savoir si l'API fonctionne en dehors d'un mutu OVH, mais si elle a déjà fonctionné depuis un mutu OVH.

Car peut être qu'il ont blacklisté les serveurs OVH suite à des abus, et c'est pour ça que OVH lui même impose des limites vers certaines API (pour éviter les blacklistage intempestif).

De plus en vois que sur cette API il y a des conditions à respecter :
Requirements

No heavy uses (an absolute maximum of 1 request per second).
Provide a valid HTTP Referer or User-Agent identifying the application (stock User-Agents as set by http libraries will not do).
Clearly display attribution as suitable for your medium.
Data is provided under the ODbL license which requires to share alike (although small extractions are likely to be covered by fair usage / fair dealing).
Cf : https://operations.osmfoundation.org/policies/nominatim/

Donc est-ce que votre/vos scripts respectes tous ces points (surtout les 2 premiers) ?

Cordialement, janus57

Bonjour,

Je ne serais pas vous dire si elle a déjà fonctionné depuis un mutu OVH.

Oui, mes scripts respectent bien ces règles car pour le moment je n'ai fait le test concernant une seule adresse et je l'ai peut-être fais 10 fois max depuis ce matin (donc je suis largement en dessous des 1 requête par seconde).

Mais je vais aussi rajouter mon adresse email comme User-Agent dixit l'API.

Bien à vous,

Bonjour,

Je reviens vers vous après une période d'absence à cause de mon boulot.

Mon problème est toujours le même. Est-ce que @vcasse ou @Ludo.H cités plus haut ou quelqu'un d'autre pourrai m'aider.

Voici le retour de la commande cURL depuis le serveur mutu d'OVH :

> **curl -v "http://nominatim.openstreetmap.org/search?format=json&q=Chauss%C3%A9e+de+Wavre+27%2C+1370+Jodoigne%2C+Brabant+Wallon%2C+Belgique&limit=1"**

> * Hostname was NOT found in DNS cache
> * Trying 193.63.75.109...
> * connect to 193.63.75.109 port 80 failed: Connection refused
> * Failed to connect to nominatim.openstreetmap.org port 80: Connection refused
> * Closing connection 0
> curl: (7) Failed to connect to nominatim.openstreetmap.org port 80: Connection refused

Merci d'avance pour votre aide.

Bien à vous,

Bonjour,

Depuis l'accés SSH, les requêtes vers l'extérieur sont autorisées uniquement sur whitelist et nominatim n'en fait pas parti.

Avez vous essayé de contacter cette API de openstreetmap depuis une page PHP?

Vincent

Bonjour,

Oui, mon site web récupère en PHP des lieux de OpenStreetMap (depuis l'API de nominatim) et les affiches sur une carte. Et donc mon code PHP fait une requête CURL vers cette API du genre :

> $ch = curl_init();
> curl_setopt_array($ch, [
> CURLOPT_RETURNTRANSFER => TRUE,
> CURLOPT_URL => "http://nominatim.openstreetmap.org/search?$query",
> CURLOPT_CONNECTTIMEOUT => 5,
> CURLOPT_TIMEOUT => 5,
> ]);
> $response = curl_exec($ch);
> curl_close($ch);

Bien à vous,

Nous ne bloquons pas cette adresse depuis nos serveurs web. Cela signifie que le blocage provient surement de openstreetmap. Pouvez vous les contacter afin d'en savoir plus ?

L'adresse IP bloquée est probablement la passerelle de sortie de votre cluster.
https://docs.ovh.com/fr/hosting/liste-des-adresses-ip-des-clusters-et-hebergements-web/

Cordialement,
Vincent

J'ai trouvé !
Le blocage se fait au niveau de l'endroit où on exécute la requête CURL (impossible de le faire depuis la console SSH, sauf l'adresse que l'on souhaite contacter se trouve dans la whitelist d'OVH).
Plus d'infos: https://community.ovhcloud.com/community/fr/connexion-vers-stripe-api?id=community_question&sys_id=47453540e5d286d02d4c0165b3e7661d

Bonjour,

Je regarde actuellement pour ouvrir nominatim depuis les accés SSH.

Cordialement,
Vincent

D'ici demain, l'ensemble des serveurs SSH de nos clusters auront accès à nomitatim :)

Bonne fin de semaine,
Vincent