Vérifier des protocoles et collecter des informations avec cURL

curl protocoles

Dans le monde Unix/Linux, on trouve énormément de personne qui utilisent la commande cURL. En effet, c’est une commande très utile mais connaissez-vous réellement la puissance de cet outil ?

Que signifie cURL ?

Avant tout, il faut savoir que curl s’écrit en réalité cURL qui est l’abréviation de « client URL request library », ce qui signifie en français « librairie de requêtes URL pour les clients ».

Cet outil est apparu en 1997 sous le nom de urlget.
cURL permet avant tout de tester et vérifier le fonctionnement d’un protocole et la disponibilité du contenu mais elle permet aussi de collecter des informations (en les téléchargeant par exemple).

Le programme se repose sur la librairie libcurl développé en langage C.

Utiliser cURL

Très souvent, nous utilisons cURL de manière très basique, pour vérifier qu’un site est bel et bien disponible et en ligne.

Par exemple, si je veux vérifier que https://safecode.fr est disponible, je vais tout simplement effectuer la commande :

$ curl http://www.safecode.fr

En retour, la commande fournit le code source de la page (que j’ai raccourci pour l’exemple).

<!DOCTYPE html>
<html lang="fr-FR">
<head>
<title>Safecode - Plus de sécurité dans un monde connecté</title>
etc...

A noter que http://safecode.fr permet de définir le protocole à utiliser pour l’outil mais celui-ci est utilisé par défaut. Nous pouvons donc aussi effectuer la commande :

$ curl safecode.fr
<!DOCTYPE html>
<html lang="fr-FR">
<head>
<title>Safecode - Plus de sécurité dans un monde connecté</title>
etc...

Cet article n’a pas pour but de vous montrer toutes les commandes possibles. Il y en a un paquet mais nous allons vous montrer deux autres mises en applications.

Avec cURL, vous pouvez obtenir l’entête d’identification par exemple avec la commande :

$ curl --head https://safecode.fr
HTTP/2 301
date: Wed, 18 Mar 2020 13:49:00 GMT
content-type: text/html; charset=UTF-8
set-cookie: __cfduid=d8f73dac546c5e7133b80de13a299b7ea1584539340; expires=Fri, 17-Apr-20 13:49:00 GMT; path=/; domain=.safecode.fr; HttpOnly; SameSite=Lax; Secure
x-redirect-by: WordPress
set-cookie: xRqKjnJzEhr=AUgY%2AozumXR; expires=Thu, 19-Mar-2020 13:49:00 GMT; Max-Age=86400; path=/
set-cookie: tesuYAwgFhEaoG_=u.2NWG3nSsg4JQx; expires=Thu, 19-Mar-2020 13:49:00 GMT; Max-Age=86400; path=/
set-cookie: lzadmWBXZKgc=XWNCr%5B7lh09m; expires=Thu, 19-Mar-2020 13:49:00 GMT; Max-Age=86400; path=/
location: https://www.safecode.fr/
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 575f6a1e1ee9ce73-LHR
alt-svc: h3-27=":443"; ma=86400, h3-25=":443"; ma=86400, h3-24=":443"; ma=86400, h3-23=":443"; ma=86400

On peut voir que cette commande peut donner des nombreuses informations précieuses sur un site internet. Par exemple vous pouvez voir que le site utilise le CMS WordPress et que j’ai Cloudflare comme CDN.

Les données retournées peuvent être stockées simplement. Si nous voulons stocker le retour de la commande précédente dans test.txt, il nous suffit d’exécuter la commande :

$ curl -o test.txt https://www.safecode.fr
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 16123    0 16123    0     0  35174      0 --:--:-- --:--:-- --:--:-- 35126

Le -o pour output nous permet de définir le chemin de sortie. Ici, c’est l’endroit où nous voulons stocker l’entête d’identification.

Préciser un port

Comme pour beaucoup d’autres outils, vous pouvez préciser un port. Le port par défaut utilisé par HTTP est le port 80 et le port utilisé par défaut par HTTPS est le port 443.

$ curl https://www.safecode.fr
$ curl https://www.safecode.fr:443

Les deux commandes ci-dessus ont donc pour retour le même résultat. Si le port HTTPS n’utilise pas le port par défaut, alors l’utilisation de url:<port>.

Si le port n’est pas 443 mais 444, la commande devient :

$ curl https://www.safecode.fr:444

De nombreux protocoles supportés

DICT, FTP, FTPS, Gopher, HTTP/1[10] (with HTTP/2 support), HTTP POST, HTTP PUT, HTTP proxy tunneling, HTTPS, IMAP, Kerberos, LDAP, POP3, RTSP, SCP, SMTP, SMB, FTP, SFTP, TFTP, Telnet

Si cette commande a attiré votre attention, la commande man est votre meilleur ami.

$ man curl

Quelques sources sur cURL

You May Also Like

About the Author: Thibault

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.