Table des matières
Algorithme
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.
Configuration
Proxy
Il faut éditer le fichier /etc/wgetrc
et configurer les lignes :
https_proxy = http://xx.xx.xx.xx:80/ http_proxy = http://xx.xx.xx.xx:80/ ftp_proxy = http://xx.xx.xx.xx:80/
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 --no-parent --content-disposition --domains=website.org,images.website2.org 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