GNU Wget 1.20: by Hrvoje Nik Si C and Others
GNU Wget 1.20: by Hrvoje Nik Si C and Others
GNU Wget 1.20: by Hrvoje Nik Si C and Others
20
The non-interactive download utility
Updated for Wget 1.20, 13 November 2018
Table of Contents
1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Invoking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 URL Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Option Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Basic Startup Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4 Logging and Input File Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5 Download Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Directory Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7 HTTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8 HTTPS (SSL/TLS) Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 FTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.10 FTPS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.11 Recursive Retrieval Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.12 Recursive Accept/Reject Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.13 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Recursive Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Following Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1 Spanning Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Types of Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 Directory-Based Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4 Relative Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5 Following FTP Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Time-Stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1 Time-Stamping Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 HTTP Time-Stamping Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 FTP Time-Stamping Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6 Startup File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.1 Wgetrc Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2 Wgetrc Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.3 Wgetrc Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4 Sample Wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1 Simple Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.2 Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3 Very Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
ii
8 Various. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1 Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.2 Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.3 Web Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.4 Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Primary List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Obsolete Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.5 Internet Relay Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.6 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.7 Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.8 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.1 Robot Exclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.2 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9.3 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Concept Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
1
1 Overview
GNU Wget is a free utility for non-interactive download of files from the Web. It supports http,
https, and ftp protocols, as well as retrieval through http proxies.
This chapter is a partial overview of Wget’s features.
• Wget is non-interactive, meaning that it can work in the background, while the user is not
logged on. This allows you to start a retrieval and disconnect from the system, letting Wget
finish the work. By contrast, most of the Web browsers require constant user’s presence,
which can be a great hindrance when transferring a lot of data.
• Wget can follow links in html, xhtml, and css pages, to create local versions of remote web
sites, fully recreating the directory structure of the original site. This is sometimes referred
to as “recursive downloading.” While doing that, Wget respects the Robot Exclusion
Standard (/robots.txt). Wget can be instructed to convert the links in downloaded files
to point at the local files, for offline viewing.
• File name wildcard matching and recursive mirroring of directories are available when re-
trieving via ftp. Wget can read the time-stamp information given by both http and ftp
servers, and store it locally. Thus Wget can see if the remote file has changed since last
retrieval, and automatically retrieve the new version if it has. This makes Wget suitable
for mirroring of ftp sites, as well as home pages.
• Wget has been designed for robustness over slow or unstable network connections; if a
download fails due to a network problem, it will keep retrying until the whole file has
been retrieved. If the server supports regetting, it will instruct the server to continue the
download from where it left off.
• Wget supports proxy servers, which can lighten the network load, speed up retrieval and
provide access behind firewalls. Wget uses the passive ftp downloading by default, active
ftp being an option.
• Wget supports IP version 6, the next generation of IP. IPv6 is autodetected at compile-time,
and can be disabled at either build or run time. Binaries built with IPv6 support work well
in both IPv4-only and dual family environments.
• Built-in features offer mechanisms to tune which links you wish to follow (see Chapter 4
[Following Links], page 34).
• The progress of individual downloads is traced using a progress gauge. Interactive downloads
are tracked using a “thermometer”-style gauge, whereas non-interactive ones are traced with
dots, each dot representing a fixed amount of data received (1KB by default). Either gauge
can be customized to your preferences.
• Most of the features are fully configurable, either through command line options, or via
the initialization file .wgetrc (see Chapter 6 [Startup File], page 40). Wget allows you to
define global startup files (/usr/local/etc/wgetrc by default) for site settings. You can
also specify the location of a startup file with the –config option. To disable the reading of
config files, use –no-config. If both –config and –no-config are given, –no-config is ignored.
• Finally, GNU Wget is free software. This means that everyone may use it, redistribute it
and/or modify it under the terms of the GNU General Public License, as published by the
Free Software Foundation (see the file COPYING that came with GNU Wget, for details).
2
2 Invoking
By default, Wget is very simple to invoke. The basic syntax is:
wget [option]... [URL]...
Wget will simply download all the urls specified on the command line. URL is a Uniform
Resource Locator, as defined below.
However, you may wish to change some of the default parameters of Wget. You can do it
two ways: permanently, adding the appropriate command to .wgetrc (see Chapter 6 [Startup
File], page 40), or specifying it on the command line.
‘-e command’
‘--execute command’
Execute command as if it were a part of .wgetrc (see Chapter 6 [Startup File],
page 40). A command thus invoked will be executed after the commands in .wgetrc,
thus taking precedence over them. If you need to specify more than one wgetrc
command, use multiple instances of ‘-e’.
If the file is an external one, the document will be automatically treated as ‘html’
if the Content-Type matches ‘text/html’. Furthermore, the file’s location will be
implicitly used as base href if none was specified.
‘--input-metalink=file’
Downloads files covered in local Metalink file. Metalink version 3 and 4 are sup-
ported.
‘--keep-badhash’
Keeps downloaded Metalink’s files with a bad hash. It appends .badhash to the name
of Metalink’s files which have a checksum mismatch, except without overwriting
existing files.
‘--metalink-over-http’
Issues HTTP HEAD request instead of GET and extracts Metalink metadata from
response headers. Then it switches to Metalink download. If no valid Metalink meta-
data is found, it falls back to ordinary HTTP download. Enables ‘Content-Type:
application/metalink4+xml’ files download/processing.
‘--metalink-index=number’
Set the Metalink ‘application/metalink4+xml’ metaurl ordinal NUMBER. From 1
to the total number of “application/metalink4+xml” available. Specify 0 or ‘inf’ to
choose the first good one. Metaurls, such as those from a ‘--metalink-over-http’,
may have been sorted by priority key’s value; keep this in mind to choose the right
NUMBER.
‘--preferred-location’
Set preferred location for Metalink resources. This has effect if multiple resources
with same priority are available.
‘-F’
‘--force-html’
When input is read from a file, force it to be treated as an html file. This enables
you to retrieve relative links from existing html files on your local disk, by adding
<base href="url"> to html, or using the ‘--base’ command-line option.
‘-B URL’
‘--base=URL’
Resolves relative links using URL as the point of reference, when reading links
from an HTML file specified via the ‘-i’/‘--input-file’ option (together with
‘--force-html’, or when the input file was fetched remotely from a server describing
it as html). This is equivalent to the presence of a BASE tag in the html input file,
with URL as the value for the href attribute.
For instance, if you specify ‘http://foo/bar/a.html’ for URL, and
Wget reads ‘../baz/b.html’ from the input file, it would be resolved to
‘http://foo/baz/b.html’.
‘--config=FILE’
Specify the location of a startup file you wish to use instead of the default one(s).
Use –no-config to disable reading of config files. If both –config and –no-config are
given, –no-config is ignored.
‘--rejected-log=logfile’
Logs all URL rejections to logfile as comma separated values. The values include
the reason of rejection, the URL and the parent URL it was found in.
Chapter 2: Invoking 6
Beginning with Wget 1.7, if you use ‘-c’ on a file which is of equal size as the one on
the server, Wget will refuse to download the file and print an explanatory message.
The same happens when the file is smaller on the server than locally (presumably
because it was changed on the server since your last download attempt)—because
“continuing” is not meaningful, no download occurs.
On the other side of the coin, while using ‘-c’, any file that’s bigger on the server
than locally will be considered an incomplete download and only (length(remote)
- length(local)) bytes will be downloaded and tacked onto the end of the local
file. This behavior can be desirable in certain cases—for instance, you can use ‘wget
-c’ to download just the new portion that’s been appended to a data collection or
log file.
However, if the file is bigger on the server because it’s been changed, as opposed to
just appended to, you’ll end up with a garbled file. Wget has no way of verifying
that the local file is really a valid prefix of the remote file. You need to be especially
careful of this when using ‘-c’ in conjunction with ‘-r’, since every file will be
considered as an "incomplete download" candidate.
Another instance where you’ll get a garbled file if you try to use ‘-c’ is if you have
a lame http proxy that inserts a “transfer interrupted” string into the local file. In
the future a “rollback” option may be added to deal with this case.
Note that ‘-c’ only works with ftp servers and with http servers that support the
Range header.
‘--start-pos=OFFSET’
Start downloading at zero-based position OFFSET. Offset may be expressed in
bytes, kilobytes with the ‘k’ suffix, or megabytes with the ‘m’ suffix, etc.
‘--start-pos’ has higher precedence over ‘--continue’. When ‘--start-pos’
and ‘--continue’ are both specified, wget will emit a warning then proceed as
if ‘--continue’ was absent.
Server support for continued download is required, otherwise ‘--start-pos’ cannot
help. See ‘-c’ for details.
‘--progress=type’
Select the type of the progress indicator you wish to use. Legal indicators are “dot”
and “bar”.
The “bar” indicator is used by default. It draws an ascii progress bar graphics
(a.k.a “thermometer” display) indicating the status of retrieval. If the output is not
a TTY, the “dot” bar will be used by default.
Use ‘--progress=dot’ to switch to the “dot” display. It traces the retrieval by
printing dots on the screen, each dot representing a fixed amount of downloaded
data.
The progress type can also take one or more parameters. The parameters vary based
on the type selected. Parameters to type are passed by appending them to the type
sperated by a colon (:) like this: ‘--progress=type:parameter1:parameter2’.
When using the dotted retrieval, you may set the style by specifying the type as
‘dot:style’. Different styles assign different meaning to one dot. With the default
style each dot represents 1K, there are ten dots in a cluster and 50 dots in a line.
The binary style has a more “computer”-like orientation—8K dots, 16-dots clusters
and 48 dots per line (which makes for 384K lines). The mega style is suitable for
downloading large files—each dot represents 64K retrieved, there are eight dots in
a cluster, and 48 dots on each line (so each line contains 3M). If mega is not enough
Chapter 2: Invoking 9
then you can use the giga style—each dot represents 1M retrieved, there are eight
dots in a cluster, and 32 dots on each line (so each line contains 32M).
With ‘--progress=bar’, there are currently two possible parameters, force and
noscroll.
When the output is not a TTY, the progress bar always falls back to “dot”, even
if ‘--progress=bar’ was passed to Wget during invocation. This behaviour can
be overridden and the “bar” output forced by using the “force” parameter as
‘--progress=bar:force’.
By default, the ‘bar’ style progress bar scroll the name of the file from left to right
for the file being downloaded if the filename exceeds the maximum length allotted
for its display. In certain cases, such as with ‘--progress=bar:force’, one may not
want the scrolling filename in the progress bar. By passing the “noscroll” parameter,
Wget can be forced to display as much of the filename as possible without scrolling
through it.
Note that you can set the default style using the progress command in .wgetrc.
That setting may be overridden from the command line. For example, to force the
bar output without scrolling, use ‘--progress=bar:force:noscroll’.
‘--show-progress’
Force wget to display the progress bar in any verbosity.
By default, wget only displays the progress bar in verbose mode. One may however,
want wget to display the progress bar on screen in conjunction with any other
verbosity modes like ‘--no-verbose’ or ‘--quiet’. This is often a desired a property
when invoking wget to download several small/large files. In such a case, wget could
simply be invoked with this parameter to get a much cleaner output on the screen.
This option will also force the progress bar to be printed to stderr when used
alongside the ‘--logfile’ option.
‘-N’
‘--timestamping’
Turn on time-stamping. See Chapter 5 [Time-Stamping], page 38, for details.
‘--no-if-modified-since’
Do not send If-Modified-Since header in ‘-N’ mode. Send preliminary HEAD request
instead. This has only effect in ‘-N’ mode.
‘--no-use-server-timestamps’
Don’t set the local file’s timestamp by the one on the server.
By default, when a file is downloaded, its timestamps are set to match those from
the remote file. This allows the use of ‘--timestamping’ on subsequent invocations
of wget. However, it is sometimes useful to base the local file’s timestamp on when
it was actually downloaded; for that purpose, the ‘--no-use-server-timestamps’
option has been provided.
‘-S’
‘--server-response’
Print the headers sent by http servers and responses sent by ftp servers.
‘--spider’
When invoked with this option, Wget will behave as a Web spider, which means
that it will not download the pages, just check that they are there. For example,
you can use Wget to check your bookmarks:
wget --spider --force-html -i bookmarks.html
Chapter 2: Invoking 10
This feature needs much more work for Wget to get close to the functionality of real
web spiders.
‘-T seconds’
‘--timeout=seconds’
Set the network timeout to seconds seconds. This is equivalent to specifying
‘--dns-timeout’, ‘--connect-timeout’, and ‘--read-timeout’, all at the same
time.
When interacting with the network, Wget can check for timeout and abort the
operation if it takes too long. This prevents anomalies like hanging reads and infinite
connects. The only timeout enabled by default is a 900-second read timeout. Setting
a timeout to 0 disables it altogether. Unless you know what you are doing, it is best
not to change the default timeout settings.
All timeout-related options accept decimal values, as well as subsecond values. For
example, ‘0.1’ seconds is a legal (though unwise) choice of timeout. Subsecond
timeouts are useful for checking server response times or for testing network latency.
‘--dns-timeout=seconds’
Set the DNS lookup timeout to seconds seconds. DNS lookups that don’t complete
within the specified time will fail. By default, there is no timeout on DNS lookups,
other than that implemented by system libraries.
‘--connect-timeout=seconds’
Set the connect timeout to seconds seconds. TCP connections that take longer to
establish will be aborted. By default, there is no connect timeout, other than that
implemented by system libraries.
‘--read-timeout=seconds’
Set the read (and write) timeout to seconds seconds. The “time” of this timeout
refers to idle time: if, at any point in the download, no data is received for more
than the specified number of seconds, reading fails and the download is restarted.
This option does not directly affect the duration of the entire download.
Of course, the remote server may choose to terminate the connection sooner than
this option requires. The default read timeout is 900 seconds.
‘--limit-rate=amount’
Limit the download speed to amount bytes per second. Amount may be expressed
in bytes, kilobytes with the ‘k’ suffix, or megabytes with the ‘m’ suffix. For example,
‘--limit-rate=20k’ will limit the retrieval rate to 20KB/s. This is useful when, for
whatever reason, you don’t want Wget to consume the entire available bandwidth.
This option allows the use of decimal numbers, usually in conjunction with power
suffixes; for example, ‘--limit-rate=2.5k’ is a legal value.
Note that Wget implements the limiting by sleeping the appropriate amount of time
after a network read that took less time than specified by the rate. Eventually this
strategy causes the TCP transfer to slow down to approximately the specified rate.
However, it may take some time for this balance to be achieved, so don’t be surprised
if limiting the rate doesn’t work well with very small files.
‘-w seconds’
‘--wait=seconds’
Wait the specified number of seconds between the retrievals. Use of this option is
recommended, as it lightens the server load by making the requests less frequent.
Instead of in seconds, the time can be specified in minutes using the m suffix, in
hours using h suffix, or in days using d suffix.
Chapter 2: Invoking 11
Specifying a large value for this option is useful if the network or the destination
host is down, so that Wget can wait long enough to reasonably expect the network
error to be fixed before the retry. The waiting interval specified by this function is
influenced by --random-wait, which see.
‘--waitretry=seconds’
If you don’t want Wget to wait between every retrieval, but only between retries of
failed downloads, you can use this option. Wget will use linear backoff, waiting 1
second after the first failure on a given file, then waiting 2 seconds after the second
failure on that file, up to the maximum number of seconds you specify.
By default, Wget will assume a value of 10 seconds.
‘--random-wait’
Some web sites may perform log analysis to identify retrieval programs such as Wget
by looking for statistically significant similarities in the time between requests. This
option causes the time between requests to vary between 0.5 and 1.5 * wait seconds,
where wait was specified using the ‘--wait’ option, in order to mask Wget’s presence
from such analysis.
A 2001 article in a publication devoted to development on a popular consumer
platform provided code to perform this analysis on the fly. Its author suggested
blocking at the class C address level to ensure automated retrieval programs were
blocked despite changing DHCP-supplied addresses.
The ‘--random-wait’ option was inspired by this ill-advised recommendation to
block many unrelated users from a web site due to the actions of one.
‘--no-proxy’
Don’t use proxies, even if the appropriate *_proxy environment variable is defined.
See Section 8.1 [Proxies], page 54, for more information about the use of proxies
with Wget.
‘-Q quota’
‘--quota=quota’
Specify download quota for automatic retrievals. The value can be specified in bytes
(default), kilobytes (with ‘k’ suffix), or megabytes (with ‘m’ suffix).
Note that quota will never affect downloading a single file. So if you specify ‘wget
-Q10k https://example.com/ls-lR.gz’, all of the ls-lR.gz will be downloaded.
The same goes even when several urls are specified on the command-line. However,
quota is respected when retrieving either recursively, or from an input file. Thus you
may safely type ‘wget -Q2m -i sites’—download will be aborted when the quota
is exceeded.
Setting quota to 0 or to ‘inf’ unlimits the download quota.
‘--no-dns-cache’
Turn off caching of DNS lookups. Normally, Wget remembers the IP addresses it
looked up from DNS so it doesn’t have to repeatedly contact the DNS server for the
same (typically small) set of hosts it retrieves from. This cache exists in memory
only; a new Wget run will contact DNS again.
However, it has been reported that in some situations it is not desirable to cache host
names, even for the duration of a short-running application like Wget. With this
option Wget issues a new DNS lookup (more precisely, a new call to gethostbyname
or getaddrinfo) each time it makes a new connection. Please note that this option
will not affect caching that might be performed by the resolving library or by an
external caching layer, such as NSCD.
Chapter 2: Invoking 12
If you don’t understand exactly what this option does, you probably won’t need it.
‘--restrict-file-names=modes’
Change which characters found in remote URLs must be escaped during generation
of local filenames. Characters that are restricted by this option are escaped, i.e.
replaced with ‘%HH’, where ‘HH’ is the hexadecimal number that corresponds to the
restricted character. This option may also be used to force all alphabetical cases to
be either lower- or uppercase.
By default, Wget escapes the characters that are not valid or safe as part of file
names on your operating system, as well as control characters that are typically
unprintable. This option is useful for changing these defaults, perhaps because you
are downloading to a non-native partition, or because you want to disable escaping
of the control characters, or you want to further restrict characters to only those in
the ascii range of values.
The modes are a comma-separated set of text values. The acceptable values are
‘unix’, ‘windows’, ‘nocontrol’, ‘ascii’, ‘lowercase’, and ‘uppercase’. The values
‘unix’ and ‘windows’ are mutually exclusive (one will override the other), as are
‘lowercase’ and ‘uppercase’. Those last are special cases, as they do not change
the set of characters that would be escaped, but rather force local file paths to be
converted either to lower- or uppercase.
When “unix” is specified, Wget escapes the character ‘/’ and the control characters
in the ranges 0–31 and 128–159. This is the default on Unix-like operating systems.
When “windows” is given, Wget escapes the characters ‘\’, ‘|’, ‘/’, ‘:’, ‘?’, ‘"’,
‘*’, ‘<’, ‘>’, and the control characters in the ranges 0–31 and 128–159. In addi-
tion to this, Wget in Windows mode uses ‘+’ instead of ‘:’ to separate host and
port in local file names, and uses ‘@’ instead of ‘?’ to separate the query por-
tion of the file name from the rest. Therefore, a URL that would be saved as
‘www.xemacs.org:4300/search.pl?input=blah’ in Unix mode would be saved as
‘www.xemacs.org+4300/search.pl@input=blah’ in Windows mode. This mode is
the default on Windows.
If you specify ‘nocontrol’, then the escaping of the control characters is also
switched off. This option may make sense when you are downloading URLs whose
names contain UTF-8 characters, on a system which can save and display filenames
in UTF-8 (some possible byte values used in UTF-8 byte sequences fall in the range
of values designated by Wget as “controls”).
The ‘ascii’ mode is used to specify that any bytes whose values are outside the
range of ascii characters (that is, greater than 127) shall be escaped. This can be
useful when saving filenames whose encoding does not match the one used locally.
‘-4’
‘--inet4-only’
‘-6’
‘--inet6-only’
Force connecting to IPv4 or IPv6 addresses. With ‘--inet4-only’ or ‘-4’, Wget
will only connect to IPv4 hosts, ignoring AAAA records in DNS, and refusing to
connect to IPv6 addresses specified in URLs. Conversely, with ‘--inet6-only’ or
‘-6’, Wget will only connect to IPv6 hosts and ignore A records and IPv4 addresses.
Neither options should be needed normally. By default, an IPv6-aware Wget will
use the address family specified by the host’s DNS record. If the DNS responds with
both IPv4 and IPv6 addresses, Wget will try them in sequence until it finds one it
can connect to. (Also see --prefer-family option described below.)
Chapter 2: Invoking 13
These options can be used to deliberately force the use of IPv4 or IPv6 address
families on dual family systems, usually to aid debugging or to deal with broken
network configuration. Only one of ‘--inet6-only’ and ‘--inet4-only’ may be
specified at the same time. Neither option is available in Wget compiled without
IPv6 support.
‘--prefer-family=none/IPv4/IPv6’
When given a choice of several addresses, connect to the addresses with specified
address family first. The address order returned by DNS is used without change by
default.
This avoids spurious errors and connect attempts when accessing hosts that resolve
to both IPv6 and IPv4 addresses from IPv4 networks. For example, ‘www.kame.net’
resolves to ‘2001:200:0:8002:203:47ff:fea5:3085’ and to ‘203.178.141.194’.
When the preferred family is IPv4, the IPv4 address is used first; when the preferred
family is IPv6, the IPv6 address is used first; if the specified value is none, the
address order returned by DNS is used without change.
Unlike ‘-4’ and ‘-6’, this option doesn’t inhibit access to any address family, it only
changes the order in which the addresses are accessed. Also note that the reordering
performed by this option is stable—it doesn’t affect order of addresses of the same
family. That is, the relative order of all IPv4 addresses and of all IPv6 addresses
remains intact in all cases.
‘--retry-connrefused’
Consider “connection refused” a transient error and try again. Normally Wget gives
up on a URL when it is unable to connect to the site because failure to connect
is taken as a sign that the server is not running at all and that retries would not
help. This option is for mirroring unreliable sites whose servers tend to disappear
for short periods of time.
‘--user=user’
‘--password=password’
Specify the username user and password password for both ftp and http
file retrieval. These parameters can be overridden using the ‘--ftp-user’ and
‘--ftp-password’ options for ftp connections and the ‘--http-user’ and
‘--http-password’ options for http connections.
‘--ask-password’
Prompt for a password for each connection established. Cannot be specified when
‘--password’ is being used, because they are mutually exclusive.
‘--use-askpass=command’
Prompt for a user and password using the specified command. If no command is
specified then the command in the environment variable WGET ASKPASS is used.
If WGET ASKPASS is not set then the command in the environment variable
SSH ASKPASS is used.
You can set the default command for use-askpass in the .wgetrc. That setting may
be overridden from the command line.
‘--no-iri’
Turn off internationalized URI (IRI) support. Use ‘--iri’ to turn it on. IRI support
is activated by default.
You can set the default state of IRI support using the iri command in .wgetrc.
That setting may be overridden from the command line.
Chapter 2: Invoking 14
‘--local-encoding=encoding’
Force Wget to use encoding as the default system encoding. That affects how Wget
converts URLs specified as arguments from locale to utf-8 for IRI support.
Wget use the function nl_langinfo() and then the CHARSET environment variable
to get the locale. If it fails, ascii is used.
You can set the default local encoding using the local_encoding command in
.wgetrc. That setting may be overridden from the command line.
‘--remote-encoding=encoding’
Force Wget to use encoding as the default remote server encoding. That affects
how Wget converts URIs found in files from remote encoding to utf-8 during a
recursive fetch. This options is only useful for IRI support, for the interpretation of
non-ascii characters.
For HTTP, remote encoding can be found in HTTP Content-Type header and in
HTML Content-Type http-equiv meta tag.
You can set the default encoding using the remoteencoding command in .wgetrc.
That setting may be overridden from the command line.
‘--unlink’
Force Wget to unlink file instead of clobbering existing file. This option is useful
for downloading to the directory with hardlinks.
not “see” number remote directory components. Here are several examples of how
‘--cut-dirs’ option works.
No options -> ftp.xemacs.org/pub/xemacs/
-nH -> pub/xemacs/
-nH --cut-dirs=1 -> xemacs/
-nH --cut-dirs=2 -> .
‘-P prefix’
‘--directory-prefix=prefix’
Set directory prefix to prefix. The directory prefix is the directory where all other
files and subdirectories will be saved to, i.e. the top of the retrieval tree. The default
is ‘.’ (the current directory).
‘-E’
‘--adjust-extension’
If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the
URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause
the suffix ‘.html’ to be appended to the local filename. This is useful, for in-
stance, when you’re mirroring a remote site that uses ‘.asp’ pages, but you want
the mirrored pages to be viewable on your stock Apache server. Another good
use for this is when you’re downloading CGI-generated materials. A URL like
‘http://site.com/article.cgi?25’ will be saved as article.cgi?25.html.
Note that filenames changed in this way will be re-downloaded every time you re-
mirror a site, because Wget can’t tell that the local X.html file corresponds to
remote URL ‘X’ (since it doesn’t yet know that the URL produces output of type
‘text/html’ or ‘application/xhtml+xml’.
As of version 1.12, Wget will also ensure that any downloaded files of type ‘text/css’
end in the suffix ‘.css’, and the option was renamed from ‘--html-extension’, to
better reflect its new behavior. The old option name is still acceptable, but should
now be considered deprecated.
As of version 1.19.2, Wget will also ensure that any downloaded files with a
Content-Encoding of ‘br’, ‘compress’, ‘deflate’ or ‘gzip’ end in the suffix ‘.br’,
‘.Z’, ‘.zlib’ and ‘.gz’ respectively.
At some point in the future, this option may well be expanded to include suffixes
for other types of content, including content types that are not parsed by Wget.
Chapter 2: Invoking 16
‘--http-user=user’
‘--http-password=password’
Specify the username user and password password on an http server. According to
the type of the challenge, Wget will encode them using either the basic (insecure),
the digest, or the Windows NTLM authentication scheme.
Another way to specify username and password is in the url itself (see Section 2.1
[URL Format], page 2). Either method reveals your password to anyone who bothers
to run ps. To prevent the passwords from being seen, use the ‘--use-askpass’ or
store them in .wgetrc or .netrc, and make sure to protect those files from other
users with chmod. If the passwords are really important, do not leave them lying in
those files either—edit the files and delete them after Wget has started the download.
See Section 9.2 [Security Considerations], page 59, for more information about se-
curity issues with Wget.
‘--no-http-keep-alive’
Turn off the “keep-alive” feature for HTTP downloads. Normally, Wget asks the
server to keep the connection open so that, when you download more than one
document from the same server, they get transferred over the same TCP connection.
This saves time and at the same time reduces the load on the server.
This option is useful when, for some reason, persistent (keep-alive) connections don’t
work for you, for example due to a server bug or due to the inability of server-side
scripts to cope with the connections.
‘--no-cache’
Disable server-side cache. In this case, Wget will send the remote server an ap-
propriate directive (‘Pragma: no-cache’) to get the file from the remote service,
rather than returning the cached version. This is especially useful for retrieving and
flushing out-of-date documents on proxy servers.
Caching is allowed by default.
‘--no-cookies’
Disable the use of cookies. Cookies are a mechanism for maintaining server-side
state. The server sends the client a cookie using the Set-Cookie header, and the
client responds with the same cookie upon further requests. Since cookies allow the
server owners to keep track of visitors and for sites to exchange this information,
some consider them a breach of privacy. The default is to use cookies; however,
storing cookies is not on by default.
‘--load-cookies file’
Load cookies from file before the first HTTP retrieval. file is a textual file in the
format originally used by Netscape’s cookies.txt file.
You will typically use this option when mirroring sites that require that you be
logged in to access some or all of their content. The login process typically works by
the web server issuing an http cookie upon receiving and verifying your credentials.
The cookie is then resent by the browser when accessing that part of the site, and
so proves your identity.
Mirroring such a site requires Wget to send the same cookies your browser sends
when communicating with the site. This is achieved by ‘--load-cookies’—simply
point Wget to the location of the cookies.txt file, and it will send the same cookies
your browser would send in the same situation. Different browsers keep textual
cookie files in different locations:
Netscape 4.x.
The cookies are in ~/.netscape/cookies.txt.
Chapter 2: Invoking 17
You may define more than one additional header by specifying ‘--header’ more
than once.
wget --header=’Accept-Charset: iso-8859-2’ \
--header=’Accept-Language: hr’ \
http://fly.srk.fer.hr/
Specification of an empty string as the header value will clear all previous user-
defined headers.
As of Wget 1.10, this option can be used to override headers otherwise generated
automatically. This example instructs Wget to connect to localhost, but to specify
‘foo.bar’ in the Host header:
wget --header="Host: foo.bar" http://localhost/
In versions of Wget prior to 1.10 such use of ‘--header’ caused sending of duplicate
headers.
‘--compression=type’
Choose the type of compression to be used. Legal values are ‘auto’, ‘gzip’ and
‘none’.
If ‘auto’ or ‘gzip’ are specified, Wget asks the server to compress the file using
the gzip compression format. If the server compresses the file and responds with
the Content-Encoding header field set appropriately, the file will be decompressed
automatically.
If ‘none’ is specified, wget will not ask the server to compress the file and will not
decompress any server responses. This is the default.
Compression support is currently experimental. In case it is turned on, please report
any bugs to bug-wget@gnu.org.
‘--max-redirect=number’
Specifies the maximum number of redirections to follow for a resource. The default
is 20, which is usually far more than necessary. However, on those occasions where
you want to allow more (or fewer), this is the option to use.
‘--proxy-user=user’
‘--proxy-password=password’
Specify the username user and password password for authentication on a proxy
server. Wget will encode them using the basic authentication scheme.
Security considerations similar to those with ‘--http-password’ pertain here as
well.
‘--referer=url’
Include ‘Referer: url’ header in HTTP request. Useful for retrieving documents with
server-side processing that assume they are always being retrieved by interactive web
browsers and only come out properly when Referer is set to one of the pages that
point to them.
‘--save-headers’
Save the headers sent by the http server to the file, preceding the actual contents,
with an empty line as the separator.
‘-U agent-string’
‘--user-agent=agent-string’
Identify as agent-string to the http server.
The http protocol allows the clients to identify themselves using a User-Agent
header field. This enables distinguishing the www software, usually for statis-
Chapter 2: Invoking 19
‘--post-data=string’
‘--post-file=file’
Use POST as the method for all HTTP requests and send the specified data in the
request body. ‘--post-data’ sends string as data, whereas ‘--post-file’ sends the
contents of file. Other than that, they work in exactly the same way. In particular,
they both expect content of the form key1=value1&key2=value2, with percent-
encoding for special characters; the only difference is that one expects its content as
a command-line parameter and the other accepts its content from a file. In particu-
lar, ‘--post-file’ is not for transmitting files as form attachments: those must ap-
pear as key=value data (with appropriate percent-coding) just like everything else.
Wget does not currently support multipart/form-data for transmitting POST
data; only application/x-www-form-urlencoded. Only one of ‘--post-data’ and
‘--post-file’ should be specified.
Please note that wget does not require the content to be of the form
key1=value1&key2=value2, and neither does it test for it. Wget will simply
transmit whatever data is provided to it. Most servers however expect the POST
data to be in the above format when processing HTML Forms.
When sending a POST request using the ‘--post-file’ option, Wget treats the file
as a binary file and will send every character in the POST request without stripping
trailing newline or formfeed characters. Any other control characters in the text
will also be sent as-is in the POST request.
Please be aware that Wget needs to know the size of the POST data in advance.
Therefore the argument to --post-file must be a regular file; specifying a FIFO
or something like /dev/stdin won’t work. It’s not quite clear how to work around
this limitation inherent in HTTP/1.0. Although HTTP/1.1 introduces chunked
transfer that doesn’t require knowing the request length in advance, a client can’t
use chunked unless it knows it’s talking to an HTTP/1.1 server. And it can’t know
that until it receives a response, which in turn requires the request to have been
completed – a chicken-and-egg problem.
Note: As of version 1.15 if Wget is redirected after the POST request is completed,
its behaviour will depend on the response code returned by the server. In case of a
301 Moved Permanently, 302 Moved Temporarily or 307 Temporary Redirect, Wget
will, in accordance with RFC2616, continue to send a POST request. In case a
server wants the client to change the Request method upon redirection, it should
send a 303 See Other response code.
This example shows how to log in to a server using POST and then proceed to
download the desired pages, presumably only accessible to authorized users:
Chapter 2: Invoking 20
‘--method=HTTP-Method’
For the purpose of RESTful scripting, Wget allows sending of other HTTP Methods
without the need to explicitly set them using ‘--header=Header-Line’. Wget will
use whatever string is passed to it after ‘--method’ as the HTTP Method to the
server.
‘--body-data=Data-String’
‘--body-file=Data-File’
Must be set when additional data needs to be sent to the server along with the
Method specified using ‘--method’. ‘--body-data’ sends string as data, whereas
‘--body-file’ sends the contents of file. Other than that, they work in exactly the
same way.
Currently, ‘--body-file’ is not for transmitting files as a whole. Wget does
not currently support multipart/form-data for transmitting data; only
application/x-www-form-urlencoded. In the future, this may be changed so
that wget sends the ‘--body-file’ as a complete file instead of sending its contents
to the server. Please be aware that Wget needs to know the contents of BODY
Data in advance, and hence the argument to ‘--body-file’ should be a regular
file. See ‘--post-file’ for a more detailed explanation. Only one of ‘--body-data’
and ‘--body-file’ should be specified.
If Wget is redirected after the request is completed, Wget will suspend the current
method and send a GET request till the redirection is completed. This is true
for all redirection response codes except 307 Temporary Redirect which is used to
explicitly specify that the request method should not change. Another exception is
when the method is set to POST, in which case the redirection rules specified under
‘--post-data’ are followed.
‘--content-disposition’
If this is set to on, experimental (not fully-functional) support for
Content-Disposition headers is enabled. This can currently result in extra
round-trips to the server for a HEAD request, and is known to suffer from a few
bugs, which is why it is not currently enabled by default.
This option is useful for some file-downloading CGI programs that use
Content-Disposition headers to describe what the name of a downloaded file
should be.
When combined with ‘--metalink-over-http’ and ‘--trust-server-names’,
a ‘Content-Type: application/metalink4+xml’ file is named using the
Content-Disposition filename field, if available.
Chapter 2: Invoking 21
‘--content-on-error’
If this is set to on, wget will not skip the content when the server responds with a
http status code that indicates error.
‘--trust-server-names’
If this is set, on a redirect, the local file name will be based on the redirection URL.
By default the local file name is based on the original URL. When doing recursive
retrieving this can be helpful because in many web sites redirected URLs correspond
to an underlying file structure, while link URLs do not.
‘--auth-no-challenge’
If this option is given, Wget will send Basic HTTP authentication information
(plaintext username and password) for all requests, just like Wget 1.10.2 and prior
did by default.
Use of this option is not recommended, and is intended only to support some few
obscure servers, which never send HTTP authentication challenges, but accept un-
solicited auth info, say, in addition to form-based authentication.
‘--retry-on-host-error’
Consider host errors, such as “Temporary failure in name resolution”, as non-fatal,
transient errors.
‘--retry-on-http-error=code[,code,...]’
Consider given HTTP response codes as non-fatal, transient errors. Supply a
comma-separated list of 3-digit HTTP response codes as argument. Useful to work
around special circumstances where retries are required, but the server responds
with an error code normally not retried by Wget. Such errors might be 503 (Ser-
vice Unavailable) and 429 (Too Many Requests). Retries enabled by this option are
performed subject to the normal retry timing and retry count limitations of Wget.
Using this option is intended to support special use cases only and is generally not
recommended, as it can force retries even in cases where the server is actually trying
to decrease its load. Please use wisely and only if you know what you are doing.
‘--https-only’
When in recursive mode, only HTTPS links are followed.
‘--ciphers’
Set the cipher list string. Typically this string sets the cipher suites and other
SSL/TLS options that the user wish should be used, in a set order of preference
(GnuTLS calls it ’priority string’). This string will be fed verbatim to the SSL/TLS
engine (OpenSSL or GnuTLS) and hence its format and syntax is dependant on
that. Wget will not process or manipulate it in any way. Refer to the OpenSSL or
GnuTLS documentation for more information.
‘--no-check-certificate’
Don’t check the server certificate against the available certificate authorities. Also
don’t require the URL host name to match the common name presented by the
certificate.
As of Wget 1.10, the default is to verify the server’s certificate against the recog-
nized certificate authorities, breaking the SSL handshake and aborting the download
if the verification fails. Although this provides more secure downloads, it does break
interoperability with some sites that worked with previous Wget versions, particu-
larly those using self-signed, expired, or otherwise invalid certificates. This option
forces an “insecure” mode of operation that turns the certificate verification errors
into warnings and allows you to proceed.
If you encounter “certificate verification” errors or ones saying that “common name
doesn’t match requested host name”, you can use this option to bypass the verifi-
cation and proceed with the download. Only use this option if you are otherwise
convinced of the site’s authenticity, or if you really don’t care about the validity of
its certificate. It is almost always a bad idea not to check the certificates when
transmitting confidential or important data. For self-signed/internal certificates,
you should download the certificate and verify against that instead of forcing this
insecure mode. If you are really sure of not desiring any certificate verification, you
can specify –check-certificate=quiet to tell wget to not print any warning about
invalid certificates, albeit in most cases this is the wrong thing to do.
‘--certificate=file’
Use the client certificate stored in file. This is needed for servers that are configured
to require certificates from the clients that connect to them. Normally a certificate
is not required and this switch is optional.
‘--certificate-type=type’
Specify the type of the client certificate. Legal values are ‘PEM’ (assumed by default)
and ‘DER’, also known as ‘ASN1’.
‘--private-key=file’
Read the private key from file. This allows you to provide the private key in a file
separate from the certificate.
‘--private-key-type=type’
Specify the type of the private key. Accepted values are ‘PEM’ (the default) and
‘DER’.
‘--ca-certificate=file’
Use file as the file with the bundle of certificate authorities (“CA”) to verify the
peers. The certificates must be in PEM format.
Without this option Wget looks for CA certificates at the system-specified locations,
chosen at OpenSSL installation time.
Chapter 2: Invoking 23
‘--ca-directory=directory’
Specifies directory containing CA certificates in PEM format. Each file contains
one CA certificate, and the file name is based on a hash value derived from the cer-
tificate. This is achieved by processing a certificate directory with the c_rehash
utility supplied with OpenSSL. Using ‘--ca-directory’ is more efficient than
‘--ca-certificate’ when many certificates are installed because it allows Wget
to fetch certificates on demand.
Without this option Wget looks for CA certificates at the system-specified locations,
chosen at OpenSSL installation time.
‘--crl-file=file’
Specifies a CRL file in file. This is needed for certificates that have been revocated
by the CAs.
‘--pinnedpubkey=file/hashes’
Tells wget to use the specified public key file (or hashes) to verify the peer. This can
be a path to a file which contains a single public key in PEM or DER format, or any
number of base64 encoded sha256 hashes preceded by “sha256//” and separated by
“;”
When negotiating a TLS or SSL connection, the server sends a certificate indicating
its identity. A public key is extracted from this certificate and if it does not exactly
match the public key(s) provided to this option, wget will abort the connection
before sending or receiving any data.
‘--random-file=file’
[OpenSSL and LibreSSL only] Use file as the source of random data for seeding the
pseudo-random number generator on systems without /dev/urandom.
On such systems the SSL library needs an external source of randomness to initialize.
Randomness may be provided by EGD (see ‘--egd-file’ below) or read from an
external source specified by the user. If this option is not specified, Wget looks for
random data in $RANDFILE or, if that is unset, in $HOME/.rnd.
If you’re getting the “Could not seed OpenSSL PRNG; disabling SSL.” error, you
should provide random data using some of the methods described above.
‘--egd-file=file’
[OpenSSL only] Use file as the EGD socket. EGD stands for Entropy Gathering
Daemon, a user-space program that collects data from various unpredictable system
sources and makes it available to other programs that might need it. Encryption
software, such as the SSL library, needs sources of non-repeating randomness to seed
the random number generator used to produce cryptographically strong keys.
OpenSSL allows the user to specify his own source of entropy using the RAND_
FILE environment variable. If this variable is unset, or if the specified file does not
produce enough randomness, OpenSSL will read random data from EGD socket
specified using this option.
If this option is not specified (and the equivalent startup command is not used),
EGD is never contacted. EGD is not needed on modern Unix systems that support
/dev/urandom.
‘--no-hsts’
Wget supports HSTS (HTTP Strict Transport Security, RFC 6797) by default. Use
‘--no-hsts’ to make Wget act as a non-HSTS-compliant UA. As a consequence,
Wget would ignore all the Strict-Transport-Security headers, and would not
enforce any existing HSTS policy.
Chapter 2: Invoking 24
‘--hsts-file=file’
By default, Wget stores its HSTS database in ~/.wget-hsts. You can use
‘--hsts-file’ to override this. Wget will use the supplied file as the HSTS data-
base. Such file must conform to the correct HSTS database format used by Wget.
If Wget cannot parse the provided file, the behaviour is unspecified.
The Wget’s HSTS database is a plain text file. Each line contains an HSTS entry
(ie. a site that has issued a Strict-Transport-Security header and that therefore
has specified a concrete HSTS policy to be applied). Lines starting with a dash (#)
are ignored by Wget. Please note that in spite of this convenient human-readability
hand-hacking the HSTS database is generally not a good idea.
An HSTS entry line consists of several fields separated by one or more whitespace:
<hostname> SP [<port>] SP <include subdomains> SP <created> SP <max-age>
The hostname and port fields indicate the hostname and port to which the given
HSTS policy applies. The port field may be zero, and it will, in most of the cases.
That means that the port number will not be taken into account when deciding
whether such HSTS policy should be applied on a given request (only the host-
name will be evaluated). When port is different to zero, both the target hostname
and the port will be evaluated and the HSTS policy will only be applied if both
of them match. This feature has been included for testing/development purposes
only. The Wget testsuite (in testenv/) creates HSTS databases with explicit ports
with the purpose of ensuring Wget’s correct behaviour. Applying HSTS policies
to ports other than the default ones is discouraged by RFC 6797 (see Appendix B
"Differences between HSTS Policy and Same-Origin Policy"). Thus, this function-
ality should not be used in production environments and port will typically be zero.
The last three fields do what they are expected to. The field include subdomains
can either be 1 or 0 and it signals whether the subdomains of the target domain
should be part of the given HSTS policy as well. The created and max-age fields
hold the timestamp values of when such entry was created (first seen by Wget)
and the HSTS-defined value ’max-age’, which states how long should that HSTS
policy remain active, measured in seconds elapsed since the timestamp stored in
created. Once that time has passed, that HSTS policy will no longer be valid and
will eventually be removed from the database.
If you supply your own HSTS database via ‘--hsts-file’, be aware that Wget may
modify the provided file if any change occurs between the HSTS policies requested
by the remote servers and those in the file. When Wget exists, it effectively updates
the HSTS database by rewriting the database file with the new entries.
If the supplied file does not exist, Wget will create one. This file will contain the new
HSTS entries. If no HSTS entries were generated (no Strict-Transport-Security
headers were sent by any of the servers) then no file will be created, not even an
empty one. This behaviour applies to the default database file (~/.wget-hsts) as
well: it will not be created until some server enforces an HSTS policy.
Care is taken not to override possible changes made by other Wget processes at the
same time over the HSTS database. Before dumping the updated HSTS entries on
the file, Wget will re-read it and merge the changes.
Using a custom HSTS database and/or modifying an existing one is discouraged. For
more information about the potential security threats arised from such practice, see
section 14 "Security Considerations" of RFC 6797, specially section 14.9 "Creative
Manipulation of HSTS Policy Store".
‘--warc-file=file’
Use file as the destination WARC file.
Chapter 2: Invoking 25
‘--warc-header=string’
Use string into as the warcinfo record.
‘--warc-max-size=size’
Set the maximum size of the WARC files to size.
‘--warc-cdx’
Write CDX index files.
‘--warc-dedup=file’
Do not store records listed in this CDX file.
‘--no-warc-compression’
Do not compress WARC files with GZIP.
‘--no-warc-digests’
Do not calculate SHA1 digests.
‘--no-warc-keep-log’
Do not store the log file in a WARC record.
‘--warc-tempdir=dir’
Specify the location for temporary files created by the WARC writer.
index.html to /etc/passwd and asking root to run Wget with ‘-N’ or ‘-r’ so the
file will be overwritten.
‘--no-glob’
Turn off ftp globbing. Globbing refers to the use of shell-like special characters
(wildcards), like ‘*’, ‘?’, ‘[’ and ‘]’ to retrieve more than one file from the same
directory at once, like:
wget ftp://gnjilux.srk.fer.hr/*.msg
By default, globbing will be turned on if the url contains a globbing character.
This option may be used to turn globbing on or off permanently.
You may have to quote the url to protect it from being expanded by your shell.
Globbing makes Wget look for a directory listing, which is system-specific. This is
why it currently works only with Unix ftp servers (and the ones emulating Unix ls
output).
‘--no-passive-ftp’
Disable the use of the passive FTP transfer mode. Passive FTP mandates that the
client connect to the server to establish the data connection rather than the other
way around.
If the machine is connected to the Internet directly, both passive and active FTP
should work equally well. Behind most firewall and NAT configurations passive
FTP has a better chance of working. However, in some rare firewall configurations,
active FTP actually works when passive FTP doesn’t. If you suspect this to be the
case, use this option, or set passive_ftp=off in your init file.
‘--preserve-permissions’
Preserve remote file permissions instead of permissions set by umask.
‘--retr-symlinks’
By default, when retrieving ftp directories recursively and a symbolic link is encoun-
tered, the symbolic link is traversed and the pointed-to files are retrieved. Currently,
Wget does not traverse symbolic links to directories to download them recursively,
though this feature may be added in the future.
When ‘--retr-symlinks=no’ is specified, the linked-to file is not downloaded. In-
stead, a matching symbolic link is created on the local filesystem. The pointed-to
file will not be retrieved unless this recursive retrieval would have encountered it
separately and downloaded it anyway. This option poses a security risk where a
malicious FTP Server may cause Wget to write to files outside of the intended
directories through a specially crafted .listing file.
Note that when retrieving a file (not a directory) because it was specified on the
command-line, rather than because it was recursed to, this option has no effect.
Symbolic links are always traversed in this case.
port for implicit FTPS, 990, will be used, instead of the default port for the "normal"
(explicit) FTPS which is the same as that of FTP, 21.
‘--no-ftps-resume-ssl’
Do not resume the SSL/TLS session in the data channel. When starting a data
connection, Wget tries to resume the SSL/TLS session previously started in the
control connection. SSL/TLS session resumption avoids performing an entirely new
handshake by reusing the SSL/TLS parameters of a previous session. Typically,
the FTPS servers want it that way, so Wget does this by default. Under rare
circumstances however, one might want to start an entirely new SSL/TLS session
in every data connection. This is what ‘--no-ftps-resume-ssl’ is for.
‘--ftps-clear-data-connection’
All the data connections will be in plain text. Only the control connection will be
under SSL/TLS. Wget will send a PROT C command to achieve this, which must be
approved by the server.
‘--ftps-fallback-to-ftp’
Fall back to FTP if FTPS is not supported by the target server. For security reasons,
this option is not asserted by default. The default behaviour is to exit with an error.
If a server does not successfully reply to the initial AUTH TLS command, or in the
case of implicit FTPS, if the initial SSL/TLS connection attempt is rejected, it is
considered that such server does not support FTPS.
inlined documents, one is generally left with “leaf documents” that are missing their
requisites.
For instance, say document 1.html contains an <IMG> tag referencing 1.gif and an
<A> tag pointing to external document 2.html. Say that 2.html is similar but that
its image is 2.gif and it links to 3.html. Say this continues up to some arbitrarily
high number.
If one executes the command:
wget -r -l 2 http://site/1.html
then 1.html, 1.gif, 2.html, 2.gif, and 3.html will be downloaded. As you can
see, 3.html is without its requisite 3.gif because Wget is simply counting the
number of hops (up to 2) away from 1.html in order to determine where to stop
the recursion. However, with this command:
wget -r -l 2 -p http://site/1.html
all the above files and 3.html’s requisite 3.gif will be downloaded. Similarly,
wget -r -l 1 -p http://site/1.html
will cause 1.html, 1.gif, 2.html, and 2.gif to be downloaded. One might think
that:
wget -r -l 0 -p http://site/1.html
would download just 1.html and 1.gif, but unfortunately this is not the case,
because ‘-l 0’ is equivalent to ‘-l inf’—that is, infinite recursion. To download a
single html page (or a handful of them, all specified on the command-line or in a
‘-i’ url input file) and its (or their) requisites, simply leave off ‘-r’ and ‘-l’:
wget -p http://site/1.html
Note that Wget will behave as if ‘-r’ had been specified, but only that single page
and its requisites will be downloaded. Links from that page to external documents
will not be followed. Actually, to download a single page and all its requisites (even
if they exist on separate websites), and make sure the lot displays properly locally,
this author likes to use a few options in addition to ‘-p’:
wget -E -H -k -K -p http://site/document
To finish off this topic, it’s worth knowing that Wget’s idea of an external document
link is any URL specified in an <A> tag, an <AREA> tag, or a <LINK> tag other than
<LINK REL="stylesheet">.
‘--strict-comments’
Turn on strict parsing of html comments. The default is to terminate comments
at the first occurrence of ‘-->’.
According to specifications, html comments are expressed as sgml declarations.
Declaration is special markup that begins with ‘<!’ and ends with ‘>’, such as
‘<!DOCTYPE ...>’, that may contain comments between a pair of ‘--’ delimiters.
html comments are “empty declarations”, sgml declarations without any non-
comment text. Therefore, ‘<!--foo-->’ is a valid comment, and so is ‘<!--one--
--two-->’, but ‘<!--1--2-->’ is not.
On the other hand, most html writers don’t perceive comments as anything other
than text delimited with ‘<!--’ and ‘-->’, which is not quite the same. For example,
something like ‘<!------------>’ works as a valid comment as long as the number
of dashes is a multiple of four (!). If not, the comment technically lasts until the
next ‘--’, which may be at the other end of the document. Because of this, many
popular browsers completely ignore the specification and implement what users have
come to expect: comments delimited with ‘<!--’ and ‘-->’.
Chapter 2: Invoking 30
Until version 1.9, Wget interpreted comments strictly, which resulted in missing
links in many web pages that displayed fine in browsers, but had the misfortune of
containing non-compliant comments. Beginning with version 1.9, Wget has joined
the ranks of clients that implements “naive” comments, terminating each comment
at the first occurrence of ‘-->’.
If, for whatever reason, you want strict comment parsing, use this option to turn it
on.
will not be downloaded. Now the best bet for downloading a single page and its
requisites is the dedicated ‘--page-requisites’ option.
‘--ignore-case’
Ignore case when matching files and directories. This influences the behavior of -R,
-A, -I, and -X options, as well as globbing implemented when downloading from
FTP sites. For example, with this option, ‘-A "*.txt"’ will match ‘file1.txt’,
but also ‘file2.TXT’, ‘file3.TxT’, and so on. The quotes in the example are to
prevent the shell from expanding the pattern.
‘-H’
‘--span-hosts’
Enable spanning across hosts when doing recursive retrieving (see Section 4.1 [Span-
ning Hosts], page 34).
‘-L’
‘--relative’
Follow relative links only. Useful for retrieving a specific home page without any
distractions, not even those from the same hosts (see Section 4.4 [Relative Links],
page 37).
‘-I list’
‘--include-directories=list’
Specify a comma-separated list of directories you wish to follow when downloading
(see Section 4.3 [Directory-Based Limits], page 36). Elements of list may contain
wildcards.
‘-X list’
‘--exclude-directories=list’
Specify a comma-separated list of directories you wish to exclude from download
(see Section 4.3 [Directory-Based Limits], page 36). Elements of list may contain
wildcards.
‘-np’
‘--no-parent’
Do not ever ascend to the parent directory when retrieving recursively. This is a
useful option, since it guarantees that only the files below a certain hierarchy will
be downloaded. See Section 4.3 [Directory-Based Limits], page 36, for more details.
3 Recursive Download
GNU Wget is capable of traversing parts of the Web (or a single http or ftp server), following
links and directory structure. We refer to this as to recursive retrieval, or recursion.
With http urls, Wget retrieves and parses the html or css from the given url, retrieving
the files the document refers to, through markup like href or src, or css uri values specified
using the ‘url()’ functional notation. If the freshly downloaded file is also of type text/html,
application/xhtml+xml, or text/css, it will be parsed and followed further.
Recursive retrieval of http and html/css content is breadth-first. This means that Wget
first downloads the requested document, then the documents linked from that document, then
the documents linked by them, and so on. In other words, Wget first downloads the documents
at depth 1, then those at depth 2, and so on until the specified maximum depth.
The maximum depth to which the retrieval may descend is specified with the ‘-l’ option.
The default maximum depth is five layers.
When retrieving an ftp url recursively, Wget will retrieve all the data from the given
directory tree (including the subdirectories up to the specified depth) on the remote server,
creating its mirror image locally. ftp retrieval is also limited by the depth parameter. Unlike
http recursion, ftp recursion is performed depth-first.
By default, Wget will create a local directory tree, corresponding to the one found on the
remote server.
Recursive retrieving can find a number of applications, the most important of which is mir-
roring. It is also useful for www presentations, and any other opportunities where slow network
connections should be bypassed by storing the files locally.
You should be warned that recursive downloads can overload the remote servers. Because of
that, many administrators frown upon them and may ban access from your site if they detect very
fast downloads of big amounts of content. When downloading from Internet servers, consider
using the ‘-w’ option to introduce a delay between accesses to the server. The download will
take a while longer, but the server administrator will not be alarmed by your rudeness.
Of course, recursive download may cause problems on your machine. If left to run unchecked,
it can easily fill up the disk. If downloading from local network, it can also take bandwidth on
the system, as well as consume memory and CPU.
Try to specify the criteria that match the kind of download you are trying to achieve. If you
want to download only one page, use ‘--page-requisites’ without any additional recursion. If
you want to download things under one directory, use ‘-np’ to avoid downloading things from
other directories. If you want to download all the files from one directory, use ‘-l 1’ to make
sure the recursion depth never exceeds one. See Chapter 4 [Following Links], page 34, for more
information about this.
Recursive retrieval should be used with care. Don’t say you were not warned.
34
4 Following Links
When retrieving recursively, one does not wish to retrieve loads of unnecessary data. Most of
the time the users bear in mind exactly what they want to download, and want Wget to follow
only specific links.
For example, if you wish to download the music archive from ‘fly.srk.fer.hr’, you will not
want to download all the home pages that happen to be referenced by an obscure part of the
archive.
Wget possesses several mechanisms that allows you to fine-tune which links it will follow.
‘-A acclist’
‘--accept acclist’
‘accept = acclist’
‘--accept-regex urlregex’
‘accept-regex = urlregex’
The argument to ‘--accept’ option is a list of file suffixes or patterns that Wget
will download during recursive retrieval. A suffix is the ending part of a file, and
consists of “normal” letters, e.g. ‘gif’ or ‘.jpg’. A matching pattern contains
shell-like wildcards, e.g. ‘books*’ or ‘zelazny*196[0-9]*’.
So, specifying ‘wget -A gif,jpg’ will make Wget download only the files end-
ing with ‘gif’ or ‘jpg’, i.e. gifs and jpegs. On the other hand, ‘wget -A
"zelazny*196[0-9]*"’ will download only files beginning with ‘zelazny’ and con-
taining numbers from 1960 to 1969 anywhere within. Look up the manual of your
shell for a description of how pattern matching works.
Of course, any number of suffixes and patterns can be combined into a comma-
separated list, and given as an argument to ‘-A’.
The argument to ‘--accept-regex’ option is a regular expression which is matched
against the complete URL.
‘-R rejlist’
‘--reject rejlist’
‘reject = rejlist’
‘--reject-regex urlregex’
‘reject-regex = urlregex’
The ‘--reject’ option works the same way as ‘--accept’, only its logic is the re-
verse; Wget will download all files except the ones matching the suffixes (or patterns)
in the list.
So, if you want to download a whole page except for the cumbersome mpegs and
.au files, you can use ‘wget -R mpg,mpeg,au’. Analogously, to download all files
except the ones beginning with ‘bjork’, use ‘wget -R "bjork*"’. The quotes are to
prevent expansion by the shell.
The argument to ‘--accept-regex’ option is a regular expression which is matched against
the complete URL.
The ‘-A’ and ‘-R’ options may be combined to achieve even better fine-tuning of which files to
retrieve. E.g. ‘wget -A "*zelazny*" -R .ps’ will download all the files having ‘zelazny’ as a
part of their name, but not the PostScript files.
Note that these two options do not affect the downloading of html files (as determined by
a ‘.htm’ or ‘.html’ filename prefix). This behavior may not be desirable for all users, and may
be changed for future versions of Wget.
Note, too, that query strings (strings at the end of a URL beginning with a question mark
(‘?’) are not included as part of the filename for accept/reject rules, even though these will
actually contribute to the name chosen for the local file. It is expected that a future version of
Wget will provide an option to allow matching against query strings.
Finally, it’s worth noting that the accept/reject lists are matched twice against downloaded
files: once against the URL’s filename portion, to determine if the file should be downloaded
in the first place; then, after it has been accepted and successfully downloaded, the local file’s
name is also checked against the accept/reject lists to see if it should be removed. The rationale
was that, since ‘.htm’ and ‘.html’ files are always downloaded regardless of accept/reject rules,
they should be removed after being downloaded and scanned for links, if they did match the
accept/reject lists. However, this can lead to unexpected results, since the local filenames can
Chapter 4: Following Links 36
differ from the original URL filenames in the following ways, all of which can change whether
an accept/reject rule matches:
• If the local file already exists and ‘--no-directories’ was specified, a numeric suffix will
be appended to the original name.
• If ‘--adjust-extension’ was specified, the local filename might have ‘.html’ appended
to it. If Wget is invoked with ‘-E -A.php’, a filename such as ‘index.php’ will match be
accepted, but upon download will be named ‘index.php.html’, which no longer matches,
and so the file will be deleted.
• Query strings do not contribute to URL matching, but are included in local filenames, and
so do contribute to filename matching.
This behavior, too, is considered less-than-desirable, and may change in a future version of
Wget.
5 Time-Stamping
One of the most important aspects of mirroring information from the Internet is updating your
archives.
Downloading the whole archive again and again, just to replace a few changed files is expen-
sive, both in terms of wasted bandwidth and money, and the time to do the update. This is
why all the mirroring tools offer the option of incremental updating.
Such an updating mechanism means that the remote server is scanned in search of new files.
Only those new files will be downloaded in the place of the old ones.
A file is considered new if one of these two conditions are met:
1. A file of that name does not already exist locally.
2. A file of that name does exist, but the remote file was modified more recently than the local
file.
To implement this, the program needs to be aware of the time of last modification of both
local and remote files. We call this information the time-stamp of a file.
The time-stamping in GNU Wget is turned on using ‘--timestamping’ (‘-N’) option, or
through timestamping = on directive in .wgetrc. With this option, for each file it intends to
download, Wget will check whether a local file of the same name exists. If it does, and the
remote file is not newer, Wget will not download it.
If the local file does not exist, or the sizes of the files do not match, Wget will download the
remote file no matter what the time-stamps say.
1
As an additional check, Wget will look at the Content-Length header, and compare the sizes; if they are not
the same, the remote file will be downloaded no matter what the time-stamp says.
40
6 Startup File
Once you know how to change default settings of Wget through command line arguments, you
may wish to make some of those settings permanent. You can do that in a convenient way by
creating the Wget startup file—.wgetrc.
Besides .wgetrc is the “main” initialization file, it is convenient to have a special facility for
storing passwords. Thus Wget reads and interprets the contents of $HOME/.netrc, if it finds it.
You can find .netrc format in your system manuals.
Wget reads .wgetrc upon startup, recognizing a limited set of commands.
continue = on/off
If set to on, force continuation of preexistent partially retrieved files. See ‘-c’ before
setting it.
convert links = on/off
Convert non-relative links locally. The same as ‘-k’.
cookies = on/off
When set to off, disallow cookies. See the ‘--cookies’ option.
cut dirs = n
Ignore n remote directory components. Equivalent to ‘--cut-dirs=n’.
debug = on/off
Debug mode, same as ‘-d’.
default page = string
Default page name—the same as ‘--default-page=string’.
delete after = on/off
Delete after download—the same as ‘--delete-after’.
dir prefix = string
Top of directory tree—the same as ‘-P string’.
dirstruct = on/off
Turning dirstruct on or off—the same as ‘-x’ or ‘-nd’, respectively.
dns cache = on/off
Turn DNS caching on/off. Since DNS caching is on by default, this option is nor-
mally used to turn it off and is equivalent to ‘--no-dns-cache’.
dns timeout = n
Set the DNS timeout—the same as ‘--dns-timeout’.
domains = string
Same as ‘-D’ (see Section 4.1 [Spanning Hosts], page 34).
dot bytes = n
Specify the number of bytes “contained” in a dot, as seen throughout the retrieval
(1024 by default). You can postfix the value with ‘k’ or ‘m’, representing kilobytes
and megabytes, respectively. With dot settings you can tailor the dot retrieval to
suit your needs, or you can use the predefined styles (see Section 2.5 [Download
Options], page 6).
dot spacing = n
Specify the number of dots in a single cluster (10 by default).
dots in line = n
Specify the number of dots that will be printed in each line throughout the retrieval
(50 by default).
egd file = file
Use string as the EGD socket file name. The same as ‘--egd-file=file’.
exclude directories = string
Specify a comma-separated list of directories you wish to exclude from download—
the same as ‘-X string’ (see Section 4.3 [Directory-Based Limits], page 36).
exclude domains = string
Same as ‘--exclude-domains=string’ (see Section 4.1 [Spanning Hosts], page 34).
Chapter 6: Startup File 43
no proxy = string
Use string as the comma-separated list of domains to avoid in proxy loading, instead
of the one specified in environment.
output document = file
Set the output filename—the same as ‘-O file’.
page requisites = on/off
Download all ancillary documents necessary for a single html page to display
properly—the same as ‘-p’.
passive ftp = on/off
Change setting of passive ftp, equivalent to the ‘--passive-ftp’ option.
password = string
Specify password string for both ftp and http file retrieval. This command can be
overridden using the ‘ftp_password’ and ‘http_password’ command for ftp and
http respectively.
post data = string
Use POST as the method for all HTTP requests and send string in the request
body. The same as ‘--post-data=string’.
post file = file
Use POST as the method for all HTTP requests and send the contents of file in the
request body. The same as ‘--post-file=file’.
prefer family = none/IPv4/IPv6
When given a choice of several addresses, connect to the addresses with specified
address family first. The address order returned by DNS is used without change by
default. The same as ‘--prefer-family’, which see for a detailed discussion of why
this is useful.
private key = file
Set the private key file to file. The same as ‘--private-key=file’.
private key type = string
Specify the type of the private key, legal values being ‘PEM’ (the default) and ‘DER’
(aka ASN1). The same as ‘--private-type=string’.
progress = string
Set the type of the progress indicator. Legal types are ‘dot’ and ‘bar’. Equivalent
to ‘--progress=string’.
protocol directories = on/off
When set, use the protocol name as a directory component of local file names. The
same as ‘--protocol-directories’.
proxy password = string
Set proxy authentication password to string, like ‘--proxy-password=string’.
proxy user = string
Set proxy authentication user name to string, like ‘--proxy-user=string’.
quiet = on/off
Quiet mode—the same as ‘-q’.
quota = quota
Specify the download quota, which is useful to put in the global wgetrc. When
download quota is specified, Wget will stop retrieving after the download sum has
Chapter 6: Startup File 46
become greater than quota. The quota can be specified in bytes (default), kbytes
‘k’ appended) or mbytes (‘m’ appended). Thus ‘quota = 5m’ will set the quota to 5
megabytes. Note that the user’s startup file overrides system settings.
random file = file
Use file as a source of randomness on systems lacking /dev/random.
random wait = on/off
Turn random between-request wait times on or off. The same as ‘--random-wait’.
read timeout = n
Set the read (and write) timeout—the same as ‘--read-timeout=n’.
reclevel = n
Recursion level (depth)—the same as ‘-l n’.
recursive = on/off
Recursive on/off—the same as ‘-r’.
referer = string
Set HTTP ‘Referer:’ header just like ‘--referer=string’. (Note that it was the
folks who wrote the http spec who got the spelling of “referrer” wrong.)
relative only = on/off
Follow only relative links—the same as ‘-L’ (see Section 4.4 [Relative Links],
page 37).
remote encoding = encoding
Force Wget to use encoding as the default remote server encoding. See
‘--remote-encoding’.
remove listing = on/off
If set to on, remove ftp listings downloaded by Wget. Setting it to off is the same
as ‘--no-remove-listing’.
restrict file names = unix/windows
Restrict the file names generated by Wget from URLs. See
‘--restrict-file-names’ for a more detailed description.
retr symlinks = on/off
When set to on, retrieve symbolic links as if they were plain files; the same as
‘--retr-symlinks’.
retry connrefused = on/off
When set to on, consider “connection refused” a transient error—the same as
‘--retry-connrefused’.
robots = on/off
Specify whether the norobots convention is respected by Wget, “on” by default.
This switch controls both the /robots.txt and the ‘nofollow’ aspect of the spec.
See Section 9.1 [Robot Exclusion], page 58, for more details about this. Be sure you
know what you are doing before turning this off.
save cookies = file
Save cookies to file. The same as ‘--save-cookies file’.
save headers = on/off
Same as ‘--save-headers’.
secure protocol = string
Choose the secure protocol to be used. Legal values are ‘auto’ (the default), ‘SSLv2’,
‘SSLv3’, and ‘TLSv1’. The same as ‘--secure-protocol=string’.
Chapter 6: Startup File 47
###
## You can use this file to change the default behaviour of wget or to
## avoid having to type many many command-line options. This file does
## not contain a comprehensive list of commands -- look at the manual
## to find out what you can put into this file. You can find this here:
## $ info wget.info ’Startup File’
## Or online here:
## https://www.gnu.org/software/wget/manual/wget.html#Startup-File
##
## Wget initialization file can reside in /usr/local/etc/wgetrc
## (global, for all users) or $HOME/.wgetrc (for a single user).
##
## To use the settings in this file, you will have to uncomment them,
## as well as change them, in most cases, as the values on the
## commented-out lines are the default values (e.g. "off").
##
## Command are case-, underscore- and minus-insensitive.
## For example ftp_proxy, ftp-proxy and ftpproxy are the same.
##
## Global settings (useful for setting up in /usr/local/etc/wgetrc).
## Think well before you change them, since they may reduce wget’s
## functionality, and make it behave contrary to the documentation:
##
# You can lower (or raise) the default number of retries when
# downloading a file (default is 20).
#tries = 20
# The "wait" command below makes Wget wait between every connection.
# If, instead, you want Wget to wait only between retries of failed
Chapter 6: Startup File 49
##
## Local settings (for a user to set in his $HOME/.wgetrc). It is
## *highly* undesirable to put these settings in the global file, since
## they are potentially dangerous to "normal" users.
##
## Even when setting up your own ~/.wgetrc, you should know what you
## are doing before doing so.
##
# You can set the default proxies for Wget to use for http, https, and ftp.
# They will override the value in the environment.
#https_proxy = http://proxy.yoyodyne.com:18023/
#http_proxy = http://proxy.yoyodyne.com:18023/
#ftp_proxy = http://proxy.yoyodyne.com:18023/
# You can customize the retrieval outlook. Valid options are default,
# binary, mega and micro.
#dot_style = default
# To have Wget follow FTP links from HTML files by default, set this
# to on:
#follow_ftp = off
7 Examples
The examples are divided into three sections loosely based on their complexity.
--html-extension -o /home/me/weeklog \
https://www.gnu.org/
Or, with less typing:
wget -m -k -K -E https://www.gnu.org/ -o /home/me/weeklog
54
8 Various
This chapter contains all the stuff that could not fit anywhere else.
8.1 Proxies
Proxies are special-purpose http servers designed to transfer data from remote servers to local
clients. One typical use of proxies is lightening network load for users behind a slow connection.
This is achieved by channeling all http and ftp requests through the proxy which caches the
transferred data. When a cached resource is requested again, proxy will return the data from
cache. Another use for proxies is for companies that separate (for security reasons) their internal
networks from the rest of Internet. In order to obtain information from the Web, their users
connect and retrieve remote data using an authorized proxy.
Wget supports proxies for both http and ftp retrievals. The standard way to specify proxy
location, which Wget recognizes, is using the following environment variables:
http_proxy
https_proxy
If set, the http_proxy and https_proxy variables should contain the urls of the
proxies for http and https connections respectively.
ftp_proxy
This variable should contain the url of the proxy for ftp connections. It is quite
common that http_proxy and ftp_proxy are set to the same url.
no_proxy This variable should contain a comma-separated list of domain extensions proxy
should not be used for. For instance, if the value of no_proxy is ‘.mit.edu’, proxy
will not be used to retrieve documents from MIT.
In addition to the environment variables, proxy location and settings may be specified from
within Wget itself.
‘--no-proxy’
‘proxy = on/off’
This option and the corresponding command may be used to suppress the use of
proxy, even if the appropriate environment variables are set.
‘http_proxy = URL’
‘https_proxy = URL’
‘ftp_proxy = URL’
‘no_proxy = string’
These startup file variables allow you to override the proxy settings specified by the
environment.
Some proxy servers require authorization to enable you to use them. The authorization
consists of username and password, which must be sent by Wget. As with http authorization,
several authentication schemes exist. For proxy authorization only the Basic authentication
scheme is currently implemented.
You may specify your username and password either through the proxy url or through the
command-line options. Assuming that the company’s proxy is located at ‘proxy.company.com’
at port 8001, a proxy url location containing authorization data might look like this:
http://hniksic:mypassword@proxy.company.com:8001/
Alternatively, you may use the ‘proxy-user’ and ‘proxy-password’ options, and the equiva-
lent .wgetrc settings proxy_user and proxy_password to set the proxy username and password.
Chapter 8: Various 55
8.2 Distribution
Like all GNU utilities, the latest version of Wget can be found at the master GNU archive site
ftp.gnu.org, and its mirrors. For example, Wget 1.20 can be found at https://ftp.gnu.org/
pub/gnu/wget/wget-1.20.tar.gz
Obsolete Lists
Previously, the mailing list wget@sunsite.dk was used as the main discussion list, and another
list, wget-patches@sunsite.dk was used for submitting and discussing patches to GNU Wget.
Messages from wget@sunsite.dk are archived at
https://www.mail-archive.com/wget%40sunsite.dk/ and at
http://news.gmane.org/gmane.comp.web.wget.general (which also continues to archive
the current list, bug-wget@gnu.org).
Messages from wget-patches@sunsite.dk are archived at
http://news.gmane.org/gmane.comp.web.wget.patches.
Before actually submitting a bug report, please try to follow a few simple guidelines.
1. Please try to ascertain that the behavior you see really is a bug. If Wget crashes, it’s a bug.
If Wget does not behave as documented, it’s a bug. If things work strange, but you are not
sure about the way they are supposed to work, it might well be a bug, but you might want
to double-check the documentation and the mailing lists (see Section 8.4 [Mailing Lists],
page 55).
2. Try to repeat the bug in as simple circumstances as possible. E.g. if Wget crashes
while downloading ‘wget -rl0 -kKE -t5 --no-proxy http://example.com -o /tmp/log’,
you should try to see if the crash is repeatable, and if will occur with a simpler set of
options. You might even try to start the download at the page where the crash occurred to
see if that page somehow triggered the crash.
Also, while I will probably be interested to know the contents of your .wgetrc file, just
dumping it into the debug message is probably a bad idea. Instead, you should first try
to see if the bug repeats with .wgetrc moved out of the way. Only if it turns out that
.wgetrc settings affect the bug, mail me the relevant parts of the file.
3. Please start Wget with ‘-d’ option and send us the resulting output (or relevant parts
thereof). If Wget was compiled without debug support, recompile it—it is much easier to
trace bugs with debug support on.
Note: please make sure to remove any potentially sensitive information from the debug log
before sending it to the bug address. The -d won’t go out of its way to collect sensitive
information, but the log will contain a fairly complete transcript of Wget’s communication
with the server, which may include passwords and pieces of downloaded data. Since the
bug address is publically archived, you may assume that all bug reports are visible to the
public.
4. If Wget has crashed, try to run it in a debugger, e.g. gdb ‘which wget‘ core and type
where to get the backtrace. This may not work if the system administrator has disabled
core files, but it is safe to try.
8.7 Portability
Like all GNU software, Wget works on the GNU system. However, since it uses GNU Autoconf
for building and configuring, and mostly avoids using “special” features of any particular Unix,
it should compile (and work) on all common Unix flavors.
Various Wget versions have been compiled and tested under many kinds of Unix systems,
including GNU/Linux, Solaris, SunOS 4.x, Mac OS X, OSF (aka Digital Unix or Tru64), Ultrix,
*BSD, IRIX, AIX, and others. Some of those systems are no longer in widespread use and may
not be able to support recent versions of Wget. If Wget fails to compile on your system, we
would like to know about it.
Thanks to kind contributors, this version of Wget compiles and works on 32-bit Microsoft
Windows platforms. It has been compiled successfully using MS Visual C++ 6.0, Watcom,
Borland C, and GCC compilers. Naturally, it is crippled of some features available on Unix,
but it should work as a substitute for people stuck with Windows. Note that Windows-specific
portions of Wget are not guaranteed to be supported in the future, although this has been the
case in practice for many years now. All questions and problems in Windows usage should
be reported to Wget mailing list at wget@sunsite.dk where the volunteers who maintain the
Windows-related features might look at them.
Support for building on MS-DOS via DJGPP has been contributed by Gisle Vanem; a port
to VMS is maintained by Steven Schweda, and is available at https://antinode.info/dec/
sw/wget.html.
Chapter 8: Various 57
8.8 Signals
Since the purpose of Wget is background work, it catches the hangup signal (SIGHUP) and
ignores it. If the output was on standard output, it will be redirected to a file named wget-log.
Otherwise, SIGHUP is ignored. This is convenient when you wish to redirect the output of Wget
after having started it.
$ wget http://www.gnus.org/dist/gnus.tar.gz &
...
$ kill -HUP %%
SIGHUP received, redirecting output to ‘wget-log’.
Other than that, Wget will not try to interfere with signals in any way. C-c, kill -TERM
and kill -KILL should kill it alike.
58
9 Appendices
This chapter contains some references I consider useful.
9.3 Contributors
GNU Wget was written by Hrvoje Nikšić hniksic@xemacs.org,
However, the development of Wget could never have gone as far as it has, were it not for
the help of many people, either with bug reports, feature proposals, patches, or letters saying
“Thanks!”.
Special thanks goes to the following people (no particular order):
• Dan Harkless—contributed a lot of code and documentation of extremely high quality, as
well as the --page-requisites and related options. He was the principal maintainer for
some time and released Wget 1.6.
• Ian Abbott—contributed bug fixes, Windows-related fixes, and provided a prototype im-
plementation of the breadth-first recursive download. Co-maintained Wget during the 1.8
release cycle.
• The dotsrc.org crew, in particular Karsten Thygesen—donated system resources such as
the mailing list, web space, ftp space, and version control repositories, along with a lot of
time to make these actually work. Christian Reiniger was of invaluable help with setting
up Subversion.
• Heiko Herold—provided high-quality Windows builds and contributed bug and build reports
for many years.
• Shawn McHorse—bug reports and patches.
• Kaveh R. Ghazi—on-the-fly ansi2knr-ization. Lots of portability fixes.
• Gordon Matzigkeit—.netrc support.
• Zlatko Čalušić, Tomislav Vujec and Dražen Kačar—feature suggestions and “philosophical”
discussions.
• Darko Budor—initial port to Windows.
• Antonio Rosella—help and suggestions, plus the initial Italian translation.
• Tomislav Petrović, Mario Mikočević—many bug reports and suggestions.
• François Pinard—many thorough bug reports and discussions.
• Karl Eichwalder—lots of help with internationalization, Makefile layout and many other
things.
• Junio Hamano—donated support for Opie and http Digest authentication.
• Mauro Tortonesi—improved IPv6 support, adding support for dual family systems. Refac-
tored and enhanced FTP IPv6 code. Maintained GNU Wget from 2004–2007.
60
The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License.
A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25
words.
A “Transparent” copy of the Document means a machine-readable copy, represented in a
format whose specification is available to the general public, that is suitable for revising
the document straightforwardly with generic text editors or (for images composed of pixels)
generic paint programs or (for drawings) some widely available drawing editor, and that is
suitable for input to text formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise Transparent file format
whose markup, or absence of markup, has been arranged to thwart or discourage subsequent
modification by readers is not Transparent. An image format is not Transparent if used for
any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without markup,
Texinfo input format, LaTEX input format, SGML or XML using a publicly available DTD,
and standard-conforming simple HTML, PostScript or PDF designed for human modifi-
cation. Examples of transparent image formats include PNG, XCF and JPG. Opaque
formats include proprietary formats that can be read and edited only by proprietary word
processors, SGML or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages
as are needed to hold, legibly, the material this License requires to appear in the title page.
For works in formats which do not have any title page as such, “Title Page” means the
text near the most prominent appearance of the work’s title, preceding the beginning of the
body of the text.
The “publisher” means any person or entity that distributes copies of the Document to the
public.
A section “Entitled XYZ” means a named subunit of the Document whose title either
is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in
another language. (Here XYZ stands for a specific section name mentioned below, such
as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the
Title” of such a section when you modify the Document means that it remains a section
“Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that
this License applies to the Document. These Warranty Disclaimers are considered to be
included by reference in this License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has no effect on the
meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncom-
mercially, provided that this License, the copyright notices, and the license notice saying
this License applies to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use technical measures
to obstruct or control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you distribute a large
enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
Appendix A: Copying this manual 63
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the
Document, numbering more than 100, and the Document’s license notice requires Cover
Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both
covers must also clearly and legibly identify you as the publisher of these copies. The front
cover must present the full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with changes limited to
the covers, as long as they preserve the title of the Document and satisfy these conditions,
can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the
first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you
must either include a machine-readable Transparent copy along with each Opaque copy,
or state in or with each Opaque copy a computer-network location from which the general
network-using public has access to download using public-standard network protocols a
complete Transparent copy of the Document, free of added material. If you use the latter
option, you must take reasonably prudent steps, when you begin distribution of Opaque
copies in quantity, to ensure that this Transparent copy will remain thus accessible at the
stated location until at least one year after the last time you distribute an Opaque copy
(directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an
updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions
of sections 2 and 3 above, provided that you release the Modified Version under precisely
this License, with the Modified Version filling the role of the Document, thus licensing
distribution and modification of the Modified Version to whoever possesses a copy of it. In
addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if there were any, be
listed in the History section of the Document). You may use the same title as a previous
version if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version, together with at least five of
the principal authors of the Document (all of its principal authors, if it has fewer than
five), unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the
publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copy-
right notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form
shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover
Texts given in the Document’s license notice.
Appendix A: Copying this manual 64
Sections with the same name but different contents, make the title of each such section
unique by adding at the end of it, in parentheses, the name of the original author or
publisher of that section if known, or else a unique number. Make the same adjustment to
the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled “History” in the various original
documents, forming one section Entitled “History”; likewise combine any sections Entitled
“Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections
Entitled “Endorsements.”
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under
this License, and replace the individual copies of this License in the various documents with
a single copy that is included in the collection, provided that you follow the rules of this
License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually
under this License, provided you insert a copy of this License into the extracted document,
and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent
documents or works, in or on a volume of a storage or distribution medium, is called an
“aggregate” if the copyright resulting from the compilation is not used to limit the legal
rights of the compilation’s users beyond what the individual works permit. When the
Document is included in an aggregate, this License does not apply to the other works in
the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document,
then if the Document is less than one half of the entire aggregate, the Document’s Cover
Texts may be placed on covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form. Otherwise they must
appear on printed covers that bracket the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the
Document under the terms of section 4. Replacing Invariant Sections with translations
requires special permission from their copyright holders, but you may include translations
of some or all Invariant Sections in addition to the original versions of these Invariant
Sections. You may include a translation of this License, and all the license notices in
the Document, and any Warranty Disclaimers, provided that you also include the original
English version of this License and the original versions of those notices and disclaimers. In
case of a disagreement between the translation and the original version of this License or a
notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”,
the requirement (section 4) to Preserve its Title (section 1) will typically require changing
the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly pro-
vided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute
it is void, and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license from a particular copy-
right holder is reinstated (a) provisionally, unless and until the copyright holder explicitly
and finally terminates your license, and (b) permanently, if the copyright holder fails to
notify you of the violation by some reasonable means prior to 60 days after the cessation.
Appendix A: Copying this manual 66
Moreover, your license from a particular copyright holder is reinstated permanently if the
copyright holder notifies you of the violation by some reasonable means, this is the first
time you have received notice of violation of this License (for any work) from that copyright
holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties
who have received copies or rights from you under this License. If your rights have been
terminated and not permanently reinstated, receipt of a copy of some or all of the same
material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Doc-
umentation License from time to time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new problems or concerns. See http://
www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document
specifies that a particular numbered version of this License “or any later version” applies
to it, you have the option of following the terms and conditions either of that specified
version or of any later version that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this License, you may
choose any version ever published (not as a draft) by the Free Software Foundation. If the
Document specifies that a proxy can decide which future versions of this License can be
used, that proxy’s public statement of acceptance of a version permanently authorizes you
to choose that version for the Document.
11. RELICENSING
“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web
server that publishes copyrightable works and also provides prominent facilities for anybody
to edit those works. A public wiki that anybody can edit is an example of such a server. A
“Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of
copyrightable works thus published on the MMC site.
“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published
by Creative Commons Corporation, a not-for-profit corporation with a principal place of
business in San Francisco, California, as well as future copyleft versions of that license
published by that same organization.
“Incorporate” means to publish or republish a Document, in whole or in part, as part of
another Document.
An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that
were first published under this License somewhere other than this MMC, and subsequently
incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site under CC-BY-
SA on the same site at any time before August 1, 2009, provided the MMC is eligible for
relicensing.
Appendix A: Copying this manual 67
Concept Index
# D
#wget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
default page name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
delete after retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
directories, exclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
.css extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
directories, include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
.html extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
directory limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
.listing files, removing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
directory prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
.netrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
DNS cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
.wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
DNS IP address, client, DNS. . . . . . . . . . . . . . . . . . . . . . . 6
DNS server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
DNS timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
A dot style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
accept directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 downloading multiple times . . . . . . . . . . . . . . . . . . . . . . . . 6
accept suffixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
accept wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
append to log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 E
arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
EGD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 15, 21
entropy, specifying source of . . . . . . . . . . . . . . . . . . . . . . 23
authentication credentials . . . . . . . . . . . . . . . . . . . . . . . . . . 7
examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
exclude directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
execute wgetrc command . . . . . . . . . . . . . . . . . . . . . . . . . . 3
B
backing up converted files . . . . . . . . . . . . . . . . . . . . . . . . 28
backing up files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 F
bandwidth, limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
FDL, GNU Free Documentation License . . . . . . . . . . 61
base for relative links in input file . . . . . . . . . . . . . . . . . . 5
features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
bind address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
file names, restrict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
bind DNS address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
file permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
bug reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
filling proxy cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
follow FTP links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
following ftp links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
following links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
C force html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ftp authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
caching of DNS lookups . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ftp password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
case fold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ftp time-stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
client DNS address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ftp user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
client IP address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
clobbering, file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
command line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 G
comments, html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
globbing, toggle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
connect timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Content On Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Content-Disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Content-Encoding, choose . . . . . . . . . . . . . . . . . . . . . . . . 18 H
Content-Length, ignore . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 hangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
continue retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 8 header, add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 hosts, spanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
conversion of links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 HSTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 html comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
cookies, loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 http password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
cookies, saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 http referer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
cookies, session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 http time-stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
cut directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 http user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Concept Index 69
I P
idn support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 page requisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
ignore case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 passive ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
ignore length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
include directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
incomplete downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 8 Persistent Connections, disabling . . . . . . . . . . . . . . . . . 16
incremental updating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
index.html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 POST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
input-file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 preferred-location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
input-metalink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 progress indicator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Internet Relay Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
invoking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 16
IP address, client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 proxy authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 proxy filling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
proxy password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
proxy user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
iri support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Q
K quiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Keep-Alive, turning off . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
keep-badhash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
R
L random wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
randomness, specifying source of . . . . . . . . . . . . . . . . . . 23
latest version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 rate, limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
limit bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 read timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
link conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 recursive download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
loading cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 redirecting output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
local encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 referer, http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
location of wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 reject directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
log file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 reject suffixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
reject wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
relative links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
remote encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
M reporting bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
mailing list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 required images, downloading . . . . . . . . . . . . . . . . . . . . . 28
metalink-index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 resume download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 8
metalink-over-http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 retries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 retries, waiting between. . . . . . . . . . . . . . . . . . . . . . . . . . . 11
retrieving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
robot exclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
robots.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
N
no parent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
no-clobber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 S
nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 sample wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
number of tries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 saving cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
server maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
O server response, print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
server response, save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 session cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 signal handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
option syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 spanning hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Other HTTP Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 specify config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
output file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SSL certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SSL certificate authority . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SSL certificate type, specify . . . . . . . . . . . . . . . . . . . . . . 22
Concept Index 70
W
T wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
tag-based recursive pruning . . . . . . . . . . . . . . . . . . . . . . . 30 wait, random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
time-stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 waiting between retries . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
time-stamping usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 WARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
web site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Wget as spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
timeout, connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
timeout, DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 wgetrc commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
timeout, read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 wgetrc location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
timestamping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 wgetrc syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
tries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 wildcards, accept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Trust server names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 wildcards, reject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
types of files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Windows file names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
iii
Table of Contents
1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Invoking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 URL Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Option Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Basic Startup Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4 Logging and Input File Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5 Download Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Directory Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7 HTTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8 HTTPS (SSL/TLS) Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 FTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.10 FTPS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.11 Recursive Retrieval Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.12 Recursive Accept/Reject Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.13 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Recursive Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Following Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1 Spanning Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Types of Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 Directory-Based Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4 Relative Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5 Following FTP Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Time-Stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1 Time-Stamping Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 HTTP Time-Stamping Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 FTP Time-Stamping Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6 Startup File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.1 Wgetrc Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2 Wgetrc Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.3 Wgetrc Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4 Sample Wgetrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1 Simple Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.2 Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3 Very Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
iv
8 Various. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1 Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.2 Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.3 Web Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.4 Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Primary List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Obsolete Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.5 Internet Relay Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.6 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.7 Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.8 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.1 Robot Exclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.2 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9.3 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Concept Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68