====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=== [[http://www.linuxjournal.com/content/downloading-entire-web-site-wget|Downloading an Entire Web Site with wget]] {{ :cmd:wget:downloading_an_entire_web_site_with_wget_linux_journal_2019-10-16_09_10_44_.html |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 [[https://unix.stackexchange.com/questions/61132/how-do-i-use-wget-with-a-list-of-urls-and-their-corresponding-output-files|How do I use wget with a list of URLs and their corresponding output files?]] {{ :cmd:wget:how_do_i_use_wget_with_a_list_of_urls_and_their_corresponding_output_files_-_unix_linux_stack_exchange_2019-10-16_09_10_52_.html |Archive du 13/01/2013 le 16/10/2019}}