Récupération image météo


#1

Bonsoir à tous
Je suis désappointé.
J’ai un script qui me récupérait l’image satellite toutes les 3 heures, mais depuis au moins 48h, curl ne la récupère plus, et je n’arrive pas à savoir pourquoi, ni à récupérer à nouveau l’image.

J’utilisais curl de cette façon:

user_agent="Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0"
fichier_temporaire="1600.jpg"
curl -A $user_agent http://static.die.net/earth/mercator/1600.jpg -o $fichier_temporaire

Je ne trouve pas de solution, car l’image n’a pas l’air d’avoir changé de place.
J’ai modifié mon user agent pour être plus récent, mais cela n’a rien changé.

Si vous avez une idée à me soumettre, je vous en serais reconnaissant.

Rémi.


#2

Bonjour rsuinux

En regardant comment était faîte
la page web dans laquelle s’affiche l’image,
j’ai pu extraire cette ligne :

<img id="earth" alt="[World Sunlight Map: mercator projection]" src="https://static.die.net/earth/mercator/1600.jpg" width="1600">

dans laquelle on peut voir que
le serveur qui donne accès à cette image utilise SSL

En résumé, il te suffit de changer le lien ciblé par :
https://static.die.net/earth/mercator/1600.jpg

ce qui donnera :

user_agent="Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0"
fichier_temporaire="1600.jpg"
curl -A $user_agent https://static.die.net/earth/mercator/1600.jpg -o $fichier_temporaire

#3

@MicP J’ai pourtant regardé, je me demandais si c’était un truc comme ça…
Mais j’ai pas vu le S de httpS
Merci!!!
Soit j’augmente la taille de la console sur laquelle j’ai fait la connexion à mon petit routeur qui récupère l’image, soit je change de lunette…

Rémi.


#4

Et en fait non!!!
Je récupère une première page qui demande d’activer javascript !!!
Ah bah oui, quand j’utilise firefox avec Noscript, j’ai le même comportement.
A présent, il me faut donc contourner ça.


#5

Je n’ai pas pris le temps d’installer curl
j’avais juste testé :

michel@debg53sw:~$ wget https://static.die.net/earth/mercator/1600.jpg
--2018-11-12 08:53:08--  https://static.die.net/earth/mercator/1600.jpg
Résolution de static.die.net (static.die.net)… 2606:4700:20::6819:ab0b, 2606:4700:20::6819:aa0b, 104.25.170.11, ...
Connexion à static.die.net (static.die.net)|2606:4700:20::6819:ab0b|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 259314 (253K) [image/jpeg]
Sauvegarde en : « 1600.jpg »

1600.jpg                      100%[=================================================>] 253,24K  --.-KB/s    in 0,06s   

2018-11-12 08:53:08 (4,36 MB/s) — « 1600.jpg » sauvegardé [259314/259314]

michel@debg53sw:~$ 
michel@debg53sw:~$ ls -l 1600.jpg 
-rw-r--r-- 1 michel michel 259314 nov.  12 08:38 1600.jpg
michel@debg53sw:~$ 

#6

Je viens de refaire un test.
Et j’ai compris mon erreur. Il faut apprendre de ses erreurs, mais la j’aimerai comprendre:
En fait, vous avez utilisé wget, et moi curl.
Et oui, wget fonctionne!!! Mais pas curl. :frowning:
L’un gère javascript et pas l’autre?


#7

Je viens d’installer curl sur une machine virtuelle debian stretch
(depuis laquelle je rédige ce message)

michel@debtest:~$ curl --version
curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2l zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL 
michel@debtest:~$ 
michel@debtest:~$ ls -l 1600.jpg 
ls: impossible d'accéder à '1600.jpg': Aucun fichier ou dossier de ce type
michel@debtest:~$ 
michel@debtest:~$ aTelecharger=https://static.die.net/earth/mercator/1600.jpg
michel@debtest:~$ fichier_temporaire="1600.jpg"
michel@debtest:~$ curl --silent $aTelecharger -o $fichier_temporaire
michel@debtest:~$ 
michel@debtest:~$ ls -l 1600.jpg 
-rw-r--r-- 1 michel michel 262765 nov.  12 19:04 1600.jpg
michel@debtest:~$ 

#8

et dans ton fichier, il y a quoi?
Chez moi, c’est un fichier d’erreur via cloudflare


#9

Il y a bien l’image attendue.

michel@debtest:~$ ls -l 1600.jpg 
-rw-r--r-- 1 michel michel 262811 nov.  12 19:24 1600.jpg
michel@debtest:~$ file 1600.jpg 
1600.jpg: JPEG image data, baseline, precision 8, 1600x887, frames 3
michel@debtest:~$ 

Ce qui donne :
1600


En fait, c’est plus simplement le fait que le serveur
répond à la demande en fonction du type de client demandeur,
et si le demandeur est un interpréteur de pages web (navigateur)
(comme par exemple Firefox) le serveur va alors formuler sa réponse
en transmettant tout ce qu’il faudra à cet interpréteur de pages web
pour qu’il puisse afficher cette image.


#10

ok,
Ma version de curl est

curl --version
curl 7.40.0 (arm-openwrt-linux-gnu) libcurl/7.40.0 PolarSSL/1.3.14
Protocols: file ftp ftps http https 
Features: IPv6 Largefile SSL 

wget fonctionne par contre. Merci, je vais l’utiliser.

Merci pour tes éclaircissements.


#11

En fait, wget est un downloader (qui s’occupe en auto des redirections, de la reprise sur erreur, etc) alors que curl est plus un couteau suisse d’analyse sur les différents protocoles de download (il sort le verbatim des sessions plus facilement).
On peut ajuster finement les paramétres de l’un comme de l’autre et en sortir à peu prés la même chose, mais ils sont plus simples à utiliser chacun dans leur domaine de spécialité.


#12

Merci pour ces précisions. Je ne les voyais pas tout à fait comme ça.