Ceci est une ancienne révision du document !
Algorithme
Inclusion / exclusion
Analyse de la fonction download_child
du fichier recur.c
.
- Etape 1 :
blacklist
Est-ce que l'URL a déjà été filtré / absorbé ?
Si oui : on ignore l'URL.
- Etape 2 : option
--https-only
Est-ce que l'option https-only
est activé ? Si oui, on ignore les URL ne commençant pas par HTTPS.
- Etape 3 : validation du schéma de l'URL
Est-ce que l'URL commence par HTTP ? Est-ce que l'URL commence par FTP ou FTPS et que --follow-ftp
est activé ? Si non : on ignore.
- Etape 4 : filtrer les liens absolus
Est-ce que l'option --relative
/-L
est actif et que le lien est absolu ? Si oui : on ignore.
- Etape 5 : filtrer les domaines
Est-ce que l'option --domains
/ -D
est actif et que le domaine ne fait pas partie de la liste autorisé ? Si oui, on ignore. Les wirdcards/regex ne sont pas autorisés.
Est-ce que l'option --exclude-domains
est actif et que le domaine fait partie de la liste interdite ? Si oui, on ignore. Les wirdcards/regex ne sont pas autorisés.
- Etape 6 : option
--no-parent
/-np
Toutes les conditions doivent être réunies :
--no-parent
actif.- Même schéma : l'URL de base et l'URL cible sont HTTP/HTTP, HTTPS/HTTP, HTTP/HTTPS ou HTTPS/HTTPS.
- Même sous-domaine
- Si même schéma, il faut le même port.
- Si
--page-requisites
n'est pas activé ou que--page-requisites
est activé et que le fichier n'est pas indispensable au rendu de la page.
On vérifie si le fichier est dans un sous-dossier de l'URL d'origine. L'option --ignore-case
est prise en compte.
- Etape 7 : include / exclude
Si ni l'option --include
/ -I
ni --exclude
/ -X
n'est utilisé : passé à l'étape suivante.
Est-ce que l'option --include
/ -I
est actif et que l'URL ne fait pas partie de la liste autorisé ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. L'option --ignore-case
est prise en compte.
Est-ce que l'option --exclude
/ -X
est actif et que l'URL fait partie de la liste interdite ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. L'option --ignore-case
est prise en compte.
- Etape 8 : accept-regex / reject-regex
Est-ce que l'option --accept-regex
est actif et que l'URL complet ne fait pas partie de la liste autorisé ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. L'option --ignore-case
n'est pas prise en compte.
Est-ce que l'option --reject-regex
est actif et que l'URL complet ne fait partie de la liste interdite ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. L'option --ignore-case
n'est pas prise en compte.
- Etape 9 : Vérification du niveau de récursion
Si le niveau maximum de récursion est atteint : on ignore.
- Etape 10 : Est-ce que le nom du fichier est filtré ?
Si ni l'option --accept
/ -A
ni --reject
/ -R
n'est utilisé : passé à l'étape suivante.
Est-ce que l'option --accept
/ -A
est actif et que l'URL ne fait pas partie de la liste autorisé ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. Si les wildcards ne sont pas utilisés, on compare les suffixes. L'option --ignore-case
est prise en compte.
Est-ce que l'option --reject
/ -R
est actif et que l'URL fait partie de la liste interdite ? Si oui, on ignore. Les wildcards *?[]
sont autorisés. Si les wildcards ne sont pas utilisés, on compare les suffixes L'option --ignore-case
est prise en compte.
- Etape 11 : est-ce que l'exploration des autres domaines est autorisé ?
Si les schémas sont compatibles (HTTP/HTTPS), on ignore si l'URL est dans un autre domaine / sous-domaine et que l'option --span-hosts
/ H
n'est pas activé.
- Etape 12 : robots.txt
Est-ce qu'on applique la contrainte de robots.txt
. Il existe une option use_robots
qui vaut true
par défaut et qui ne semble pas être personnalisable.
Si toutes les étapes sont respectées, on télécharge le lien.
Exemples
Télécharger un site entier
Downloading an Entire Web Site with wget Archive du 05/09/2008 le 16/10/2019
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --span-hosts --domains=website.org,images.website2.org --no-parent www.website.org/tutorials/html/
Pas le bon nom de fichier
On téléchargeant l'url https://hal.archives-ouvertes.fr/hal-01516461/document
wget
considère le fichier document
alors que Firefox propose le nom de fichier r_95YUWVDH.pdf
. Il faut utiliser l'option --content-disposition
.
wget --content-disposition https://hal.archives-ouvertes.fr/hal-01516461/document
How do I use wget with a list of URLs and their corresponding output files? Archive du 13/01/2013 le 16/10/2019