Internet

Télécharger un fichier d'internet

Télécharger un fichier d'internet

$ wget   adresse_du_fichier_a_telecharger
 
$ fetch   adresse_du_fichier_a_telecharger

Etiquettes: 

Aspirer un site internet

Pour aspirer un site internet

$ wget -r -l5 -k -E "http://www.l_adresse_du_site.a_recuperer.com"

-r : récursif sur le site
-l5 : cinq niveaux de récursion au maximum
-k : convertir les destinations des liens pour une lecture locale
-E : convertir les types de fichier au format HTML (pour éviter que la lecture de sites en PHP ne foire en lecture sous Firefox).

A l'aide de l'outil httrack

$ sudo apt-get install httrack

Pour aspirer le site :

$ httrack --mirror http://mon-site.com

Pour mettre à jour le site aspirer (se placer dans le dossier du site):

$ httrack --update

Etiquettes: 

CURL: Afficher les informations SSL d'un domaine

La commande curl est très utile pour afficher, tester etc... un site internet.
On peut également utiliser la commande curl pour afficher les informations SSL des sites internet.

Par exemple, avec mon site internet https://quennec.fr

# curl -I --verbose https://quennec.fr*   Trying 51.159.70.99:443...
* TCP_NODELAY set
* Connected to quennec.fr (51.159.70.99) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=quennec.fr
*  start date: Mar 11 07:02:14 2024 GMT
*  expire date: Jun  9 07:02:13 2024 GMT
*  subjectAltName: host "quennec.fr" matched cert's "quennec.fr"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
...
<
* Connection #0 to host quennec.fr left intact

On peut voir qui a émis le certificat, ses dates de validité etc etc ...

Et sinon, la commande openssl permet de récupérer le certificat complet, voir openssl : Récupérer un certificat distant

CURL: Poster des données et des fichiers via un formulaire

La commande CURL peut être utilisée pour poster des données via un formulaire WEB.

Exemple avec la commande suivante:

$ curl \
--insecure \
--request POST \
--header 'Content-Type: multipart/form-data' \

'https://www.monsite.com/monformulaire' \
-F 'username=toto' \
-F 'password=pass4toto' \
-F 'date-de-naissance=11-02-82' \
-F "file=@monfichier.txt" \
--include

 

Détail des options:

--insecure permet d'utiliser une connexion sécurisée (https) avec un certificat auto-signé (non reconnu)
--request POST permet d'indiquer le type de la requête
--header 'Content-Type: multipart/form-data' permet d'indiquer l'en-tête de la requête
-F permet d'indiquer les valeurs pour les différents champs du formulaire
--include permet de récupérer l'en-tête de la réponse

infoPour poster un fichier, il est nécessaire de préfixer le nom du fichier avec l'arobase (@)

Etiquettes: 

CURL: appeler un webservice SOAP

Pour appeler un webservice SOAP avec la commande CURL, il suffit d'indiquer le bon content-type dans le header ainsi que le nom du fichier XML à envoyer.

# curl \
> --header "content-type: application/soap+xml; charset=utf-8" \
> --data @request.xml \
> http://$SERVER:$PORT/$ENDPOINT

infoNe pas oublier le symbole '@' devant le nom du fichier XML pour indiquer à la commande CURL qu'il s'agit d'un fichier.

Etiquettes: 

CURL: utiliser un serveur proxy

Pour utiliser un serveur proxy avec la commande curl, il suffit tout simplement de créer dans son home un fichier .curlrc

Il est possible d'y ajouter différents paramètres liés à la commande curl

$ cat .curlrc
--proxy-user "user_toto:pass_toto"
--proxy "http://proxy.mondomaine.local:3128/"
--noproxy "localhost,127.0.0.1,mondomaine.local"

Ne pas oublier de paramétrer les accès au fichier

$ chmod 0600 .curlrc

 

Etiquettes: 

Créer un sprite CSS sans se prendre la tête

Qu'est ce qu'un sprite CSS ?

En CSS, un sprite est une image unique regroupant plusieurs images différentes.
Cela permet de réduire les requêtes http pour les images insérées dans une page html.
Les positions absolues de chaque images sont indiquées dans un fichier css.
Avec ce procédé, l'insertion d'une image dans une page html ne se fait plus avec la balise <img> mais avec une balise <div>  ayant comme nom de "class" celui correspondant à l'image souhaitée et indiqué dans le fichier css.

Il existe sous Debian/Ubuntu, mais également pour Windows et OSX, une commande qui permet de générer un sprite CSS à partir d'un dossier contenant des images.

Cette commande se nomme Glue.

Pour l'installer sous Debian/Ubuntu :

$ sudo apt-get install libjpeg62 libjpeg62-dev zlib1g-dev python-dev python-pip
$ sudo pip install glue

ou

$ sudo apt-get install glue-sprite

Créer un sprite CSS tout simplement

$ glue source_dir output_dir

Par exemple :

$ glue famfamfam_flag_icons/png sprite

Le dossier famfamfam_flag_icons/png contient exactement 247 images PNG et la commande glue va donc créer un unique fichier PNG dans le dossier sprite regroupant toutes les images et un fichier css indiquant les positions de chaque image.

$ ls -1 famfamfam_flag_icons/png
ad.png
ae.png
af.png
ag.png
ai.png
al.png
am.png
an.png
ao.png
...
$ ls -1 sprite/
png.css
png.png
 

Il est possible de générer également la page html permettant de visualiser le résultat en ajoutant l'option --html.

$ glue famfamfam_flag_icons/png sprite --html
$ ls -1 sprite/
png.css
png.html
png.png

La commande glue génère les fichiers css, html et png en fonction du nom du dossier indiqué en source.
Par défaut, le nom des "class" commence par sprite-leNomDuDossierSource-leNomDuFichier.

$ head sprite/png.css 
/* glue: 0.4 hash: 1c2ef5e4ec */
.sprite-png-zw,
.sprite-png-zm,
.sprite-png-za,
.sprite-png-yt,
.sprite-png-ye,
.sprite-png-ws,
.sprite-png-wf,
.sprite-png-wales,
.sprite-png-vu,
 
Il est possible de modifier le nommage des "class" avec l'option --namespace=NAMESPACE.
 

$ glue famfamfam_flag_icons/png sprite --namespace=monSprite

$ head sprite/png.css 
/* glue: 0.4 hash: d6adc62ab7 */
.monSprite-png-zw,
.monSprite-png-zm,
.monSprite-png-za,
.monSprite-png-yt,
.monSprite-png-ye,
.monSprite-png-ws,
.monSprite-png-wf,
.monSprite-png-wales,
.monSprite-png-vu,

La liste complète des options est disponible avec l'option -h.

$ glue -h

Voici un exemple de l'image globale générée à l'aide de la commande glue.

sprite

Navigateur en ligne de commande

$ w3m http://adresse_du_site

Etiquettes: