Grimoire-
Command
.es

GNU+Linux command memo

Memo_9 : Récupération sur le web

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. curl : récupération sur le web

1.1. Option : -O

Placer les données reçues dans un fichier portant le même nom que la source (le chemin n’est pas pris en compte).

$ curl -O http://www.unsite.com/nom.iso (1)
1 nom.iso sera placé dans le répertoire courant

Exemple réel :

$ curl -O http://slackware.org.uk/slackware/slackware-13.1-iso/slackware-13.1-install-dvd.iso
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
0 4118M    0 8088k    0     0   246k      0  4:44:46  0:00:32  4:44:14  251k$

1.2. Option : -C -

À utiliser en cas de coupure, pour éviter un rechargement complet.

$ curl -C - -L -O http://www.unsite.com/nom.iso (1)
1 Si l’option -L est absente on ne suis pas les redirections, mais on les télécharge.
$ curl -C - -L -O http://cdimage.debian.org/debian-cd/6.0.3/i386/iso-cd/debian-6.0.3-i386-CD-1.iso

2. wget (idem, mais en mieux ;-p)

$ wget http://www.unsite.com/nom.iso
$ wget --recursive --limit 1 http://… (1)

$ wget --recursive http://a.eu/p/ --no-directories --directory-prefix $d --accept JPG,JPEG (2)

$ wget http://a.eu/photos/{001..146}.jpg (3)

$ wget http://imgs.xkcd.com/clickdrag/{1..50}{n,s}{1..50}{w,e}.png (4)

$ wget --recursive --no-parent --wait 5 --random-wait --domains ${a.eu} --no-clobber http://a.eu (5)
$ wget -r -np -w 5 --random-wait -D ${a.eu} -nc http://a.eu (5)

$ doc_crawler.py --download http://a.eu (6)

$ wget --recursive --no-parent --wait 5 --random-wait --convert-links --page-requisites --domains ${a.eu} --no-clobber http://a.eu (7)
$ wget -r -np -w 5 --random-wait -k -p -D ${a.eu} -nc http://a.eu (7)
1 Download all what wget finds one link away
2 Download all the JPG or JPEG photos from a web gallery
3 Download a series of photos. Series work everywhere : cp DSCN0{753..833}.JPG img/
4 Download all the tiles from XKCD 1110 "Click and Drag" ; please don’t be rude
5 Download all a website, and avoid being banned going too fast
6 Same as above but only files are downloaded (PDF, ODT, ZIP…). More info here.
7 Downloand a full website to read it offline later, won’t download twice the same files if the operation is interrupted and restarted.

3. doc_crawler.py : récupération récursive sur le web

$ doc_crawler.py http://a.com > url.lst (1)
$ doc_crawler.py --download-files url.lst (2)
$ doc_crawler.py --download-file http://a.com/file.txt (3)
$ doc_crawler.py --accept=jpe?g$ --download --single-page --wait=3 https://a.com/a_page (4)
1 Create a url.lst file that contains the links to all PDF, ODT, DOC, ZIP… files found while exploring recursively the pointed website
2 Download all the listed files (in a second time, after you checked that the list is good)
3 Download one by one the files that failed for instance
4 Download all the photos from a unique page web gallery, all found photos are directly downloaded on the fly, the random wait between two requests is never longer than 3 seconds

doc_crawler.py can be downloaded here, or installed via Pypi.

4. torsocks : récupérations via Tor

Comme vu ici.

$ torsocks ssh distant-domain.com
$ torsocks wget https://foo.onion/data.bar

5. md5sum : vérification de l’intégrité d’un fichier

$ md5sum nomFichier (1)
1 Affiche la somme de contrôle à l’écran. C’est pas ce qu’il y a de plus utile !

5.1. Redirection vers un fichier de contrôle

$ md5sum nomFichier > fichCtrl (1)
1 Ce fichier (fichCtrl) contient la checkcsum suivie du nom du fichier qui l’a générée c’est évidemment la même chose qu’à l’écran, mais c’est plus commode pour la vérification.

5.2. Vérification d’un fichier à partir du fichier de contrôle créé précédemment

$ md5sum -w -c fichCtrl
nomFichier : OK (1)
1 Si c’est bien le cas

5.3. Utilisation lors d’un téléchargement

En plus du fichier à télécharger, les sites donnent en général un fichier de même nom avec une extension '.md5'. Celui-ci est utilisable en tant que fichier de contrôle, avec la commande :

$ md5sum -w -c xxxxx.md5

Il ne faut pas se reposer sur les hash md5 dès lors qu’il s’agit de la vérification de l’intégrité de fichiers liés à la sécurité.

5.4. sha1sum : autre vérification de l’intégrité d’un fichier

À nouveau :

$ sha1sum nomFichier

Il ne faut pas non plus se fier sur les hash sha1 dès lors qu’il s’agit de la vérification de l’intégrité de fichiers liés à la sécurité.

5.5. sha256sum, voire sha512sum

Il s’utilisent de la même manière que le précédents.

Il est préférable de les utiliser concernant la vérification de fichiers impliqués dans la sécurité d’une communication (certificats de sécurité SSL, clés de chiffrement PGP) car des attaques par collisions ont été réalisés, et se démocratisent concernant md5sum et sha1sum.

Une collision, c’est quand deux fichiers différents obtiennent la même somme de contrôle. Il est alors possible de faire passer un certificat de sécurité pour un autre.