diff --git a/content/cheat-sheets/wget-fr.md b/content/cheat-sheets/wget-fr.md new file mode 100644 index 0000000..4ee6428 --- /dev/null +++ b/content/cheat-sheets/wget-fr.md @@ -0,0 +1,128 @@ +--- +Title: wget/curl +Date: 2022-07-25 13:45 CEST +Author: Fabrice +Category: cheat sheets +Tags: wget, curl +Slug: wget-curl +Header_Cover: ../images/covers/speedboat.jpg +Summary: Quelques commandes wget et curl utiles dans la vie de tous les jours. +Lang: fr +--- + +`wget` est un outil qui permet le téléchargement de manière non interactive de +contenu sur des sites via FTP/HTTP(s), etc. +Dans son utilisation la plus basique, il permet de télécharger du contenu en +tapant simplement `wget ${url}` dans son émulateur de terminal favoris. + +Cependant, en parcourant sa [documentation](https://www.gnu.org/software/wget/manual/wget.html) permet de se rendre compte de sa puissance. + +De même, `curl` est un autre outil proposant des fonctionnalités similaires. Il +sert à envoyer de manière simple des requêtes sur internet. Un coup d'œil à sa +[documentation](https://curl.haxx.se/docs/manpage.html) nous montre qu'il gère +une plus grande quantité protocoles comparativement à `wget`. + +Cependant, `wget` peut suivre les liens (récursivement), filtrer du contenu pour +les requêtes, convertir en liens relatifs (ou absolu),… +Ainsi, ces deux outils couvrent des cas d'usage différents (même si leur +intersection est non-vide). +Pour résumer, `wget` se montrera être un couteau-suisse très utile dans les cas +où l'on souhaite parcourir un site internet vu comme un graphe de pages liées +entre-elles par des liens hypertextes là où `curl` se montrera plus intéressant +pour la manipulation de requêtes à bas niveau. +De plus, pour l'analyse des requêtes, les navigateurs modernes permettent +d'exporter les requêtes directement sous forme de commande `curl` depuis +l'inspecteur web. Cela permet de les bricoler de manière plus simple que depuis +[netcat](https://en.wikipedia.org/wiki/Netcat) par exemple. + +Pour conclure cette introduction, comme je ne suis pas un `wget`/`curl` +_poweruser_, il y aura sans doute de nombreuses informations qui seront assez +basiques. +Néanmoins, comme je l'ai indiqué, ce billet me servira de pense-bête pour +[réduire mes requêtes à Google](https://degooglisons-internet.org/). + +# wget + +## Télécharger un dossier + +Pour télécharger un dossier spécifique: +```sh +wget --recursive --no-parent --no-host-directories --cut-dirs= --accept +``` + +Où `` représente le la profondeur de recherche dans les sous-dossiers. Par +exemple, si l'on souhaite télécharger le contenu de ce blog sans télécharger les +images de couverture des articles situés à l'adresse “”, on peut utiliser cette commande: +```sh +wget -rnpnH --cut-dirs=2 -A jpg https://blog.epheme.re/images/covers/ +``` + +Une méthode plus simple pour ce cas d'usage, si l'on n'a pas besoin de la +structure des répertoires, il est possible d’utiliser l’option +`--no-directories`/`-nd`. En revanche, l'option `--cut-dirs` peut se révéler +utile si l'on souhaite garder des informations structurelles sur l'organisation +des dossiers si elle est pertinente, par exemple si les fichiers sont triés par +date. +Pour ignorer certains fichiers, il est aussi possible d'utiliser d'option +`--reject`/`-R`, qui accepte également les expressions régulières (tout comme +`--accept`/`-A`), dont le type peut-être précisé à l'aide de l'option +`--regex-type` + +## Créer un miroir pour un site + +Une autre utilisation utile de `wget` est de faire une copie locale d'un site +web. Pour ce faire, la commande longe est : +```sh +wget --mirror --no-host-directories --convert-links --adjust-extension --page-requisites --no-parent +``` + +Le nom des potions est assez claire, et la version courte serait : `wget -mkEp -np ` + +### Ignorer `robots.txt` + +Il arrive parfois que le fichier [`robots.txt`](https://en.wikipedia.org/wiki/Robots_exclusion_standard) interdise l'accès à certaines ressources. Pour l'ignorer, il suffit de rajouter d'option `-e robots=off`. + +### Nombre d'essai + +IL se peut que le serveur soit saturé et nous demande d'attendre pour quelques +ressources. Lorsque cela arrive, `wget` va essayer à de nombreuses reprises (20 +fois par défaut) de récupérer ladite ressource, ce qui peut ralentir la +récupération des données lors d'un miroir, surtout si le délai d’attente maximal +est élevé. Il est possible de réduire le nombre d'essai avec l'option +`--tries`/`-t`. + +## Détection de liens morts + +Il est possible d'utilise l'option `--spider` pour ne pas télécharger les +fichiers mais simplement sauter de liens en liens (comme une araignée sur sa +toile). +Cette fonctionnalité peut ainsi être exploitée pour débogguer son site web en +récupérant le résultat de cette recherche via l'option `--output-file`/`-o`. + +```sh +wget --spider -r -nd -o +``` + +La liste des liens morts se retrouvera à la fin du fichier d’historique. + +## `curl` + +## Envoyer une requête POST + +Un de mes cas d'usage les plus courants, pour communiquer avec des APIs par +exemple, est l'envoie de requêtes POST faites à la main avec amour. La syntaxe +est assez simple dans ce cas, il suffit d'envoyer ce que l'on souhaite à +l'option `--form``-F`. + +```sh +curl -F = -F = +``` + +On peut aussi signaler qu'il est possible d'envoyer un fichier en précédent le +nom de fichier par une arobase `@`: +```sh +curl -F picture=@face.jpg +``` + + diff --git a/content/cheat-sheets/wget.md b/content/cheat-sheets/wget.md new file mode 100644 index 0000000..b8f7fdf --- /dev/null +++ b/content/cheat-sheets/wget.md @@ -0,0 +1,91 @@ +--- +Title: wget/curl +Date: 2022-07-25 13:45 CEST +Author: Fabrice +Category: cheat sheets +Tags: wget, curl +Slug: wget-curl +Header_Cover: images/covers/speedboat.jpg +Summary: Some useful wget and curl commands, such as downloading a repository. +Lang: en +--- + +# wget or curl? + +`wget` is a tool to download contents from the command line. +In its basic form, it allows downloading a file quite easily just by typing `wget ` in your favorite terminal. + +However, a simple look to the [man](https://www.gnu.org/software/wget/manual/wget.html) page directly shows how powerful this tool is. + +Similarily, `curl` is another tool to handle internet requests, however, a look at the [man](https://curl.haxx.se/docs/manpage.html) page shows that it supports a lot more protocols than wget which only handles https(s) and ftp requests. + +On the other hand, wget can follow links (recursively), apply filters on your requests, transform relative links,… +Thus, they don't cover the same area of usage (even if the intersection is non-empty). +To put it short wget will prove useful whenever you have to download a part of a website while exploring links, while curl can be very handy to tweak single requests in an atomic fashion. +Moreover, if you want to analyze web information, firefox and chromium (I didn't try on other browsers) allows exporting requests directly as a curl command from the web inspector, which makes the job less painful than with [netcat](https://en.wikipedia.org/wiki/Netcat). + +To conclude, I'm definitely not a wget/curl poweruser, so there may be very basic stuff here, but as I'm not using those tools on a daily basis. +Anyway, as I said, this section is to help me remember these commands to [reduce my google requests](https://degooglisons-internet.org/en/). + +# wget + +## Download a full repository + +Download a repository selecting specific files +```sh +wget --recursive --no-parent --no-host-directories --cut-dirs= --accept +``` + +Where `` denotes the number of subdirectories to omit from saving. For instance, to download the cover images from this blog at the address “”, you can put: +```sh +wget -rnpnH --cut-dirs=2 -A jpg https://blog.epheme.re/images/covers/ +``` + +Anyhow, a simpler method, if you don't need the directory structure (for instance in the above example), is to use the `--no-directories/-nd` option. However, the cut-dirs can be useful if you need some architecture information (e.g., if the files are sorted in directories by date or categories) +To reject some documents, you can also use the option `-R`, which also accepts regular expressions (which type can be specified using --regex-type) + +## Mirror a website + +Another useful use of wget is just to make a local copy of a website. To do this, the long version is: +```sh +wget --mirror --no-host-directories --convert-links --adjust-extension --page-requisites --no-parent +``` + +The name of options are quite straightforward, and the shorten version of it is: `wget -mkEp -np ` + +### ignoring robots.txt + +Sometimes, [robots.txt](https://en.wikipedia.org/wiki/Robots_exclusion_standard) forbids you the access to some resources. You can easily bypass this with the option `-e robots=off`. + +### Number of tries + +Occasionally, when the server is busy answering you, wget will try again and again (20 times by default), which can slower your mirroring quite a bit (especially if the timeout is big). You can lower this bound using the… `--tries/-t` option. + +## Finding 404 on a website + +Using the `--spider` option to not actually download files, you can use it as a debugger for your website with `--output-file/-o` to log the result in a file. + +```sh +wget --spider -r -nd -o +``` + +The list of broken links is then summarized at the end of the log file. + +# Curl + +## Send a POST request + +My most frequent use of curl is to send POST requests to different kind of API, the syntax is quite simple using the `-F` option: + +```sh +curl -F = -F = +``` + +Note that to send a file, precede the filename with an `@`: + +```sh +curl -F picture=@face.jpg +``` + + diff --git a/content/images/covers/erawan-waterfall.jpg b/content/images/covers/erawan-waterfall.jpg new file mode 100644 index 0000000..62c682c Binary files /dev/null and b/content/images/covers/erawan-waterfall.jpg differ