]> sjero.net Git - wget/blob - doc/wget.texi
288059ef378361b302ac7f948e3ab70b79ac0e37
[wget] / doc / wget.texi
1 \input texinfo   @c -*-texinfo-*-
2
3 @c %**start of header
4 @setfilename wget.info
5 @include version.texi
6 @settitle GNU Wget @value{VERSION} Manual
7 @c Disable the monstrous rectangles beside overfull hbox-es.
8 @finalout
9 @c Use `odd' to print double-sided.
10 @setchapternewpage on
11 @c %**end of header
12
13 @iftex
14 @c Remove this if you don't use A4 paper.
15 @afourpaper
16 @end iftex
17
18 @c Title for man page.  The weird way texi2pod.pl is written requires
19 @c the preceding @set.
20 @set Wget Wget
21 @c man title Wget The non-interactive network downloader.
22
23 @dircategory Network applications
24 @direntry
25 * Wget: (wget).                 Non-interactive network downloader.
26 @end direntry
27
28 @copying
29 This file documents the GNU Wget utility for downloading network
30 data.
31
32 @c man begin COPYRIGHT
33 Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
34 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
35 Inc.
36
37 @iftex
38 Permission is granted to make and distribute verbatim copies of
39 this manual provided the copyright notice and this permission notice
40 are preserved on all copies.
41 @end iftex
42
43 @ignore
44 Permission is granted to process this file through TeX and print the
45 results, provided the printed document carries a copying permission
46 notice identical to this one except for the removal of this paragraph
47 (this paragraph not being relevant to the printed manual).
48 @end ignore
49 Permission is granted to copy, distribute and/or modify this document
50 under the terms of the GNU Free Documentation License, Version 1.2 or
51 any later version published by the Free Software Foundation; with no
52 Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
53 copy of the license is included in the section entitled ``GNU Free
54 Documentation License''.
55 @c man end
56 @end copying
57
58 @titlepage
59 @title GNU Wget @value{VERSION}
60 @subtitle The non-interactive download utility
61 @subtitle Updated for Wget @value{VERSION}, @value{UPDATED}
62 @author by Hrvoje Nik@v{s}i@'{c} and others
63
64 @ignore
65 @c man begin AUTHOR
66 Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
67 @c man end
68 @c man begin SEEALSO
69 This is @strong{not} the complete manual for GNU Wget.
70 For more complete information, including more detailed explanations of
71 some of the options, and a number of commands available
72 for use with @file{.wgetrc} files and the @samp{-e} option, see the GNU
73 Info entry for @file{wget}.
74 @c man end
75 @end ignore
76
77 @page
78 @vskip 0pt plus 1filll
79 @insertcopying
80 @end titlepage
81
82 @contents
83
84 @ifnottex
85 @node Top, Overview, (dir), (dir)
86 @top Wget @value{VERSION}
87
88 @insertcopying
89 @end ifnottex
90
91 @menu
92 * Overview::                    Features of Wget.
93 * Invoking::                    Wget command-line arguments.
94 * Recursive Download::          Downloading interlinked pages.
95 * Following Links::             The available methods of chasing links.
96 * Time-Stamping::               Mirroring according to time-stamps.
97 * Startup File::                Wget's initialization file.
98 * Examples::                    Examples of usage.
99 * Various::                     The stuff that doesn't fit anywhere else.
100 * Appendices::                  Some useful references.
101 * Copying this manual::         You may give out copies of this manual.
102 * Concept Index::               Topics covered by this manual.
103 @end menu
104
105 @node Overview, Invoking, Top, Top
106 @chapter Overview
107 @cindex overview
108 @cindex features
109
110 @c man begin DESCRIPTION
111 GNU Wget is a free utility for non-interactive download of files from
112 the Web.  It supports @sc{http}, @sc{https}, and @sc{ftp} protocols, as
113 well as retrieval through @sc{http} proxies.
114
115 @c man end
116 This chapter is a partial overview of Wget's features.
117
118 @itemize @bullet
119 @item
120 @c man begin DESCRIPTION
121 Wget is non-interactive, meaning that it can work in the background,
122 while the user is not logged on.  This allows you to start a retrieval
123 and disconnect from the system, letting Wget finish the work.  By
124 contrast, most of the Web browsers require constant user's presence,
125 which can be a great hindrance when transferring a lot of data.
126 @c man end
127
128 @item
129 @ignore
130 @c man begin DESCRIPTION
131
132 @c man end
133 @end ignore
134 @c man begin DESCRIPTION
135 Wget can follow links in @sc{html}, @sc{xhtml}, and @sc{css} pages, to
136 create local versions of remote web sites, fully recreating the
137 directory structure of the original site.  This is sometimes referred to
138 as ``recursive downloading.''  While doing that, Wget respects the Robot
139 Exclusion Standard (@file{/robots.txt}).  Wget can be instructed to
140 convert the links in downloaded files to point at the local files, for
141 offline viewing.
142 @c man end
143
144 @item
145 File name wildcard matching and recursive mirroring of directories are
146 available when retrieving via @sc{ftp}.  Wget can read the time-stamp
147 information given by both @sc{http} and @sc{ftp} servers, and store it
148 locally.  Thus Wget can see if the remote file has changed since last
149 retrieval, and automatically retrieve the new version if it has.  This
150 makes Wget suitable for mirroring of @sc{ftp} sites, as well as home
151 pages.
152
153 @item
154 @ignore
155 @c man begin DESCRIPTION
156
157 @c man end
158 @end ignore
159 @c man begin DESCRIPTION
160 Wget has been designed for robustness over slow or unstable network
161 connections; if a download fails due to a network problem, it will
162 keep retrying until the whole file has been retrieved.  If the server
163 supports regetting, it will instruct the server to continue the
164 download from where it left off.
165 @c man end
166
167 @item
168 Wget supports proxy servers, which can lighten the network load, speed
169 up retrieval and provide access behind firewalls.  Wget uses the passive
170 @sc{ftp} downloading by default, active @sc{ftp} being an option.
171
172 @item
173 Wget supports IP version 6, the next generation of IP.  IPv6 is
174 autodetected at compile-time, and can be disabled at either build or
175 run time.  Binaries built with IPv6 support work well in both
176 IPv4-only and dual family environments.
177
178 @item
179 Built-in features offer mechanisms to tune which links you wish to follow
180 (@pxref{Following Links}).
181
182 @item
183 The progress of individual downloads is traced using a progress gauge.
184 Interactive downloads are tracked using a ``thermometer''-style gauge,
185 whereas non-interactive ones are traced with dots, each dot
186 representing a fixed amount of data received (1KB by default).  Either
187 gauge can be customized to your preferences.
188
189 @item
190 Most of the features are fully configurable, either through command line
191 options, or via the initialization file @file{.wgetrc} (@pxref{Startup
192 File}).  Wget allows you to define @dfn{global} startup files
193 (@file{/usr/local/etc/wgetrc} by default) for site settings. You can also
194 specify the location of a startup file with the --config option.
195  
196
197 @ignore
198 @c man begin FILES
199 @table @samp
200 @item /usr/local/etc/wgetrc
201 Default location of the @dfn{global} startup file.
202
203 @item .wgetrc
204 User startup file.
205 @end table
206 @c man end
207 @end ignore
208
209 @item
210 Finally, GNU Wget is free software.  This means that everyone may use
211 it, redistribute it and/or modify it under the terms of the GNU General
212 Public License, as published by the Free Software Foundation (see the
213 file @file{COPYING} that came with GNU Wget, for details).
214 @end itemize
215
216 @node Invoking, Recursive Download, Overview, Top
217 @chapter Invoking
218 @cindex invoking
219 @cindex command line
220 @cindex arguments
221 @cindex nohup
222
223 By default, Wget is very simple to invoke.  The basic syntax is:
224
225 @example
226 @c man begin SYNOPSIS
227 wget [@var{option}]@dots{} [@var{URL}]@dots{}
228 @c man end
229 @end example
230
231 Wget will simply download all the @sc{url}s specified on the command
232 line.  @var{URL} is a @dfn{Uniform Resource Locator}, as defined below.
233
234 However, you may wish to change some of the default parameters of
235 Wget.  You can do it two ways: permanently, adding the appropriate
236 command to @file{.wgetrc} (@pxref{Startup File}), or specifying it on
237 the command line.
238
239 @menu
240 * URL Format::                  
241 * Option Syntax::               
242 * Basic Startup Options::       
243 * Logging and Input File Options::  
244 * Download Options::            
245 * Directory Options::           
246 * HTTP Options::                
247 * HTTPS (SSL/TLS) Options::     
248 * FTP Options::                 
249 * Recursive Retrieval Options::  
250 * Recursive Accept/Reject Options::  
251 * Exit Status::                 
252 @end menu
253
254 @node URL Format, Option Syntax, Invoking, Invoking
255 @section URL Format
256 @cindex URL
257 @cindex URL syntax
258
259 @dfn{URL} is an acronym for Uniform Resource Locator.  A uniform
260 resource locator is a compact string representation for a resource
261 available via the Internet.  Wget recognizes the @sc{url} syntax as per
262 @sc{rfc1738}.  This is the most widely used form (square brackets denote
263 optional parts):
264
265 @example
266 http://host[:port]/directory/file
267 ftp://host[:port]/directory/file
268 @end example
269
270 You can also encode your username and password within a @sc{url}:
271
272 @example
273 ftp://user:password@@host/path
274 http://user:password@@host/path
275 @end example
276
277 Either @var{user} or @var{password}, or both, may be left out.  If you
278 leave out either the @sc{http} username or password, no authentication
279 will be sent.  If you leave out the @sc{ftp} username, @samp{anonymous}
280 will be used.  If you leave out the @sc{ftp} password, your email
281 address will be supplied as a default password.@footnote{If you have a
282 @file{.netrc} file in your home directory, password will also be
283 searched for there.}
284
285 @strong{Important Note}: if you specify a password-containing @sc{url}
286 on the command line, the username and password will be plainly visible
287 to all users on the system, by way of @code{ps}.  On multi-user systems,
288 this is a big security risk.  To work around it, use @code{wget -i -}
289 and feed the @sc{url}s to Wget's standard input, each on a separate
290 line, terminated by @kbd{C-d}.
291
292 You can encode unsafe characters in a @sc{url} as @samp{%xy}, @code{xy}
293 being the hexadecimal representation of the character's @sc{ascii}
294 value.  Some common unsafe characters include @samp{%} (quoted as
295 @samp{%25}), @samp{:} (quoted as @samp{%3A}), and @samp{@@} (quoted as
296 @samp{%40}).  Refer to @sc{rfc1738} for a comprehensive list of unsafe
297 characters.
298
299 Wget also supports the @code{type} feature for @sc{ftp} @sc{url}s.  By
300 default, @sc{ftp} documents are retrieved in the binary mode (type
301 @samp{i}), which means that they are downloaded unchanged.  Another
302 useful mode is the @samp{a} (@dfn{ASCII}) mode, which converts the line
303 delimiters between the different operating systems, and is thus useful
304 for text files.  Here is an example:
305
306 @example
307 ftp://host/directory/file;type=a
308 @end example
309
310 Two alternative variants of @sc{url} specification are also supported,
311 because of historical (hysterical?) reasons and their widespreaded use.
312
313 @sc{ftp}-only syntax (supported by @code{NcFTP}):
314 @example
315 host:/dir/file
316 @end example
317
318 @sc{http}-only syntax (introduced by @code{Netscape}):
319 @example
320 host[:port]/dir/file
321 @end example
322
323 These two alternative forms are deprecated, and may cease being
324 supported in the future.
325
326 If you do not understand the difference between these notations, or do
327 not know which one to use, just use the plain ordinary format you use
328 with your favorite browser, like @code{Lynx} or @code{Netscape}.
329
330 @c man begin OPTIONS
331
332 @node Option Syntax, Basic Startup Options, URL Format, Invoking
333 @section Option Syntax
334 @cindex option syntax
335 @cindex syntax of options
336
337 Since Wget uses GNU getopt to process command-line arguments, every
338 option has a long form along with the short one.  Long options are
339 more convenient to remember, but take time to type.  You may freely
340 mix different option styles, or specify options after the command-line
341 arguments.  Thus you may write:
342
343 @example
344 wget -r --tries=10 http://fly.srk.fer.hr/ -o log
345 @end example
346
347 The space between the option accepting an argument and the argument may
348 be omitted.  Instead of @samp{-o log} you can write @samp{-olog}.
349
350 You may put several options that do not require arguments together,
351 like:
352
353 @example
354 wget -drc @var{URL}
355 @end example
356
357 This is completely equivalent to:
358
359 @example
360 wget -d -r -c @var{URL}
361 @end example
362
363 Since the options can be specified after the arguments, you may
364 terminate them with @samp{--}.  So the following will try to download
365 @sc{url} @samp{-x}, reporting failure to @file{log}:
366
367 @example
368 wget -o log -- -x
369 @end example
370
371 The options that accept comma-separated lists all respect the convention
372 that specifying an empty list clears its value.  This can be useful to
373 clear the @file{.wgetrc} settings.  For instance, if your @file{.wgetrc}
374 sets @code{exclude_directories} to @file{/cgi-bin}, the following
375 example will first reset it, and then set it to exclude @file{/~nobody}
376 and @file{/~somebody}.  You can also clear the lists in @file{.wgetrc}
377 (@pxref{Wgetrc Syntax}).
378
379 @example
380 wget -X '' -X /~nobody,/~somebody
381 @end example
382
383 Most options that do not accept arguments are @dfn{boolean} options,
384 so named because their state can be captured with a yes-or-no
385 (``boolean'') variable.  For example, @samp{--follow-ftp} tells Wget
386 to follow FTP links from HTML files and, on the other hand,
387 @samp{--no-glob} tells it not to perform file globbing on FTP URLs.  A
388 boolean option is either @dfn{affirmative} or @dfn{negative}
389 (beginning with @samp{--no}).  All such options share several
390 properties.
391
392 Unless stated otherwise, it is assumed that the default behavior is
393 the opposite of what the option accomplishes.  For example, the
394 documented existence of @samp{--follow-ftp} assumes that the default
395 is to @emph{not} follow FTP links from HTML pages.
396
397 Affirmative options can be negated by prepending the @samp{--no-} to
398 the option name; negative options can be negated by omitting the
399 @samp{--no-} prefix.  This might seem superfluous---if the default for
400 an affirmative option is to not do something, then why provide a way
401 to explicitly turn it off?  But the startup file may in fact change
402 the default.  For instance, using @code{follow_ftp = on} in
403 @file{.wgetrc} makes Wget @emph{follow} FTP links by default, and
404 using @samp{--no-follow-ftp} is the only way to restore the factory
405 default from the command line.
406
407 @node Basic Startup Options, Logging and Input File Options, Option Syntax, Invoking
408 @section Basic Startup Options
409
410 @table @samp
411 @item -V
412 @itemx --version
413 Display the version of Wget.
414
415 @item -h
416 @itemx --help
417 Print a help message describing all of Wget's command-line options.
418
419 @item -b
420 @itemx --background
421 Go to background immediately after startup.  If no output file is
422 specified via the @samp{-o}, output is redirected to @file{wget-log}.
423
424 @cindex execute wgetrc command
425 @item -e @var{command}
426 @itemx --execute @var{command}
427 Execute @var{command} as if it were a part of @file{.wgetrc}
428 (@pxref{Startup File}).  A command thus invoked will be executed
429 @emph{after} the commands in @file{.wgetrc}, thus taking precedence over
430 them.  If you need to specify more than one wgetrc command, use multiple
431 instances of @samp{-e}.
432
433 @end table
434
435 @node Logging and Input File Options, Download Options, Basic Startup Options, Invoking
436 @section Logging and Input File Options
437
438 @table @samp
439 @cindex output file
440 @cindex log file
441 @item -o @var{logfile}
442 @itemx --output-file=@var{logfile}
443 Log all messages to @var{logfile}.  The messages are normally reported
444 to standard error.
445
446 @cindex append to log
447 @item -a @var{logfile}
448 @itemx --append-output=@var{logfile}
449 Append to @var{logfile}.  This is the same as @samp{-o}, only it appends
450 to @var{logfile} instead of overwriting the old log file.  If
451 @var{logfile} does not exist, a new file is created.
452
453 @cindex debug
454 @item -d
455 @itemx --debug
456 Turn on debug output, meaning various information important to the
457 developers of Wget if it does not work properly.  Your system
458 administrator may have chosen to compile Wget without debug support, in
459 which case @samp{-d} will not work.  Please note that compiling with
460 debug support is always safe---Wget compiled with the debug support will
461 @emph{not} print any debug info unless requested with @samp{-d}.
462 @xref{Reporting Bugs}, for more information on how to use @samp{-d} for
463 sending bug reports.
464
465 @cindex quiet
466 @item -q
467 @itemx --quiet
468 Turn off Wget's output.
469
470 @cindex verbose
471 @item -v
472 @itemx --verbose
473 Turn on verbose output, with all the available data.  The default output
474 is verbose.
475
476 @item -nv
477 @itemx --no-verbose
478 Turn off verbose without being completely quiet (use @samp{-q} for
479 that), which means that error messages and basic information still get
480 printed.
481
482 @item --report-speed=@var{type}
483 Output bandwidth as @var{type}.  The only accepted value is @samp{bits}.
484
485 @cindex input-file
486 @item -i @var{file}
487 @itemx --input-file=@var{file}
488 Read @sc{url}s from a local or external @var{file}.  If @samp{-} is
489 specified as @var{file}, @sc{url}s are read from the standard input.  
490 (Use @samp{./-} to read from a file literally named @samp{-}.)
491
492 If this function is used, no @sc{url}s need be present on the command
493 line.  If there are @sc{url}s both on the command line and in an input
494 file, those on the command lines will be the first ones to be
495 retrieved.  If @samp{--force-html} is not specified, then @var{file}
496 should consist of a series of URLs, one per line.
497
498 However, if you specify @samp{--force-html}, the document will be
499 regarded as @samp{html}.  In that case you may have problems with
500 relative links, which you can solve either by adding @code{<base
501 href="@var{url}">} to the documents or by specifying
502 @samp{--base=@var{url}} on the command line.
503
504 If the @var{file} is an external one, the document will be automatically
505 treated as @samp{html} if the Content-Type matches @samp{text/html}.
506 Furthermore, the @var{file}'s location will be implicitly used as base
507 href if none was specified.
508
509 @cindex force html
510 @item -F
511 @itemx --force-html
512 When input is read from a file, force it to be treated as an @sc{html}
513 file.  This enables you to retrieve relative links from existing
514 @sc{html} files on your local disk, by adding @code{<base
515 href="@var{url}">} to @sc{html}, or using the @samp{--base} command-line
516 option.
517
518 @cindex base for relative links in input file
519 @item -B @var{URL}
520 @itemx --base=@var{URL}
521 Resolves relative links using @var{URL} as the point of reference,
522 when reading links from an HTML file specified via the
523 @samp{-i}/@samp{--input-file} option (together with
524 @samp{--force-html}, or when the input file was fetched remotely from
525 a server describing it as @sc{html}). This is equivalent to the
526 presence of a @code{BASE} tag in the @sc{html} input file, with
527 @var{URL} as the value for the @code{href} attribute.
528
529 For instance, if you specify @samp{http://foo/bar/a.html} for
530 @var{URL}, and Wget reads @samp{../baz/b.html} from the input file, it
531 would be resolved to @samp{http://foo/baz/b.html}.
532
533 @cindex specify config 
534 @item --config=@var{FILE}
535 Specify the location of a startup file you wish to use.
536 @end table
537
538 @node Download Options, Directory Options, Logging and Input File Options, Invoking
539 @section Download Options
540
541 @table @samp
542 @cindex bind address
543 @cindex client IP address
544 @cindex IP address, client
545 @item --bind-address=@var{ADDRESS}
546 When making client TCP/IP connections, bind to @var{ADDRESS} on
547 the local machine.  @var{ADDRESS} may be specified as a hostname or IP
548 address.  This option can be useful if your machine is bound to multiple
549 IPs.
550
551 @cindex retries
552 @cindex tries
553 @cindex number of retries
554 @item -t @var{number}
555 @itemx --tries=@var{number}
556 Set number of retries to @var{number}.  Specify 0 or @samp{inf} for
557 infinite retrying.  The default is to retry 20 times, with the exception
558 of fatal errors like ``connection refused'' or ``not found'' (404),
559 which are not retried.
560
561 @item -O @var{file}
562 @itemx --output-document=@var{file}
563 The documents will not be written to the appropriate files, but all
564 will be concatenated together and written to @var{file}.  If @samp{-}
565 is used as @var{file}, documents will be printed to standard output,
566 disabling link conversion.  (Use @samp{./-} to print to a file
567 literally named @samp{-}.)
568
569 Use of @samp{-O} is @emph{not} intended to mean simply ``use the name
570 @var{file} instead of the one in the URL;'' rather, it is
571 analogous to shell redirection:
572 @samp{wget -O file http://foo} is intended to work like
573 @samp{wget -O - http://foo > file}; @file{file} will be truncated
574 immediately, and @emph{all} downloaded content will be written there.
575
576 For this reason, @samp{-N} (for timestamp-checking) is not supported
577 in combination with @samp{-O}: since @var{file} is always newly
578 created, it will always have a very new timestamp. A warning will be
579 issued if this combination is used.
580
581 Similarly, using @samp{-r} or @samp{-p} with @samp{-O} may not work as
582 you expect: Wget won't just download the first file to @var{file} and
583 then download the rest to their normal names: @emph{all} downloaded
584 content will be placed in @var{file}. This was disabled in version
585 1.11, but has been reinstated (with a warning) in 1.11.2, as there are
586 some cases where this behavior can actually have some use.
587
588 Note that a combination with @samp{-k} is only permitted when
589 downloading a single document, as in that case it will just convert
590 all relative URIs to external ones; @samp{-k} makes no sense for
591 multiple URIs when they're all being downloaded to a single file;
592 @samp{-k} can be used only when the output is a regular file.
593
594 @cindex clobbering, file
595 @cindex downloading multiple times
596 @cindex no-clobber
597 @item -nc
598 @itemx --no-clobber
599 If a file is downloaded more than once in the same directory, Wget's
600 behavior depends on a few options, including @samp{-nc}.  In certain
601 cases, the local file will be @dfn{clobbered}, or overwritten, upon
602 repeated download.  In other cases it will be preserved.
603
604 When running Wget without @samp{-N}, @samp{-nc}, @samp{-r}, or
605 @samp{-p}, downloading the same file in the same directory will result
606 in the original copy of @var{file} being preserved and the second copy
607 being named @samp{@var{file}.1}.  If that file is downloaded yet
608 again, the third copy will be named @samp{@var{file}.2}, and so on.
609 (This is also the behavior with @samp{-nd}, even if @samp{-r} or
610 @samp{-p} are in effect.)  When @samp{-nc} is specified, this behavior
611 is suppressed, and Wget will refuse to download newer copies of
612 @samp{@var{file}}.  Therefore, ``@code{no-clobber}'' is actually a
613 misnomer in this mode---it's not clobbering that's prevented (as the
614 numeric suffixes were already preventing clobbering), but rather the
615 multiple version saving that's prevented.
616
617 When running Wget with @samp{-r} or @samp{-p}, but without @samp{-N},
618 @samp{-nd}, or @samp{-nc}, re-downloading a file will result in the
619 new copy simply overwriting the old.  Adding @samp{-nc} will prevent
620 this behavior, instead causing the original version to be preserved
621 and any newer copies on the server to be ignored.
622
623 When running Wget with @samp{-N}, with or without @samp{-r} or
624 @samp{-p}, the decision as to whether or not to download a newer copy
625 of a file depends on the local and remote timestamp and size of the
626 file (@pxref{Time-Stamping}).  @samp{-nc} may not be specified at the
627 same time as @samp{-N}.
628
629 Note that when @samp{-nc} is specified, files with the suffixes
630 @samp{.html} or @samp{.htm} will be loaded from the local disk and
631 parsed as if they had been retrieved from the Web.
632
633 @cindex continue retrieval
634 @cindex incomplete downloads
635 @cindex resume download
636 @item -c
637 @itemx --continue
638 Continue getting a partially-downloaded file.  This is useful when you
639 want to finish up a download started by a previous instance of Wget, or
640 by another program.  For instance:
641
642 @example
643 wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
644 @end example
645
646 If there is a file named @file{ls-lR.Z} in the current directory, Wget
647 will assume that it is the first portion of the remote file, and will
648 ask the server to continue the retrieval from an offset equal to the
649 length of the local file.
650
651 Note that you don't need to specify this option if you just want the
652 current invocation of Wget to retry downloading a file should the
653 connection be lost midway through.  This is the default behavior.
654 @samp{-c} only affects resumption of downloads started @emph{prior} to
655 this invocation of Wget, and whose local files are still sitting around.
656
657 Without @samp{-c}, the previous example would just download the remote
658 file to @file{ls-lR.Z.1}, leaving the truncated @file{ls-lR.Z} file
659 alone.
660
661 Beginning with Wget 1.7, if you use @samp{-c} on a non-empty file, and
662 it turns out that the server does not support continued downloading,
663 Wget will refuse to start the download from scratch, which would
664 effectively ruin existing contents.  If you really want the download to
665 start from scratch, remove the file.
666
667 Also beginning with Wget 1.7, if you use @samp{-c} on a file which is of
668 equal size as the one on the server, Wget will refuse to download the
669 file and print an explanatory message.  The same happens when the file
670 is smaller on the server than locally (presumably because it was changed
671 on the server since your last download attempt)---because ``continuing''
672 is not meaningful, no download occurs.
673
674 On the other side of the coin, while using @samp{-c}, any file that's
675 bigger on the server than locally will be considered an incomplete
676 download and only @code{(length(remote) - length(local))} bytes will be
677 downloaded and tacked onto the end of the local file.  This behavior can
678 be desirable in certain cases---for instance, you can use @samp{wget -c}
679 to download just the new portion that's been appended to a data
680 collection or log file.
681
682 However, if the file is bigger on the server because it's been
683 @emph{changed}, as opposed to just @emph{appended} to, you'll end up
684 with a garbled file.  Wget has no way of verifying that the local file
685 is really a valid prefix of the remote file.  You need to be especially
686 careful of this when using @samp{-c} in conjunction with @samp{-r},
687 since every file will be considered as an "incomplete download" candidate.
688
689 Another instance where you'll get a garbled file if you try to use
690 @samp{-c} is if you have a lame @sc{http} proxy that inserts a
691 ``transfer interrupted'' string into the local file.  In the future a
692 ``rollback'' option may be added to deal with this case.
693
694 Note that @samp{-c} only works with @sc{ftp} servers and with @sc{http}
695 servers that support the @code{Range} header.
696
697 @cindex progress indicator
698 @cindex dot style
699 @item --progress=@var{type}
700 Select the type of the progress indicator you wish to use.  Legal
701 indicators are ``dot'' and ``bar''.
702
703 The ``bar'' indicator is used by default.  It draws an @sc{ascii} progress
704 bar graphics (a.k.a ``thermometer'' display) indicating the status of
705 retrieval.  If the output is not a TTY, the ``dot'' bar will be used by
706 default.
707
708 Use @samp{--progress=dot} to switch to the ``dot'' display.  It traces
709 the retrieval by printing dots on the screen, each dot representing a
710 fixed amount of downloaded data.
711
712 When using the dotted retrieval, you may also set the @dfn{style} by
713 specifying the type as @samp{dot:@var{style}}.  Different styles assign
714 different meaning to one dot.  With the @code{default} style each dot
715 represents 1K, there are ten dots in a cluster and 50 dots in a line.
716 The @code{binary} style has a more ``computer''-like orientation---8K
717 dots, 16-dots clusters and 48 dots per line (which makes for 384K
718 lines).  The @code{mega} style is suitable for downloading very large
719 files---each dot represents 64K retrieved, there are eight dots in a
720 cluster, and 48 dots on each line (so each line contains 3M).
721
722 Note that you can set the default style using the @code{progress}
723 command in @file{.wgetrc}.  That setting may be overridden from the
724 command line.  The exception is that, when the output is not a TTY, the
725 ``dot'' progress will be favored over ``bar''.  To force the bar output,
726 use @samp{--progress=bar:force}.
727
728 @item -N
729 @itemx --timestamping
730 Turn on time-stamping.  @xref{Time-Stamping}, for details.
731
732 @item --no-use-server-timestamps
733 Don't set the local file's timestamp by the one on the server.
734
735 By default, when a file is downloaded, it's timestamps are set to
736 match those from the remote file. This allows the use of
737 @samp{--timestamping} on subsequent invocations of wget. However, it
738 is sometimes useful to base the local file's timestamp on when it was
739 actually downloaded; for that purpose, the
740 @samp{--no-use-server-timestamps} option has been provided.
741
742 @cindex server response, print
743 @item -S
744 @itemx --server-response
745 Print the headers sent by @sc{http} servers and responses sent by
746 @sc{ftp} servers.
747
748 @cindex Wget as spider
749 @cindex spider
750 @item --spider
751 When invoked with this option, Wget will behave as a Web @dfn{spider},
752 which means that it will not download the pages, just check that they
753 are there.  For example, you can use Wget to check your bookmarks:
754
755 @example
756 wget --spider --force-html -i bookmarks.html
757 @end example
758
759 This feature needs much more work for Wget to get close to the
760 functionality of real web spiders.
761
762 @cindex timeout
763 @item -T seconds
764 @itemx --timeout=@var{seconds}
765 Set the network timeout to @var{seconds} seconds.  This is equivalent
766 to specifying @samp{--dns-timeout}, @samp{--connect-timeout}, and
767 @samp{--read-timeout}, all at the same time.
768
769 When interacting with the network, Wget can check for timeout and
770 abort the operation if it takes too long.  This prevents anomalies
771 like hanging reads and infinite connects.  The only timeout enabled by
772 default is a 900-second read timeout.  Setting a timeout to 0 disables
773 it altogether.  Unless you know what you are doing, it is best not to
774 change the default timeout settings.
775
776 All timeout-related options accept decimal values, as well as
777 subsecond values.  For example, @samp{0.1} seconds is a legal (though
778 unwise) choice of timeout.  Subsecond timeouts are useful for checking
779 server response times or for testing network latency.
780
781 @cindex DNS timeout
782 @cindex timeout, DNS
783 @item --dns-timeout=@var{seconds}
784 Set the DNS lookup timeout to @var{seconds} seconds.  DNS lookups that
785 don't complete within the specified time will fail.  By default, there
786 is no timeout on DNS lookups, other than that implemented by system
787 libraries.
788
789 @cindex connect timeout
790 @cindex timeout, connect
791 @item --connect-timeout=@var{seconds}
792 Set the connect timeout to @var{seconds} seconds.  TCP connections that
793 take longer to establish will be aborted.  By default, there is no
794 connect timeout, other than that implemented by system libraries.
795
796 @cindex read timeout
797 @cindex timeout, read
798 @item --read-timeout=@var{seconds}
799 Set the read (and write) timeout to @var{seconds} seconds.  The
800 ``time'' of this timeout refers to @dfn{idle time}: if, at any point in
801 the download, no data is received for more than the specified number
802 of seconds, reading fails and the download is restarted.  This option
803 does not directly affect the duration of the entire download.
804
805 Of course, the remote server may choose to terminate the connection
806 sooner than this option requires.  The default read timeout is 900
807 seconds.
808
809 @cindex bandwidth, limit
810 @cindex rate, limit
811 @cindex limit bandwidth
812 @item --limit-rate=@var{amount}
813 Limit the download speed to @var{amount} bytes per second.  Amount may
814 be expressed in bytes, kilobytes with the @samp{k} suffix, or megabytes
815 with the @samp{m} suffix.  For example, @samp{--limit-rate=20k} will
816 limit the retrieval rate to 20KB/s.  This is useful when, for whatever
817 reason, you don't want Wget to consume the entire available bandwidth.
818
819 This option allows the use of decimal numbers, usually in conjunction
820 with power suffixes; for example, @samp{--limit-rate=2.5k} is a legal
821 value.
822
823 Note that Wget implements the limiting by sleeping the appropriate
824 amount of time after a network read that took less time than specified
825 by the rate.  Eventually this strategy causes the TCP transfer to slow
826 down to approximately the specified rate.  However, it may take some
827 time for this balance to be achieved, so don't be surprised if limiting
828 the rate doesn't work well with very small files.
829
830 @cindex pause
831 @cindex wait
832 @item -w @var{seconds}
833 @itemx --wait=@var{seconds}
834 Wait the specified number of seconds between the retrievals.  Use of
835 this option is recommended, as it lightens the server load by making the
836 requests less frequent.  Instead of in seconds, the time can be
837 specified in minutes using the @code{m} suffix, in hours using @code{h}
838 suffix, or in days using @code{d} suffix.
839
840 Specifying a large value for this option is useful if the network or the
841 destination host is down, so that Wget can wait long enough to
842 reasonably expect the network error to be fixed before the retry.  The
843 waiting interval specified by this function is influenced by
844 @code{--random-wait}, which see.
845
846 @cindex retries, waiting between
847 @cindex waiting between retries
848 @item --waitretry=@var{seconds}
849 If you don't want Wget to wait between @emph{every} retrieval, but only
850 between retries of failed downloads, you can use this option.  Wget will
851 use @dfn{linear backoff}, waiting 1 second after the first failure on a
852 given file, then waiting 2 seconds after the second failure on that
853 file, up to the maximum number of @var{seconds} you specify.
854
855 By default, Wget will assume a value of 10 seconds.
856
857 @cindex wait, random
858 @cindex random wait
859 @item --random-wait
860 Some web sites may perform log analysis to identify retrieval programs
861 such as Wget by looking for statistically significant similarities in
862 the time between requests. This option causes the time between requests
863 to vary between 0.5 and 1.5 * @var{wait} seconds, where @var{wait} was
864 specified using the @samp{--wait} option, in order to mask Wget's
865 presence from such analysis.
866
867 A 2001 article in a publication devoted to development on a popular
868 consumer platform provided code to perform this analysis on the fly.
869 Its author suggested blocking at the class C address level to ensure
870 automated retrieval programs were blocked despite changing DHCP-supplied
871 addresses.
872
873 The @samp{--random-wait} option was inspired by this ill-advised
874 recommendation to block many unrelated users from a web site due to the
875 actions of one.
876
877 @cindex proxy
878 @item --no-proxy
879 Don't use proxies, even if the appropriate @code{*_proxy} environment
880 variable is defined.
881
882 @c man end
883 For more information about the use of proxies with Wget, @xref{Proxies}.
884 @c man begin OPTIONS
885
886 @cindex quota
887 @item -Q @var{quota}
888 @itemx --quota=@var{quota}
889 Specify download quota for automatic retrievals.  The value can be
890 specified in bytes (default), kilobytes (with @samp{k} suffix), or
891 megabytes (with @samp{m} suffix).
892
893 Note that quota will never affect downloading a single file.  So if you
894 specify @samp{wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz}, all of the
895 @file{ls-lR.gz} will be downloaded.  The same goes even when several
896 @sc{url}s are specified on the command-line.  However, quota is
897 respected when retrieving either recursively, or from an input file.
898 Thus you may safely type @samp{wget -Q2m -i sites}---download will be
899 aborted when the quota is exceeded.
900
901 Setting quota to 0 or to @samp{inf} unlimits the download quota.
902
903 @cindex DNS cache
904 @cindex caching of DNS lookups
905 @item --no-dns-cache
906 Turn off caching of DNS lookups.  Normally, Wget remembers the IP
907 addresses it looked up from DNS so it doesn't have to repeatedly
908 contact the DNS server for the same (typically small) set of hosts it
909 retrieves from.  This cache exists in memory only; a new Wget run will
910 contact DNS again.
911
912 However, it has been reported that in some situations it is not
913 desirable to cache host names, even for the duration of a
914 short-running application like Wget.  With this option Wget issues a
915 new DNS lookup (more precisely, a new call to @code{gethostbyname} or
916 @code{getaddrinfo}) each time it makes a new connection.  Please note
917 that this option will @emph{not} affect caching that might be
918 performed by the resolving library or by an external caching layer,
919 such as NSCD.
920
921 If you don't understand exactly what this option does, you probably
922 won't need it.
923
924 @cindex file names, restrict
925 @cindex Windows file names
926 @item --restrict-file-names=@var{modes}
927 Change which characters found in remote URLs must be escaped during
928 generation of local filenames.  Characters that are @dfn{restricted}
929 by this option are escaped, i.e. replaced with @samp{%HH}, where
930 @samp{HH} is the hexadecimal number that corresponds to the restricted
931 character. This option may also be used to force all alphabetical
932 cases to be either lower- or uppercase.
933
934 By default, Wget escapes the characters that are not valid or safe as
935 part of file names on your operating system, as well as control
936 characters that are typically unprintable.  This option is useful for
937 changing these defaults, perhaps because you are downloading to a
938 non-native partition, or because you want to disable escaping of the
939 control characters, or you want to further restrict characters to only
940 those in the @sc{ascii} range of values.
941
942 The @var{modes} are a comma-separated set of text values. The
943 acceptable values are @samp{unix}, @samp{windows}, @samp{nocontrol},
944 @samp{ascii}, @samp{lowercase}, and @samp{uppercase}. The values
945 @samp{unix} and @samp{windows} are mutually exclusive (one will
946 override the other), as are @samp{lowercase} and
947 @samp{uppercase}. Those last are special cases, as they do not change
948 the set of characters that would be escaped, but rather force local
949 file paths to be converted either to lower- or uppercase.
950
951 When ``unix'' is specified, Wget escapes the character @samp{/} and
952 the control characters in the ranges 0--31 and 128--159.  This is the
953 default on Unix-like operating systems.
954
955 When ``windows'' is given, Wget escapes the characters @samp{\},
956 @samp{|}, @samp{/}, @samp{:}, @samp{?}, @samp{"}, @samp{*}, @samp{<},
957 @samp{>}, and the control characters in the ranges 0--31 and 128--159.
958 In addition to this, Wget in Windows mode uses @samp{+} instead of
959 @samp{:} to separate host and port in local file names, and uses
960 @samp{@@} instead of @samp{?} to separate the query portion of the file
961 name from the rest.  Therefore, a URL that would be saved as
962 @samp{www.xemacs.org:4300/search.pl?input=blah} in Unix mode would be
963 saved as @samp{www.xemacs.org+4300/search.pl@@input=blah} in Windows
964 mode.  This mode is the default on Windows.
965
966 If you specify @samp{nocontrol}, then the escaping of the control
967 characters is also switched off. This option may make sense
968 when you are downloading URLs whose names contain UTF-8 characters, on
969 a system which can save and display filenames in UTF-8 (some possible
970 byte values used in UTF-8 byte sequences fall in the range of values
971 designated by Wget as ``controls'').
972
973 The @samp{ascii} mode is used to specify that any bytes whose values
974 are outside the range of @sc{ascii} characters (that is, greater than
975 127) shall be escaped. This can be useful when saving filenames
976 whose encoding does not match the one used locally.
977
978 @cindex IPv6
979 @item -4
980 @itemx --inet4-only
981 @itemx -6
982 @itemx --inet6-only
983 Force connecting to IPv4 or IPv6 addresses.  With @samp{--inet4-only}
984 or @samp{-4}, Wget will only connect to IPv4 hosts, ignoring AAAA
985 records in DNS, and refusing to connect to IPv6 addresses specified in
986 URLs.  Conversely, with @samp{--inet6-only} or @samp{-6}, Wget will
987 only connect to IPv6 hosts and ignore A records and IPv4 addresses.
988
989 Neither options should be needed normally.  By default, an IPv6-aware
990 Wget will use the address family specified by the host's DNS record.
991 If the DNS responds with both IPv4 and IPv6 addresses, Wget will try
992 them in sequence until it finds one it can connect to.  (Also see
993 @code{--prefer-family} option described below.)
994
995 These options can be used to deliberately force the use of IPv4 or
996 IPv6 address families on dual family systems, usually to aid debugging
997 or to deal with broken network configuration.  Only one of
998 @samp{--inet6-only} and @samp{--inet4-only} may be specified at the
999 same time.  Neither option is available in Wget compiled without IPv6
1000 support.
1001
1002 @item --prefer-family=none/IPv4/IPv6
1003 When given a choice of several addresses, connect to the addresses
1004 with specified address family first.  The address order returned by
1005 DNS is used without change by default.
1006
1007 This avoids spurious errors and connect attempts when accessing hosts
1008 that resolve to both IPv6 and IPv4 addresses from IPv4 networks.  For
1009 example, @samp{www.kame.net} resolves to
1010 @samp{2001:200:0:8002:203:47ff:fea5:3085} and to
1011 @samp{203.178.141.194}.  When the preferred family is @code{IPv4}, the
1012 IPv4 address is used first; when the preferred family is @code{IPv6},
1013 the IPv6 address is used first; if the specified value is @code{none},
1014 the address order returned by DNS is used without change.
1015
1016 Unlike @samp{-4} and @samp{-6}, this option doesn't inhibit access to
1017 any address family, it only changes the @emph{order} in which the
1018 addresses are accessed.  Also note that the reordering performed by
1019 this option is @dfn{stable}---it doesn't affect order of addresses of
1020 the same family.  That is, the relative order of all IPv4 addresses
1021 and of all IPv6 addresses remains intact in all cases.
1022
1023 @item --retry-connrefused
1024 Consider ``connection refused'' a transient error and try again.
1025 Normally Wget gives up on a URL when it is unable to connect to the
1026 site because failure to connect is taken as a sign that the server is
1027 not running at all and that retries would not help.  This option is
1028 for mirroring unreliable sites whose servers tend to disappear for
1029 short periods of time.
1030
1031 @cindex user
1032 @cindex password
1033 @cindex authentication
1034 @item --user=@var{user}
1035 @itemx --password=@var{password}
1036 Specify the username @var{user} and password @var{password} for both
1037 @sc{ftp} and @sc{http} file retrieval.  These parameters can be overridden
1038 using the @samp{--ftp-user} and @samp{--ftp-password} options for 
1039 @sc{ftp} connections and the @samp{--http-user} and @samp{--http-password} 
1040 options for @sc{http} connections.
1041
1042 @item --ask-password
1043 Prompt for a password for each connection established. Cannot be specified
1044 when @samp{--password} is being used, because they are mutually exclusive.
1045
1046 @cindex iri support
1047 @cindex idn support
1048 @item --no-iri
1049
1050 Turn off internationalized URI (IRI) support. Use @samp{--iri} to
1051 turn it on. IRI support is activated by default.
1052
1053 You can set the default state of IRI support using the @code{iri}
1054 command in @file{.wgetrc}. That setting may be overridden from the
1055 command line.
1056
1057 @cindex local encoding
1058 @item --local-encoding=@var{encoding}
1059
1060 Force Wget to use @var{encoding} as the default system encoding. That affects
1061 how Wget converts URLs specified as arguments from locale to @sc{utf-8} for
1062 IRI support.
1063
1064 Wget use the function @code{nl_langinfo()} and then the @code{CHARSET}
1065 environment variable to get the locale. If it fails, @sc{ascii} is used.
1066
1067 You can set the default local encoding using the @code{local_encoding}
1068 command in @file{.wgetrc}. That setting may be overridden from the
1069 command line.
1070
1071 @cindex remote encoding
1072 @item --remote-encoding=@var{encoding}
1073
1074 Force Wget to use @var{encoding} as the default remote server encoding.
1075 That affects how Wget converts URIs found in files from remote encoding
1076 to @sc{utf-8} during a recursive fetch. This options is only useful for
1077 IRI support, for the interpretation of non-@sc{ascii} characters.
1078
1079 For HTTP, remote encoding can be found in HTTP @code{Content-Type}
1080 header and in HTML @code{Content-Type http-equiv} meta tag.
1081
1082 You can set the default encoding using the @code{remoteencoding}
1083 command in @file{.wgetrc}. That setting may be overridden from the
1084 command line.
1085
1086 @cindex unlink
1087 @item --unlink
1088
1089 Force Wget to unlink file instead of clobbering existing file. This
1090 option is useful for downloading to the directory with hardlinks.
1091
1092 @end table
1093
1094 @node Directory Options, HTTP Options, Download Options, Invoking
1095 @section Directory Options
1096
1097 @table @samp       
1098 @item -nd
1099 @itemx --no-directories
1100 Do not create a hierarchy of directories when retrieving recursively.
1101 With this option turned on, all files will get saved to the current
1102 directory, without clobbering (if a name shows up more than once, the
1103 filenames will get extensions @samp{.n}).
1104
1105 @item -x
1106 @itemx --force-directories
1107 The opposite of @samp{-nd}---create a hierarchy of directories, even if
1108 one would not have been created otherwise.  E.g. @samp{wget -x
1109 http://fly.srk.fer.hr/robots.txt} will save the downloaded file to
1110 @file{fly.srk.fer.hr/robots.txt}.
1111
1112 @item -nH
1113 @itemx --no-host-directories
1114 Disable generation of host-prefixed directories.  By default, invoking
1115 Wget with @samp{-r http://fly.srk.fer.hr/} will create a structure of
1116 directories beginning with @file{fly.srk.fer.hr/}.  This option disables
1117 such behavior.
1118
1119 @item --protocol-directories
1120 Use the protocol name as a directory component of local file names.  For
1121 example, with this option, @samp{wget -r http://@var{host}} will save to
1122 @samp{http/@var{host}/...} rather than just to @samp{@var{host}/...}.
1123
1124 @cindex cut directories
1125 @item --cut-dirs=@var{number}
1126 Ignore @var{number} directory components.  This is useful for getting a
1127 fine-grained control over the directory where recursive retrieval will
1128 be saved.
1129
1130 Take, for example, the directory at
1131 @samp{ftp://ftp.xemacs.org/pub/xemacs/}.  If you retrieve it with
1132 @samp{-r}, it will be saved locally under
1133 @file{ftp.xemacs.org/pub/xemacs/}.  While the @samp{-nH} option can
1134 remove the @file{ftp.xemacs.org/} part, you are still stuck with
1135 @file{pub/xemacs}.  This is where @samp{--cut-dirs} comes in handy; it
1136 makes Wget not ``see'' @var{number} remote directory components.  Here
1137 are several examples of how @samp{--cut-dirs} option works.
1138
1139 @example
1140 @group
1141 No options        -> ftp.xemacs.org/pub/xemacs/
1142 -nH               -> pub/xemacs/
1143 -nH --cut-dirs=1  -> xemacs/
1144 -nH --cut-dirs=2  -> .
1145
1146 --cut-dirs=1      -> ftp.xemacs.org/xemacs/
1147 ...
1148 @end group
1149 @end example
1150
1151 If you just want to get rid of the directory structure, this option is
1152 similar to a combination of @samp{-nd} and @samp{-P}.  However, unlike
1153 @samp{-nd}, @samp{--cut-dirs} does not lose with subdirectories---for
1154 instance, with @samp{-nH --cut-dirs=1}, a @file{beta/} subdirectory will
1155 be placed to @file{xemacs/beta}, as one would expect.
1156
1157 @cindex directory prefix
1158 @item -P @var{prefix}
1159 @itemx --directory-prefix=@var{prefix}
1160 Set directory prefix to @var{prefix}.  The @dfn{directory prefix} is the
1161 directory where all other files and subdirectories will be saved to,
1162 i.e. the top of the retrieval tree.  The default is @samp{.} (the
1163 current directory).
1164 @end table
1165
1166 @node HTTP Options, HTTPS (SSL/TLS) Options, Directory Options, Invoking
1167 @section HTTP Options
1168
1169 @table @samp
1170 @cindex default page name
1171 @cindex index.html
1172 @item --default-page=@var{name}
1173 Use @var{name} as the default file name when it isn't known (i.e., for
1174 URLs that end in a slash), instead of @file{index.html}.
1175
1176 @cindex .html extension
1177 @cindex .css extension
1178 @item -E
1179 @itemx --adjust-extension
1180 If a file of type @samp{application/xhtml+xml} or @samp{text/html} is 
1181 downloaded and the URL does not end with the regexp 
1182 @samp{\.[Hh][Tt][Mm][Ll]?}, this option will cause the suffix @samp{.html} 
1183 to be appended to the local filename.  This is useful, for instance, when 
1184 you're mirroring a remote site that uses @samp{.asp} pages, but you want 
1185 the mirrored pages to be viewable on your stock Apache server.  Another 
1186 good use for this is when you're downloading CGI-generated materials.  A URL 
1187 like @samp{http://site.com/article.cgi?25} will be saved as
1188 @file{article.cgi?25.html}.
1189
1190 Note that filenames changed in this way will be re-downloaded every time
1191 you re-mirror a site, because Wget can't tell that the local
1192 @file{@var{X}.html} file corresponds to remote URL @samp{@var{X}} (since
1193 it doesn't yet know that the URL produces output of type
1194 @samp{text/html} or @samp{application/xhtml+xml}.
1195
1196 As of version 1.12, Wget will also ensure that any downloaded files of
1197 type @samp{text/css} end in the suffix @samp{.css}, and the option was
1198 renamed from @samp{--html-extension}, to better reflect its new
1199 behavior. The old option name is still acceptable, but should now be
1200 considered deprecated.
1201
1202 At some point in the future, this option may well be expanded to
1203 include suffixes for other types of content, including content types
1204 that are not parsed by Wget.
1205
1206 @cindex http user
1207 @cindex http password
1208 @cindex authentication
1209 @item --http-user=@var{user}
1210 @itemx --http-password=@var{password}
1211 Specify the username @var{user} and password @var{password} on an
1212 @sc{http} server.  According to the type of the challenge, Wget will
1213 encode them using either the @code{basic} (insecure),
1214 the @code{digest}, or the Windows @code{NTLM} authentication scheme.
1215
1216 Another way to specify username and password is in the @sc{url} itself
1217 (@pxref{URL Format}).  Either method reveals your password to anyone who
1218 bothers to run @code{ps}.  To prevent the passwords from being seen,
1219 store them in @file{.wgetrc} or @file{.netrc}, and make sure to protect
1220 those files from other users with @code{chmod}.  If the passwords are
1221 really important, do not leave them lying in those files either---edit
1222 the files and delete them after Wget has started the download.
1223
1224 @iftex
1225 For more information about security issues with Wget, @xref{Security
1226 Considerations}.
1227 @end iftex
1228
1229 @cindex Keep-Alive, turning off
1230 @cindex Persistent Connections, disabling
1231 @item --no-http-keep-alive
1232 Turn off the ``keep-alive'' feature for HTTP downloads.  Normally, Wget
1233 asks the server to keep the connection open so that, when you download
1234 more than one document from the same server, they get transferred over
1235 the same TCP connection.  This saves time and at the same time reduces
1236 the load on the server.
1237
1238 This option is useful when, for some reason, persistent (keep-alive)
1239 connections don't work for you, for example due to a server bug or due
1240 to the inability of server-side scripts to cope with the connections.
1241
1242 @cindex proxy
1243 @cindex cache
1244 @item --no-cache
1245 Disable server-side cache.  In this case, Wget will send the remote
1246 server an appropriate directive (@samp{Pragma: no-cache}) to get the
1247 file from the remote service, rather than returning the cached version.
1248 This is especially useful for retrieving and flushing out-of-date
1249 documents on proxy servers.
1250
1251 Caching is allowed by default.
1252
1253 @cindex cookies
1254 @item --no-cookies
1255 Disable the use of cookies.  Cookies are a mechanism for maintaining
1256 server-side state.  The server sends the client a cookie using the
1257 @code{Set-Cookie} header, and the client responds with the same cookie
1258 upon further requests.  Since cookies allow the server owners to keep
1259 track of visitors and for sites to exchange this information, some
1260 consider them a breach of privacy.  The default is to use cookies;
1261 however, @emph{storing} cookies is not on by default.
1262
1263 @cindex loading cookies
1264 @cindex cookies, loading
1265 @item --load-cookies @var{file}
1266 Load cookies from @var{file} before the first HTTP retrieval.
1267 @var{file} is a textual file in the format originally used by Netscape's
1268 @file{cookies.txt} file.
1269
1270 You will typically use this option when mirroring sites that require
1271 that you be logged in to access some or all of their content.  The login
1272 process typically works by the web server issuing an @sc{http} cookie
1273 upon receiving and verifying your credentials.  The cookie is then
1274 resent by the browser when accessing that part of the site, and so
1275 proves your identity.
1276
1277 Mirroring such a site requires Wget to send the same cookies your
1278 browser sends when communicating with the site.  This is achieved by
1279 @samp{--load-cookies}---simply point Wget to the location of the
1280 @file{cookies.txt} file, and it will send the same cookies your browser
1281 would send in the same situation.  Different browsers keep textual
1282 cookie files in different locations:
1283
1284 @table @asis
1285 @item Netscape 4.x.
1286 The cookies are in @file{~/.netscape/cookies.txt}.
1287
1288 @item Mozilla and Netscape 6.x.
1289 Mozilla's cookie file is also named @file{cookies.txt}, located
1290 somewhere under @file{~/.mozilla}, in the directory of your profile.
1291 The full path usually ends up looking somewhat like
1292 @file{~/.mozilla/default/@var{some-weird-string}/cookies.txt}.
1293
1294 @item Internet Explorer.
1295 You can produce a cookie file Wget can use by using the File menu,
1296 Import and Export, Export Cookies.  This has been tested with Internet
1297 Explorer 5; it is not guaranteed to work with earlier versions.
1298
1299 @item Other browsers.
1300 If you are using a different browser to create your cookies,
1301 @samp{--load-cookies} will only work if you can locate or produce a
1302 cookie file in the Netscape format that Wget expects.
1303 @end table
1304
1305 If you cannot use @samp{--load-cookies}, there might still be an
1306 alternative.  If your browser supports a ``cookie manager'', you can use
1307 it to view the cookies used when accessing the site you're mirroring.
1308 Write down the name and value of the cookie, and manually instruct Wget
1309 to send those cookies, bypassing the ``official'' cookie support:
1310
1311 @example
1312 wget --no-cookies --header "Cookie: @var{name}=@var{value}"
1313 @end example
1314
1315 @cindex saving cookies
1316 @cindex cookies, saving
1317 @item --save-cookies @var{file}
1318 Save cookies to @var{file} before exiting.  This will not save cookies
1319 that have expired or that have no expiry time (so-called ``session
1320 cookies''), but also see @samp{--keep-session-cookies}.
1321
1322 @cindex cookies, session
1323 @cindex session cookies
1324 @item --keep-session-cookies
1325 When specified, causes @samp{--save-cookies} to also save session
1326 cookies.  Session cookies are normally not saved because they are
1327 meant to be kept in memory and forgotten when you exit the browser.
1328 Saving them is useful on sites that require you to log in or to visit
1329 the home page before you can access some pages.  With this option,
1330 multiple Wget runs are considered a single browser session as far as
1331 the site is concerned.
1332
1333 Since the cookie file format does not normally carry session cookies,
1334 Wget marks them with an expiry timestamp of 0.  Wget's
1335 @samp{--load-cookies} recognizes those as session cookies, but it might
1336 confuse other browsers.  Also note that cookies so loaded will be
1337 treated as other session cookies, which means that if you want
1338 @samp{--save-cookies} to preserve them again, you must use
1339 @samp{--keep-session-cookies} again.
1340
1341 @cindex Content-Length, ignore
1342 @cindex ignore length
1343 @item --ignore-length
1344 Unfortunately, some @sc{http} servers (@sc{cgi} programs, to be more
1345 precise) send out bogus @code{Content-Length} headers, which makes Wget
1346 go wild, as it thinks not all the document was retrieved.  You can spot
1347 this syndrome if Wget retries getting the same document again and again,
1348 each time claiming that the (otherwise normal) connection has closed on
1349 the very same byte.
1350
1351 With this option, Wget will ignore the @code{Content-Length} header---as
1352 if it never existed.
1353
1354 @cindex header, add
1355 @item --header=@var{header-line}
1356 Send @var{header-line} along with the rest of the headers in each
1357 @sc{http} request.  The supplied header is sent as-is, which means it
1358 must contain name and value separated by colon, and must not contain
1359 newlines.
1360
1361 You may define more than one additional header by specifying
1362 @samp{--header} more than once.
1363
1364 @example
1365 @group
1366 wget --header='Accept-Charset: iso-8859-2' \
1367      --header='Accept-Language: hr'        \
1368        http://fly.srk.fer.hr/
1369 @end group
1370 @end example
1371
1372 Specification of an empty string as the header value will clear all
1373 previous user-defined headers.
1374
1375 As of Wget 1.10, this option can be used to override headers otherwise
1376 generated automatically.  This example instructs Wget to connect to
1377 localhost, but to specify @samp{foo.bar} in the @code{Host} header:
1378
1379 @example
1380 wget --header="Host: foo.bar" http://localhost/
1381 @end example
1382
1383 In versions of Wget prior to 1.10 such use of @samp{--header} caused
1384 sending of duplicate headers.
1385
1386 @cindex redirect
1387 @item --max-redirect=@var{number}
1388 Specifies the maximum number of redirections to follow for a resource.
1389 The default is 20, which is usually far more than necessary. However, on
1390 those occasions where you want to allow more (or fewer), this is the
1391 option to use.
1392
1393 @cindex proxy user
1394 @cindex proxy password
1395 @cindex proxy authentication
1396 @item --proxy-user=@var{user}
1397 @itemx --proxy-password=@var{password}
1398 Specify the username @var{user} and password @var{password} for
1399 authentication on a proxy server.  Wget will encode them using the
1400 @code{basic} authentication scheme.
1401
1402 Security considerations similar to those with @samp{--http-password}
1403 pertain here as well.
1404
1405 @cindex http referer
1406 @cindex referer, http
1407 @item --referer=@var{url}
1408 Include `Referer: @var{url}' header in HTTP request.  Useful for
1409 retrieving documents with server-side processing that assume they are
1410 always being retrieved by interactive web browsers and only come out
1411 properly when Referer is set to one of the pages that point to them.
1412
1413 @cindex server response, save
1414 @item --save-headers
1415 Save the headers sent by the @sc{http} server to the file, preceding the
1416 actual contents, with an empty line as the separator.
1417
1418 @cindex user-agent
1419 @item -U @var{agent-string}
1420 @itemx --user-agent=@var{agent-string}
1421 Identify as @var{agent-string} to the @sc{http} server.
1422
1423 The @sc{http} protocol allows the clients to identify themselves using a
1424 @code{User-Agent} header field.  This enables distinguishing the
1425 @sc{www} software, usually for statistical purposes or for tracing of
1426 protocol violations.  Wget normally identifies as
1427 @samp{Wget/@var{version}}, @var{version} being the current version
1428 number of Wget.
1429
1430 However, some sites have been known to impose the policy of tailoring
1431 the output according to the @code{User-Agent}-supplied information.
1432 While this is not such a bad idea in theory, it has been abused by
1433 servers denying information to clients other than (historically)
1434 Netscape or, more frequently, Microsoft Internet Explorer.  This
1435 option allows you to change the @code{User-Agent} line issued by Wget.
1436 Use of this option is discouraged, unless you really know what you are
1437 doing.
1438
1439 Specifying empty user agent with @samp{--user-agent=""} instructs Wget
1440 not to send the @code{User-Agent} header in @sc{http} requests.
1441
1442 @cindex POST
1443 @item --post-data=@var{string}
1444 @itemx --post-file=@var{file}
1445 Use POST as the method for all HTTP requests and send the specified
1446 data in the request body.  @samp{--post-data} sends @var{string} as
1447 data, whereas @samp{--post-file} sends the contents of @var{file}.
1448 Other than that, they work in exactly the same way. In particular,
1449 they @emph{both} expect content of the form @code{key1=value1&key2=value2},
1450 with percent-encoding for special characters; the only difference is
1451 that one expects its content as a command-line parameter and the other
1452 accepts its content from a file. In particular, @samp{--post-file} is
1453 @emph{not} for transmitting files as form attachments: those must
1454 appear as @code{key=value} data (with appropriate percent-coding) just
1455 like everything else. Wget does not currently support
1456 @code{multipart/form-data} for transmitting POST data; only
1457 @code{application/x-www-form-urlencoded}. Only one of
1458 @samp{--post-data} and @samp{--post-file} should be specified.
1459
1460 Please note that wget does not require the content to be of the form
1461 @code{key1=value1&key2=value2}, and neither does it test for it. Wget will
1462 simply transmit whatever data is provided to it. Most servers however expect
1463 the POST data to be in the above format when processing HTML Forms.
1464
1465 Please be aware that Wget needs to know the size of the POST data in
1466 advance.  Therefore the argument to @code{--post-file} must be a regular
1467 file; specifying a FIFO or something like @file{/dev/stdin} won't work.
1468 It's not quite clear how to work around this limitation inherent in
1469 HTTP/1.0.  Although HTTP/1.1 introduces @dfn{chunked} transfer that
1470 doesn't require knowing the request length in advance, a client can't
1471 use chunked unless it knows it's talking to an HTTP/1.1 server.  And it
1472 can't know that until it receives a response, which in turn requires the
1473 request to have been completed -- a chicken-and-egg problem.
1474
1475 Note: if Wget is redirected after the POST request is completed, it
1476 will not send the POST data to the redirected URL.  This is because
1477 URLs that process POST often respond with a redirection to a regular
1478 page, which does not desire or accept POST.  It is not completely
1479 clear that this behavior is optimal; if it doesn't work out, it might
1480 be changed in the future.
1481
1482 This example shows how to log to a server using POST and then proceed to
1483 download the desired pages, presumably only accessible to authorized
1484 users:
1485
1486 @example
1487 @group
1488 # @r{Log in to the server.  This can be done only once.}
1489 wget --save-cookies cookies.txt \
1490      --post-data 'user=foo&password=bar' \
1491      http://server.com/auth.php
1492
1493 # @r{Now grab the page or pages we care about.}
1494 wget --load-cookies cookies.txt \
1495      -p http://server.com/interesting/article.php
1496 @end group
1497 @end example
1498
1499 If the server is using session cookies to track user authentication,
1500 the above will not work because @samp{--save-cookies} will not save
1501 them (and neither will browsers) and the @file{cookies.txt} file will
1502 be empty.  In that case use @samp{--keep-session-cookies} along with
1503 @samp{--save-cookies} to force saving of session cookies.
1504
1505 @cindex Other HTTP Methods
1506 @item --method=@var{HTTP-Method}
1507 For the purpose of RESTful scripting, Wget allows sending of other HTTP Methods
1508 without the need to explicitly set them using @samp{--header=Header-Line}.
1509 Wget will use whatever string is passed to it after @samp{--method} as the HTTP
1510 Method to the server.
1511
1512 @item --body-data=@var{Data-String}
1513 @itemx --body-file=@var{Data-File}
1514 Must be set when additional data needs to be sent to the server along with the
1515 Method specified using @samp{--method}. @samp{--post-data} sends @var{string} as
1516 data, whereas @samp{--post-file} sends the contents of @var{file}. Other than that,
1517 they work in exactly the same way.
1518
1519 Currently, @samp{--body-file} is @emph{not} for transmitting files as a whole.
1520 Wget does not currently support @code{multipart/form-data} for transmitting data;
1521 only @code{application/x-www-form-urlencoded}. In the future, this may be changed
1522 so that wget sends the @samp{--body-file} as a complete file instead of sending its
1523 contents to the server. Please be aware that Wget needs to know the contents of
1524 BODY Data in advance, and hence the argument to @samp{--body-file} should be a
1525 regular file. See @samp{--post-file} for a more detailed explanation.
1526 Only one of @samp{--body-data} and @samp{--body-file} should be specified.
1527
1528 Wget handles these requests in the same way that it handles @samp{--post-data}
1529 and @samp{--post-file}. If you invoke Wget with @samp{--method=POST} and the server
1530 responds with a redirect request, then Wget will revert to a GET request during the
1531 redirection as is explained in @samp{--post-data}.
1532
1533 @cindex Content-Disposition
1534 @item --content-disposition
1535
1536 If this is set to on, experimental (not fully-functional) support for
1537 @code{Content-Disposition} headers is enabled. This can currently result in
1538 extra round-trips to the server for a @code{HEAD} request, and is known
1539 to suffer from a few bugs, which is why it is not currently enabled by default.
1540
1541 This option is useful for some file-downloading CGI programs that use
1542 @code{Content-Disposition} headers to describe what the name of a
1543 downloaded file should be.
1544
1545 @cindex Content On Error
1546 @item --content-on-error
1547
1548 If this is set to on, wget will not skip the content when the server responds
1549 with a http status code that indicates error.
1550
1551 @cindex Trust server names
1552 @item --trust-server-names
1553
1554 If this is set to on, on a redirect the last component of the
1555 redirection URL will be used as the local file name.  By default it is
1556 used the last component in the original URL.
1557
1558 @cindex authentication
1559 @item --auth-no-challenge
1560
1561 If this option is given, Wget will send Basic HTTP authentication
1562 information (plaintext username and password) for all requests, just
1563 like Wget 1.10.2 and prior did by default.
1564
1565 Use of this option is not recommended, and is intended only to support
1566 some few obscure servers, which never send HTTP authentication
1567 challenges, but accept unsolicited auth info, say, in addition to
1568 form-based authentication.
1569
1570 @end table
1571
1572 @node HTTPS (SSL/TLS) Options, FTP Options, HTTP Options, Invoking
1573 @section HTTPS (SSL/TLS) Options
1574
1575 @cindex SSL
1576 To support encrypted HTTP (HTTPS) downloads, Wget must be compiled
1577 with an external SSL library, currently OpenSSL.  If Wget is compiled
1578 without SSL support, none of these options are available.
1579
1580 @table @samp
1581 @cindex SSL protocol, choose
1582 @item --secure-protocol=@var{protocol}
1583 Choose the secure protocol to be used.  Legal values are @samp{auto},
1584 @samp{SSLv2}, @samp{SSLv3}, and @samp{TLSv1}.  If @samp{auto} is used,
1585 the SSL library is given the liberty of choosing the appropriate
1586 protocol automatically, which is achieved by sending an SSLv2 greeting
1587 and announcing support for SSLv3 and TLSv1.  This is the default.
1588
1589 Specifying @samp{SSLv2}, @samp{SSLv3}, or @samp{TLSv1} forces the use
1590 of the corresponding protocol.  This is useful when talking to old and
1591 buggy SSL server implementations that make it hard for OpenSSL to
1592 choose the correct protocol version.  Fortunately, such servers are
1593 quite rare.
1594
1595 @cindex SSL certificate, check
1596 @item --no-check-certificate
1597 Don't check the server certificate against the available certificate
1598 authorities.  Also don't require the URL host name to match the common
1599 name presented by the certificate.
1600
1601 As of Wget 1.10, the default is to verify the server's certificate
1602 against the recognized certificate authorities, breaking the SSL
1603 handshake and aborting the download if the verification fails.
1604 Although this provides more secure downloads, it does break
1605 interoperability with some sites that worked with previous Wget
1606 versions, particularly those using self-signed, expired, or otherwise
1607 invalid certificates.  This option forces an ``insecure'' mode of
1608 operation that turns the certificate verification errors into warnings
1609 and allows you to proceed.
1610
1611 If you encounter ``certificate verification'' errors or ones saying
1612 that ``common name doesn't match requested host name'', you can use
1613 this option to bypass the verification and proceed with the download.
1614 @emph{Only use this option if you are otherwise convinced of the
1615 site's authenticity, or if you really don't care about the validity of
1616 its certificate.}  It is almost always a bad idea not to check the
1617 certificates when transmitting confidential or important data.
1618
1619 @cindex SSL certificate
1620 @item --certificate=@var{file}
1621 Use the client certificate stored in @var{file}.  This is needed for
1622 servers that are configured to require certificates from the clients
1623 that connect to them.  Normally a certificate is not required and this
1624 switch is optional.
1625
1626 @cindex SSL certificate type, specify
1627 @item --certificate-type=@var{type}
1628 Specify the type of the client certificate.  Legal values are
1629 @samp{PEM} (assumed by default) and @samp{DER}, also known as
1630 @samp{ASN1}.
1631
1632 @item --private-key=@var{file}
1633 Read the private key from @var{file}.  This allows you to provide the
1634 private key in a file separate from the certificate.
1635
1636 @item --private-key-type=@var{type}
1637 Specify the type of the private key.  Accepted values are @samp{PEM}
1638 (the default) and @samp{DER}.
1639
1640 @item --ca-certificate=@var{file}
1641 Use @var{file} as the file with the bundle of certificate authorities
1642 (``CA'') to verify the peers.  The certificates must be in PEM format.
1643
1644 Without this option Wget looks for CA certificates at the
1645 system-specified locations, chosen at OpenSSL installation time.
1646
1647 @cindex SSL certificate authority
1648 @item --ca-directory=@var{directory}
1649 Specifies directory containing CA certificates in PEM format.  Each
1650 file contains one CA certificate, and the file name is based on a hash
1651 value derived from the certificate.  This is achieved by processing a
1652 certificate directory with the @code{c_rehash} utility supplied with
1653 OpenSSL.  Using @samp{--ca-directory} is more efficient than
1654 @samp{--ca-certificate} when many certificates are installed because
1655 it allows Wget to fetch certificates on demand.
1656
1657 Without this option Wget looks for CA certificates at the
1658 system-specified locations, chosen at OpenSSL installation time.
1659
1660 @cindex entropy, specifying source of
1661 @cindex randomness, specifying source of
1662 @item --random-file=@var{file}
1663 Use @var{file} as the source of random data for seeding the
1664 pseudo-random number generator on systems without @file{/dev/random}.
1665
1666 On such systems the SSL library needs an external source of randomness
1667 to initialize.  Randomness may be provided by EGD (see
1668 @samp{--egd-file} below) or read from an external source specified by
1669 the user.  If this option is not specified, Wget looks for random data
1670 in @code{$RANDFILE} or, if that is unset, in @file{$HOME/.rnd}.  If
1671 none of those are available, it is likely that SSL encryption will not
1672 be usable.
1673
1674 If you're getting the ``Could not seed OpenSSL PRNG; disabling SSL.'' 
1675 error, you should provide random data using some of the methods
1676 described above.
1677
1678 @cindex EGD
1679 @item --egd-file=@var{file}
1680 Use @var{file} as the EGD socket.  EGD stands for @dfn{Entropy
1681 Gathering Daemon}, a user-space program that collects data from
1682 various unpredictable system sources and makes it available to other
1683 programs that might need it.  Encryption software, such as the SSL
1684 library, needs sources of non-repeating randomness to seed the random
1685 number generator used to produce cryptographically strong keys.
1686
1687 OpenSSL allows the user to specify his own source of entropy using the
1688 @code{RAND_FILE} environment variable.  If this variable is unset, or
1689 if the specified file does not produce enough randomness, OpenSSL will
1690 read random data from EGD socket specified using this option.
1691
1692 If this option is not specified (and the equivalent startup command is
1693 not used), EGD is never contacted.  EGD is not needed on modern Unix
1694 systems that support @file{/dev/random}.
1695 @end table
1696
1697 @cindex WARC
1698 @table @samp
1699 @item --warc-file=@var{file}
1700 Use @var{file} as the destination WARC file.
1701
1702 @item --warc-header=@var{string}
1703 Use @var{string} into as the warcinfo record.
1704
1705 @item --warc-max-size=@var{size}
1706 Set the maximum size of the WARC files to @var{size}.
1707
1708 @item --warc-cdx
1709 Write CDX index files.
1710
1711 @item --warc-dedup=@var{file}
1712 Do not store records listed in this CDX file.
1713
1714 @item --no-warc-compression
1715 Do not compress WARC files with GZIP.
1716
1717 @item --no-warc-digests
1718 Do not calculate SHA1 digests.
1719
1720 @item --no-warc-keep-log
1721 Do not store the log file in a WARC record.
1722
1723 @item --warc-tempdir=@var{dir}
1724 Specify the location for temporary files created by the WARC writer.
1725 @end table
1726
1727 @node FTP Options, Recursive Retrieval Options, HTTPS (SSL/TLS) Options, Invoking
1728 @section FTP Options
1729
1730 @table @samp
1731 @cindex ftp user
1732 @cindex ftp password
1733 @cindex ftp authentication
1734 @item --ftp-user=@var{user}
1735 @itemx --ftp-password=@var{password}
1736 Specify the username @var{user} and password @var{password} on an
1737 @sc{ftp} server.  Without this, or the corresponding startup option, 
1738 the password defaults to @samp{-wget@@}, normally used for anonymous 
1739 FTP.
1740
1741 Another way to specify username and password is in the @sc{url} itself
1742 (@pxref{URL Format}).  Either method reveals your password to anyone who
1743 bothers to run @code{ps}.  To prevent the passwords from being seen,
1744 store them in @file{.wgetrc} or @file{.netrc}, and make sure to protect
1745 those files from other users with @code{chmod}.  If the passwords are
1746 really important, do not leave them lying in those files either---edit
1747 the files and delete them after Wget has started the download.
1748
1749 @iftex
1750 For more information about security issues with Wget, @xref{Security
1751 Considerations}.
1752 @end iftex
1753
1754 @cindex .listing files, removing
1755 @item --no-remove-listing
1756 Don't remove the temporary @file{.listing} files generated by @sc{ftp}
1757 retrievals.  Normally, these files contain the raw directory listings
1758 received from @sc{ftp} servers.  Not removing them can be useful for
1759 debugging purposes, or when you want to be able to easily check on the
1760 contents of remote server directories (e.g. to verify that a mirror
1761 you're running is complete).
1762
1763 Note that even though Wget writes to a known filename for this file,
1764 this is not a security hole in the scenario of a user making
1765 @file{.listing} a symbolic link to @file{/etc/passwd} or something and
1766 asking @code{root} to run Wget in his or her directory.  Depending on
1767 the options used, either Wget will refuse to write to @file{.listing},
1768 making the globbing/recursion/time-stamping operation fail, or the
1769 symbolic link will be deleted and replaced with the actual
1770 @file{.listing} file, or the listing will be written to a
1771 @file{.listing.@var{number}} file.
1772
1773 Even though this situation isn't a problem, though, @code{root} should
1774 never run Wget in a non-trusted user's directory.  A user could do
1775 something as simple as linking @file{index.html} to @file{/etc/passwd}
1776 and asking @code{root} to run Wget with @samp{-N} or @samp{-r} so the file
1777 will be overwritten.
1778
1779 @cindex globbing, toggle
1780 @item --no-glob
1781 Turn off @sc{ftp} globbing.  Globbing refers to the use of shell-like
1782 special characters (@dfn{wildcards}), like @samp{*}, @samp{?}, @samp{[}
1783 and @samp{]} to retrieve more than one file from the same directory at
1784 once, like:
1785
1786 @example
1787 wget ftp://gnjilux.srk.fer.hr/*.msg
1788 @end example
1789
1790 By default, globbing will be turned on if the @sc{url} contains a
1791 globbing character.  This option may be used to turn globbing on or off
1792 permanently.
1793
1794 You may have to quote the @sc{url} to protect it from being expanded by
1795 your shell.  Globbing makes Wget look for a directory listing, which is
1796 system-specific.  This is why it currently works only with Unix @sc{ftp}
1797 servers (and the ones emulating Unix @code{ls} output).
1798
1799 @cindex passive ftp
1800 @item --no-passive-ftp
1801 Disable the use of the @dfn{passive} FTP transfer mode.  Passive FTP
1802 mandates that the client connect to the server to establish the data
1803 connection rather than the other way around.
1804
1805 If the machine is connected to the Internet directly, both passive and
1806 active FTP should work equally well.  Behind most firewall and NAT
1807 configurations passive FTP has a better chance of working.  However,
1808 in some rare firewall configurations, active FTP actually works when
1809 passive FTP doesn't.  If you suspect this to be the case, use this
1810 option, or set @code{passive_ftp=off} in your init file.
1811
1812 @cindex symbolic links, retrieving
1813 @item --retr-symlinks
1814 Usually, when retrieving @sc{ftp} directories recursively and a symbolic
1815 link is encountered, the linked-to file is not downloaded.  Instead, a
1816 matching symbolic link is created on the local filesystem.  The
1817 pointed-to file will not be downloaded unless this recursive retrieval
1818 would have encountered it separately and downloaded it anyway.
1819
1820 When @samp{--retr-symlinks} is specified, however, symbolic links are
1821 traversed and the pointed-to files are retrieved.  At this time, this
1822 option does not cause Wget to traverse symlinks to directories and
1823 recurse through them, but in the future it should be enhanced to do
1824 this.
1825
1826 Note that when retrieving a file (not a directory) because it was
1827 specified on the command-line, rather than because it was recursed to,
1828 this option has no effect.  Symbolic links are always traversed in this
1829 case.
1830 @end table
1831
1832 @node Recursive Retrieval Options, Recursive Accept/Reject Options, FTP Options, Invoking
1833 @section Recursive Retrieval Options
1834
1835 @table @samp
1836 @item -r
1837 @itemx --recursive
1838 Turn on recursive retrieving.  @xref{Recursive Download}, for more
1839 details.  The default maximum depth is 5.
1840
1841 @item -l @var{depth}
1842 @itemx --level=@var{depth}
1843 Specify recursion maximum depth level @var{depth} (@pxref{Recursive
1844 Download}).
1845
1846 @cindex proxy filling
1847 @cindex delete after retrieval
1848 @cindex filling proxy cache
1849 @item --delete-after
1850 This option tells Wget to delete every single file it downloads,
1851 @emph{after} having done so.  It is useful for pre-fetching popular
1852 pages through a proxy, e.g.:
1853
1854 @example
1855 wget -r -nd --delete-after http://whatever.com/~popular/page/
1856 @end example
1857
1858 The @samp{-r} option is to retrieve recursively, and @samp{-nd} to not
1859 create directories.  
1860
1861 Note that @samp{--delete-after} deletes files on the local machine.  It
1862 does not issue the @samp{DELE} command to remote FTP sites, for
1863 instance.  Also note that when @samp{--delete-after} is specified,
1864 @samp{--convert-links} is ignored, so @samp{.orig} files are simply not
1865 created in the first place.
1866
1867 @cindex conversion of links
1868 @cindex link conversion
1869 @item -k
1870 @itemx --convert-links
1871 After the download is complete, convert the links in the document to
1872 make them suitable for local viewing.  This affects not only the visible
1873 hyperlinks, but any part of the document that links to external content,
1874 such as embedded images, links to style sheets, hyperlinks to non-@sc{html}
1875 content, etc.
1876
1877 Each link will be changed in one of the two ways:
1878
1879 @itemize @bullet
1880 @item
1881 The links to files that have been downloaded by Wget will be changed to
1882 refer to the file they point to as a relative link.
1883
1884 Example: if the downloaded file @file{/foo/doc.html} links to
1885 @file{/bar/img.gif}, also downloaded, then the link in @file{doc.html}
1886 will be modified to point to @samp{../bar/img.gif}.  This kind of
1887 transformation works reliably for arbitrary combinations of directories.
1888
1889 @item
1890 The links to files that have not been downloaded by Wget will be changed
1891 to include host name and absolute path of the location they point to.
1892
1893 Example: if the downloaded file @file{/foo/doc.html} links to
1894 @file{/bar/img.gif} (or to @file{../bar/img.gif}), then the link in
1895 @file{doc.html} will be modified to point to
1896 @file{http://@var{hostname}/bar/img.gif}.
1897 @end itemize
1898
1899 Because of this, local browsing works reliably: if a linked file was
1900 downloaded, the link will refer to its local name; if it was not
1901 downloaded, the link will refer to its full Internet address rather than
1902 presenting a broken link.  The fact that the former links are converted
1903 to relative links ensures that you can move the downloaded hierarchy to
1904 another directory.
1905
1906 Note that only at the end of the download can Wget know which links have
1907 been downloaded.  Because of that, the work done by @samp{-k} will be
1908 performed at the end of all the downloads.
1909
1910 @cindex backing up converted files
1911 @item -K
1912 @itemx --backup-converted
1913 When converting a file, back up the original version with a @samp{.orig}
1914 suffix.  Affects the behavior of @samp{-N} (@pxref{HTTP Time-Stamping
1915 Internals}).
1916
1917 @item -m
1918 @itemx --mirror
1919 Turn on options suitable for mirroring.  This option turns on recursion
1920 and time-stamping, sets infinite recursion depth and keeps @sc{ftp}
1921 directory listings.  It is currently equivalent to
1922 @samp{-r -N -l inf --no-remove-listing}.
1923
1924 @cindex page requisites
1925 @cindex required images, downloading
1926 @item -p
1927 @itemx --page-requisites
1928 This option causes Wget to download all the files that are necessary to
1929 properly display a given @sc{html} page.  This includes such things as
1930 inlined images, sounds, and referenced stylesheets.
1931
1932 Ordinarily, when downloading a single @sc{html} page, any requisite documents
1933 that may be needed to display it properly are not downloaded.  Using
1934 @samp{-r} together with @samp{-l} can help, but since Wget does not
1935 ordinarily distinguish between external and inlined documents, one is
1936 generally left with ``leaf documents'' that are missing their
1937 requisites.
1938
1939 For instance, say document @file{1.html} contains an @code{<IMG>} tag
1940 referencing @file{1.gif} and an @code{<A>} tag pointing to external
1941 document @file{2.html}.  Say that @file{2.html} is similar but that its
1942 image is @file{2.gif} and it links to @file{3.html}.  Say this
1943 continues up to some arbitrarily high number.
1944
1945 If one executes the command:
1946
1947 @example
1948 wget -r -l 2 http://@var{site}/1.html
1949 @end example
1950
1951 then @file{1.html}, @file{1.gif}, @file{2.html}, @file{2.gif}, and
1952 @file{3.html} will be downloaded.  As you can see, @file{3.html} is
1953 without its requisite @file{3.gif} because Wget is simply counting the
1954 number of hops (up to 2) away from @file{1.html} in order to determine
1955 where to stop the recursion.  However, with this command:
1956
1957 @example
1958 wget -r -l 2 -p http://@var{site}/1.html
1959 @end example
1960
1961 all the above files @emph{and} @file{3.html}'s requisite @file{3.gif}
1962 will be downloaded.  Similarly,
1963
1964 @example
1965 wget -r -l 1 -p http://@var{site}/1.html
1966 @end example
1967
1968 will cause @file{1.html}, @file{1.gif}, @file{2.html}, and @file{2.gif}
1969 to be downloaded.  One might think that:
1970
1971 @example
1972 wget -r -l 0 -p http://@var{site}/1.html
1973 @end example
1974
1975 would download just @file{1.html} and @file{1.gif}, but unfortunately
1976 this is not the case, because @samp{-l 0} is equivalent to
1977 @samp{-l inf}---that is, infinite recursion.  To download a single @sc{html}
1978 page (or a handful of them, all specified on the command-line or in a
1979 @samp{-i} @sc{url} input file) and its (or their) requisites, simply leave off
1980 @samp{-r} and @samp{-l}:
1981
1982 @example
1983 wget -p http://@var{site}/1.html
1984 @end example
1985
1986 Note that Wget will behave as if @samp{-r} had been specified, but only
1987 that single page and its requisites will be downloaded.  Links from that
1988 page to external documents will not be followed.  Actually, to download
1989 a single page and all its requisites (even if they exist on separate
1990 websites), and make sure the lot displays properly locally, this author
1991 likes to use a few options in addition to @samp{-p}:
1992
1993 @example
1994 wget -E -H -k -K -p http://@var{site}/@var{document}
1995 @end example
1996
1997 To finish off this topic, it's worth knowing that Wget's idea of an
1998 external document link is any URL specified in an @code{<A>} tag, an
1999 @code{<AREA>} tag, or a @code{<LINK>} tag other than @code{<LINK
2000 REL="stylesheet">}.
2001
2002 @cindex @sc{html} comments
2003 @cindex comments, @sc{html}
2004 @item --strict-comments
2005 Turn on strict parsing of @sc{html} comments.  The default is to terminate
2006 comments at the first occurrence of @samp{-->}.
2007
2008 According to specifications, @sc{html} comments are expressed as @sc{sgml}
2009 @dfn{declarations}.  Declaration is special markup that begins with
2010 @samp{<!} and ends with @samp{>}, such as @samp{<!DOCTYPE ...>}, that
2011 may contain comments between a pair of @samp{--} delimiters.  @sc{html}
2012 comments are ``empty declarations'', @sc{sgml} declarations without any
2013 non-comment text.  Therefore, @samp{<!--foo-->} is a valid comment, and
2014 so is @samp{<!--one-- --two-->}, but @samp{<!--1--2-->} is not.
2015
2016 On the other hand, most @sc{html} writers don't perceive comments as anything
2017 other than text delimited with @samp{<!--} and @samp{-->}, which is not
2018 quite the same.  For example, something like @samp{<!------------>}
2019 works as a valid comment as long as the number of dashes is a multiple
2020 of four (!).  If not, the comment technically lasts until the next
2021 @samp{--}, which may be at the other end of the document.  Because of
2022 this, many popular browsers completely ignore the specification and
2023 implement what users have come to expect: comments delimited with
2024 @samp{<!--} and @samp{-->}.
2025
2026 Until version 1.9, Wget interpreted comments strictly, which resulted in
2027 missing links in many web pages that displayed fine in browsers, but had
2028 the misfortune of containing non-compliant comments.  Beginning with
2029 version 1.9, Wget has joined the ranks of clients that implements
2030 ``naive'' comments, terminating each comment at the first occurrence of
2031 @samp{-->}.
2032
2033 If, for whatever reason, you want strict comment parsing, use this
2034 option to turn it on.
2035 @end table
2036
2037 @node Recursive Accept/Reject Options, Exit Status, Recursive Retrieval Options, Invoking
2038 @section Recursive Accept/Reject Options
2039
2040 @table @samp
2041 @item -A @var{acclist} --accept @var{acclist}
2042 @itemx -R @var{rejlist} --reject @var{rejlist}
2043 Specify comma-separated lists of file name suffixes or patterns to
2044 accept or reject (@pxref{Types of Files}). Note that if
2045 any of the wildcard characters, @samp{*}, @samp{?}, @samp{[} or
2046 @samp{]}, appear in an element of @var{acclist} or @var{rejlist},
2047 it will be treated as a pattern, rather than a suffix.
2048
2049 @item -D @var{domain-list}
2050 @itemx --domains=@var{domain-list}
2051 Set domains to be followed.  @var{domain-list} is a comma-separated list
2052 of domains.  Note that it does @emph{not} turn on @samp{-H}.
2053
2054 @item --exclude-domains @var{domain-list}
2055 Specify the domains that are @emph{not} to be followed
2056 (@pxref{Spanning Hosts}).
2057
2058 @cindex follow FTP links
2059 @item --follow-ftp
2060 Follow @sc{ftp} links from @sc{html} documents.  Without this option,
2061 Wget will ignore all the @sc{ftp} links.
2062
2063 @cindex tag-based recursive pruning
2064 @item --follow-tags=@var{list}
2065 Wget has an internal table of @sc{html} tag / attribute pairs that it
2066 considers when looking for linked documents during a recursive
2067 retrieval.  If a user wants only a subset of those tags to be
2068 considered, however, he or she should be specify such tags in a
2069 comma-separated @var{list} with this option.
2070
2071 @item --ignore-tags=@var{list}
2072 This is the opposite of the @samp{--follow-tags} option.  To skip
2073 certain @sc{html} tags when recursively looking for documents to download,
2074 specify them in a comma-separated @var{list}.  
2075
2076 In the past, this option was the best bet for downloading a single page
2077 and its requisites, using a command-line like:
2078
2079 @example
2080 wget --ignore-tags=a,area -H -k -K -r http://@var{site}/@var{document}
2081 @end example
2082
2083 However, the author of this option came across a page with tags like
2084 @code{<LINK REL="home" HREF="/">} and came to the realization that
2085 specifying tags to ignore was not enough.  One can't just tell Wget to
2086 ignore @code{<LINK>}, because then stylesheets will not be downloaded.
2087 Now the best bet for downloading a single page and its requisites is the
2088 dedicated @samp{--page-requisites} option.
2089
2090 @cindex case fold
2091 @cindex ignore case
2092 @item --ignore-case
2093 Ignore case when matching files and directories.  This influences the
2094 behavior of -R, -A, -I, and -X options, as well as globbing
2095 implemented when downloading from FTP sites.  For example, with this
2096 option, @samp{-A *.txt} will match @samp{file1.txt}, but also
2097 @samp{file2.TXT}, @samp{file3.TxT}, and so on.
2098
2099 @item -H
2100 @itemx --span-hosts
2101 Enable spanning across hosts when doing recursive retrieving
2102 (@pxref{Spanning Hosts}).
2103
2104 @item -L
2105 @itemx --relative
2106 Follow relative links only.  Useful for retrieving a specific home page
2107 without any distractions, not even those from the same hosts
2108 (@pxref{Relative Links}).
2109
2110 @item -I @var{list}
2111 @itemx --include-directories=@var{list}
2112 Specify a comma-separated list of directories you wish to follow when
2113 downloading (@pxref{Directory-Based Limits}).  Elements
2114 of @var{list} may contain wildcards.
2115
2116 @item -X @var{list}
2117 @itemx --exclude-directories=@var{list}
2118 Specify a comma-separated list of directories you wish to exclude from
2119 download (@pxref{Directory-Based Limits}).  Elements of
2120 @var{list} may contain wildcards.
2121
2122 @item -np
2123 @item --no-parent
2124 Do not ever ascend to the parent directory when retrieving recursively.
2125 This is a useful option, since it guarantees that only the files
2126 @emph{below} a certain hierarchy will be downloaded.
2127 @xref{Directory-Based Limits}, for more details.
2128 @end table
2129
2130 @c man end
2131
2132 @node Exit Status,  , Recursive Accept/Reject Options, Invoking
2133 @section Exit Status
2134                                    
2135 @c man begin EXITSTATUS
2136
2137 Wget may return one of several error codes if it encounters problems.
2138
2139
2140 @table @asis
2141 @item 0
2142 No problems occurred.
2143
2144 @item 1
2145 Generic error code.
2146
2147 @item 2
2148 Parse error---for instance, when parsing command-line options, the
2149 @samp{.wgetrc} or @samp{.netrc}...
2150
2151 @item 3
2152 File I/O error.
2153
2154 @item 4
2155 Network failure.
2156
2157 @item 5
2158 SSL verification failure.
2159
2160 @item 6
2161 Username/password authentication failure.
2162
2163 @item 7
2164 Protocol errors.
2165
2166 @item 8
2167 Server issued an error response.
2168 @end table
2169
2170
2171 With the exceptions of 0 and 1, the lower-numbered exit codes take
2172 precedence over higher-numbered ones, when multiple types of errors
2173 are encountered.
2174
2175 In versions of Wget prior to 1.12, Wget's exit status tended to be
2176 unhelpful and inconsistent. Recursive downloads would virtually always
2177 return 0 (success), regardless of any issues encountered, and
2178 non-recursive fetches only returned the status corresponding to the
2179 most recently-attempted download.
2180
2181 @c man end
2182
2183 @node Recursive Download, Following Links, Invoking, Top
2184 @chapter Recursive Download
2185 @cindex recursion
2186 @cindex retrieving
2187 @cindex recursive download
2188
2189 GNU Wget is capable of traversing parts of the Web (or a single
2190 @sc{http} or @sc{ftp} server), following links and directory structure.
2191 We refer to this as to @dfn{recursive retrieval}, or @dfn{recursion}.
2192
2193 With @sc{http} @sc{url}s, Wget retrieves and parses the @sc{html} or
2194 @sc{css} from the given @sc{url}, retrieving the files the document
2195 refers to, through markup like @code{href} or @code{src}, or @sc{css}
2196 @sc{uri} values specified using the @samp{url()} functional notation.
2197 If the freshly downloaded file is also of type @code{text/html},
2198 @code{application/xhtml+xml}, or @code{text/css}, it will be parsed
2199 and followed further.
2200
2201 Recursive retrieval of @sc{http} and @sc{html}/@sc{css} content is
2202 @dfn{breadth-first}.  This means that Wget first downloads the requested
2203 document, then the documents linked from that document, then the
2204 documents linked by them, and so on.  In other words, Wget first
2205 downloads the documents at depth 1, then those at depth 2, and so on
2206 until the specified maximum depth.
2207
2208 The maximum @dfn{depth} to which the retrieval may descend is specified
2209 with the @samp{-l} option.  The default maximum depth is five layers.
2210
2211 When retrieving an @sc{ftp} @sc{url} recursively, Wget will retrieve all
2212 the data from the given directory tree (including the subdirectories up
2213 to the specified depth) on the remote server, creating its mirror image
2214 locally.  @sc{ftp} retrieval is also limited by the @code{depth}
2215 parameter.  Unlike @sc{http} recursion, @sc{ftp} recursion is performed
2216 depth-first.
2217
2218 By default, Wget will create a local directory tree, corresponding to
2219 the one found on the remote server.
2220
2221 Recursive retrieving can find a number of applications, the most
2222 important of which is mirroring.  It is also useful for @sc{www}
2223 presentations, and any other opportunities where slow network
2224 connections should be bypassed by storing the files locally.
2225
2226 You should be warned that recursive downloads can overload the remote
2227 servers.  Because of that, many administrators frown upon them and may
2228 ban access from your site if they detect very fast downloads of big
2229 amounts of content.  When downloading from Internet servers, consider
2230 using the @samp{-w} option to introduce a delay between accesses to the
2231 server.  The download will take a while longer, but the server
2232 administrator will not be alarmed by your rudeness.
2233
2234 Of course, recursive download may cause problems on your machine.  If
2235 left to run unchecked, it can easily fill up the disk.  If downloading
2236 from local network, it can also take bandwidth on the system, as well as
2237 consume memory and CPU.
2238
2239 Try to specify the criteria that match the kind of download you are
2240 trying to achieve.  If you want to download only one page, use
2241 @samp{--page-requisites} without any additional recursion.  If you want
2242 to download things under one directory, use @samp{-np} to avoid
2243 downloading things from other directories.  If you want to download all
2244 the files from one directory, use @samp{-l 1} to make sure the recursion
2245 depth never exceeds one.  @xref{Following Links}, for more information
2246 about this.
2247
2248 Recursive retrieval should be used with care.  Don't say you were not
2249 warned.
2250
2251 @node Following Links, Time-Stamping, Recursive Download, Top
2252 @chapter Following Links
2253 @cindex links
2254 @cindex following links
2255
2256 When retrieving recursively, one does not wish to retrieve loads of
2257 unnecessary data.  Most of the time the users bear in mind exactly what
2258 they want to download, and want Wget to follow only specific links.
2259
2260 For example, if you wish to download the music archive from
2261 @samp{fly.srk.fer.hr}, you will not want to download all the home pages
2262 that happen to be referenced by an obscure part of the archive.
2263
2264 Wget possesses several mechanisms that allows you to fine-tune which
2265 links it will follow.
2266
2267 @menu
2268 * Spanning Hosts::              (Un)limiting retrieval based on host name.
2269 * Types of Files::              Getting only certain files.
2270 * Directory-Based Limits::      Getting only certain directories.
2271 * Relative Links::              Follow relative links only.
2272 * FTP Links::                   Following FTP links.
2273 @end menu
2274
2275 @node Spanning Hosts, Types of Files, Following Links, Following Links
2276 @section Spanning Hosts
2277 @cindex spanning hosts
2278 @cindex hosts, spanning
2279
2280 Wget's recursive retrieval normally refuses to visit hosts different
2281 than the one you specified on the command line.  This is a reasonable
2282 default; without it, every retrieval would have the potential to turn
2283 your Wget into a small version of google.
2284
2285 However, visiting different hosts, or @dfn{host spanning,} is sometimes
2286 a useful option.  Maybe the images are served from a different server.
2287 Maybe you're mirroring a site that consists of pages interlinked between
2288 three servers.  Maybe the server has two equivalent names, and the @sc{html}
2289 pages refer to both interchangeably.
2290
2291 @table @asis
2292 @item Span to any host---@samp{-H}
2293
2294 The @samp{-H} option turns on host spanning, thus allowing Wget's
2295 recursive run to visit any host referenced by a link.  Unless sufficient
2296 recursion-limiting criteria are applied depth, these foreign hosts will
2297 typically link to yet more hosts, and so on until Wget ends up sucking
2298 up much more data than you have intended.
2299
2300 @item Limit spanning to certain domains---@samp{-D}
2301
2302 The @samp{-D} option allows you to specify the domains that will be
2303 followed, thus limiting the recursion only to the hosts that belong to
2304 these domains.  Obviously, this makes sense only in conjunction with
2305 @samp{-H}.  A typical example would be downloading the contents of
2306 @samp{www.server.com}, but allowing downloads from
2307 @samp{images.server.com}, etc.:
2308
2309 @example
2310 wget -rH -Dserver.com http://www.server.com/
2311 @end example
2312
2313 You can specify more than one address by separating them with a comma,
2314 e.g. @samp{-Ddomain1.com,domain2.com}.
2315
2316 @item Keep download off certain domains---@samp{--exclude-domains}
2317
2318 If there are domains you want to exclude specifically, you can do it
2319 with @samp{--exclude-domains}, which accepts the same type of arguments
2320 of @samp{-D}, but will @emph{exclude} all the listed domains.  For
2321 example, if you want to download all the hosts from @samp{foo.edu}
2322 domain, with the exception of @samp{sunsite.foo.edu}, you can do it like
2323 this:
2324
2325 @example
2326 wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu \
2327     http://www.foo.edu/
2328 @end example
2329
2330 @end table
2331
2332 @node Types of Files, Directory-Based Limits, Spanning Hosts, Following Links
2333 @section Types of Files
2334 @cindex types of files
2335
2336 When downloading material from the web, you will often want to restrict
2337 the retrieval to only certain file types.  For example, if you are
2338 interested in downloading @sc{gif}s, you will not be overjoyed to get
2339 loads of PostScript documents, and vice versa.
2340
2341 Wget offers two options to deal with this problem.  Each option
2342 description lists a short name, a long name, and the equivalent command
2343 in @file{.wgetrc}.
2344
2345 @cindex accept wildcards
2346 @cindex accept suffixes
2347 @cindex wildcards, accept
2348 @cindex suffixes, accept
2349 @table @samp
2350 @item -A @var{acclist}
2351 @itemx --accept @var{acclist}
2352 @itemx accept = @var{acclist}
2353 @itemx --accept-regex @var{urlregex}
2354 @itemx accept-regex = @var{urlregex}
2355 The argument to @samp{--accept} option is a list of file suffixes or
2356 patterns that Wget will download during recursive retrieval.  A suffix
2357 is the ending part of a file, and consists of ``normal'' letters,
2358 e.g. @samp{gif} or @samp{.jpg}.  A matching pattern contains shell-like
2359 wildcards, e.g. @samp{books*} or @samp{zelazny*196[0-9]*}.
2360
2361 So, specifying @samp{wget -A gif,jpg} will make Wget download only the
2362 files ending with @samp{gif} or @samp{jpg}, i.e. @sc{gif}s and
2363 @sc{jpeg}s.  On the other hand, @samp{wget -A "zelazny*196[0-9]*"} will
2364 download only files beginning with @samp{zelazny} and containing numbers
2365 from 1960 to 1969 anywhere within.  Look up the manual of your shell for
2366 a description of how pattern matching works.
2367
2368 Of course, any number of suffixes and patterns can be combined into a
2369 comma-separated list, and given as an argument to @samp{-A}.
2370
2371 The argument to @samp{--accept-regex} option is a regular expression which
2372 is matched against the complete URL.
2373
2374 @cindex reject wildcards
2375 @cindex reject suffixes
2376 @cindex wildcards, reject
2377 @cindex suffixes, reject
2378 @item -R @var{rejlist}
2379 @itemx --reject @var{rejlist}
2380 @itemx reject = @var{rejlist}
2381 @itemx --reject-regex @var{urlregex}
2382 @itemx reject-regex = @var{urlregex}
2383 The @samp{--reject} option works the same way as @samp{--accept}, only
2384 its logic is the reverse; Wget will download all files @emph{except} the
2385 ones matching the suffixes (or patterns) in the list.
2386
2387 So, if you want to download a whole page except for the cumbersome
2388 @sc{mpeg}s and @sc{.au} files, you can use @samp{wget -R mpg,mpeg,au}.
2389 Analogously, to download all files except the ones beginning with
2390 @samp{bjork}, use @samp{wget -R "bjork*"}.  The quotes are to prevent
2391 expansion by the shell.
2392 @end table
2393
2394 The argument to @samp{--accept-regex} option is a regular expression which
2395 is matched against the complete URL.
2396
2397 @noindent
2398 The @samp{-A} and @samp{-R} options may be combined to achieve even
2399 better fine-tuning of which files to retrieve.  E.g. @samp{wget -A
2400 "*zelazny*" -R .ps} will download all the files having @samp{zelazny} as
2401 a part of their name, but @emph{not} the PostScript files.
2402
2403 Note that these two options do not affect the downloading of @sc{html}
2404 files (as determined by a @samp{.htm} or @samp{.html} filename
2405 prefix). This behavior may not be desirable for all users, and may be
2406 changed for future versions of Wget.
2407
2408 Note, too, that query strings (strings at the end of a URL beginning
2409 with a question mark (@samp{?}) are not included as part of the
2410 filename for accept/reject rules, even though these will actually
2411 contribute to the name chosen for the local file. It is expected that
2412 a future version of Wget will provide an option to allow matching
2413 against query strings.
2414
2415 Finally, it's worth noting that the accept/reject lists are matched
2416 @emph{twice} against downloaded files: once against the URL's filename
2417 portion, to determine if the file should be downloaded in the first
2418 place; then, after it has been accepted and successfully downloaded,
2419 the local file's name is also checked against the accept/reject lists
2420 to see if it should be removed. The rationale was that, since
2421 @samp{.htm} and @samp{.html} files are always downloaded regardless of
2422 accept/reject rules, they should be removed @emph{after} being
2423 downloaded and scanned for links, if they did match the accept/reject
2424 lists. However, this can lead to unexpected results, since the local
2425 filenames can differ from the original URL filenames in the following
2426 ways, all of which can change whether an accept/reject rule matches:
2427
2428 @itemize @bullet
2429 @item
2430 If the local file already exists and @samp{--no-directories} was
2431 specified, a numeric suffix will be appended to the original name.
2432 @item
2433 If @samp{--adjust-extension} was specified, the local filename might have
2434 @samp{.html} appended to it. If Wget is invoked with @samp{-E -A.php},
2435 a filename such as @samp{index.php} will match be accepted, but upon
2436 download will be named @samp{index.php.html}, which no longer matches,
2437 and so the file will be deleted.
2438 @item
2439 Query strings do not contribute to URL matching, but are included in
2440 local filenames, and so @emph{do} contribute to filename matching.
2441 @end itemize
2442
2443 @noindent
2444 This behavior, too, is considered less-than-desirable, and may change
2445 in a future version of Wget.
2446
2447 @node Directory-Based Limits, Relative Links, Types of Files, Following Links
2448 @section Directory-Based Limits
2449 @cindex directories
2450 @cindex directory limits
2451
2452 Regardless of other link-following facilities, it is often useful to
2453 place the restriction of what files to retrieve based on the directories
2454 those files are placed in.  There can be many reasons for this---the
2455 home pages may be organized in a reasonable directory structure; or some
2456 directories may contain useless information, e.g. @file{/cgi-bin} or
2457 @file{/dev} directories.
2458
2459 Wget offers three different options to deal with this requirement.  Each
2460 option description lists a short name, a long name, and the equivalent
2461 command in @file{.wgetrc}.
2462
2463 @cindex directories, include
2464 @cindex include directories
2465 @cindex accept directories
2466 @table @samp
2467 @item -I @var{list}
2468 @itemx --include @var{list}
2469 @itemx include_directories = @var{list}
2470 @samp{-I} option accepts a comma-separated list of directories included
2471 in the retrieval.  Any other directories will simply be ignored.  The
2472 directories are absolute paths.
2473
2474 So, if you wish to download from @samp{http://host/people/bozo/}
2475 following only links to bozo's colleagues in the @file{/people}
2476 directory and the bogus scripts in @file{/cgi-bin}, you can specify:
2477
2478 @example
2479 wget -I /people,/cgi-bin http://host/people/bozo/
2480 @end example
2481
2482 @cindex directories, exclude
2483 @cindex exclude directories
2484 @cindex reject directories
2485 @item -X @var{list}
2486 @itemx --exclude @var{list}
2487 @itemx exclude_directories = @var{list}
2488 @samp{-X} option is exactly the reverse of @samp{-I}---this is a list of
2489 directories @emph{excluded} from the download.  E.g. if you do not want
2490 Wget to download things from @file{/cgi-bin} directory, specify @samp{-X
2491 /cgi-bin} on the command line.
2492
2493 The same as with @samp{-A}/@samp{-R}, these two options can be combined
2494 to get a better fine-tuning of downloading subdirectories.  E.g. if you
2495 want to load all the files from @file{/pub} hierarchy except for
2496 @file{/pub/worthless}, specify @samp{-I/pub -X/pub/worthless}.
2497
2498 @cindex no parent
2499 @item -np
2500 @itemx --no-parent
2501 @itemx no_parent = on
2502 The simplest, and often very useful way of limiting directories is
2503 disallowing retrieval of the links that refer to the hierarchy
2504 @dfn{above} than the beginning directory, i.e. disallowing ascent to the
2505 parent directory/directories.
2506
2507 The @samp{--no-parent} option (short @samp{-np}) is useful in this case.
2508 Using it guarantees that you will never leave the existing hierarchy.
2509 Supposing you issue Wget with:
2510
2511 @example
2512 wget -r --no-parent http://somehost/~luzer/my-archive/
2513 @end example
2514
2515 You may rest assured that none of the references to
2516 @file{/~his-girls-homepage/} or @file{/~luzer/all-my-mpegs/} will be
2517 followed.  Only the archive you are interested in will be downloaded.
2518 Essentially, @samp{--no-parent} is similar to
2519 @samp{-I/~luzer/my-archive}, only it handles redirections in a more
2520 intelligent fashion.
2521
2522 @strong{Note} that, for HTTP (and HTTPS), the trailing slash is very
2523 important to @samp{--no-parent}. HTTP has no concept of a ``directory''---Wget
2524 relies on you to indicate what's a directory and what isn't. In
2525 @samp{http://foo/bar/}, Wget will consider @samp{bar} to be a
2526 directory, while in @samp{http://foo/bar} (no trailing slash),
2527 @samp{bar} will be considered a filename (so @samp{--no-parent} would be
2528 meaningless, as its parent is @samp{/}).
2529 @end table
2530
2531 @node Relative Links, FTP Links, Directory-Based Limits, Following Links
2532 @section Relative Links
2533 @cindex relative links
2534
2535 When @samp{-L} is turned on, only the relative links are ever followed.
2536 Relative links are here defined those that do not refer to the web
2537 server root.  For example, these links are relative:
2538
2539 @example
2540 <a href="foo.gif">
2541 <a href="foo/bar.gif">
2542 <a href="../foo/bar.gif">
2543 @end example
2544
2545 These links are not relative:
2546
2547 @example
2548 <a href="/foo.gif">
2549 <a href="/foo/bar.gif">
2550 <a href="http://www.server.com/foo/bar.gif">
2551 @end example
2552
2553 Using this option guarantees that recursive retrieval will not span
2554 hosts, even without @samp{-H}.  In simple cases it also allows downloads
2555 to ``just work'' without having to convert links.
2556
2557 This option is probably not very useful and might be removed in a future
2558 release.
2559
2560 @node FTP Links,  , Relative Links, Following Links
2561 @section Following FTP Links
2562 @cindex following ftp links
2563
2564 The rules for @sc{ftp} are somewhat specific, as it is necessary for
2565 them to be.  @sc{ftp} links in @sc{html} documents are often included
2566 for purposes of reference, and it is often inconvenient to download them
2567 by default.
2568
2569 To have @sc{ftp} links followed from @sc{html} documents, you need to
2570 specify the @samp{--follow-ftp} option.  Having done that, @sc{ftp}
2571 links will span hosts regardless of @samp{-H} setting.  This is logical,
2572 as @sc{ftp} links rarely point to the same host where the @sc{http}
2573 server resides.  For similar reasons, the @samp{-L} options has no
2574 effect on such downloads.  On the other hand, domain acceptance
2575 (@samp{-D}) and suffix rules (@samp{-A} and @samp{-R}) apply normally.
2576
2577 Also note that followed links to @sc{ftp} directories will not be
2578 retrieved recursively further.
2579
2580 @node Time-Stamping, Startup File, Following Links, Top
2581 @chapter Time-Stamping
2582 @cindex time-stamping
2583 @cindex timestamping
2584 @cindex updating the archives
2585 @cindex incremental updating
2586
2587 One of the most important aspects of mirroring information from the
2588 Internet is updating your archives.
2589
2590 Downloading the whole archive again and again, just to replace a few
2591 changed files is expensive, both in terms of wasted bandwidth and money,
2592 and the time to do the update.  This is why all the mirroring tools
2593 offer the option of incremental updating.
2594
2595 Such an updating mechanism means that the remote server is scanned in
2596 search of @dfn{new} files.  Only those new files will be downloaded in
2597 the place of the old ones.
2598
2599 A file is considered new if one of these two conditions are met:
2600
2601 @enumerate
2602 @item
2603 A file of that name does not already exist locally.
2604
2605 @item
2606 A file of that name does exist, but the remote file was modified more
2607 recently than the local file.
2608 @end enumerate
2609
2610 To implement this, the program needs to be aware of the time of last
2611 modification of both local and remote files.  We call this information the
2612 @dfn{time-stamp} of a file.
2613
2614 The time-stamping in GNU Wget is turned on using @samp{--timestamping}
2615 (@samp{-N}) option, or through @code{timestamping = on} directive in
2616 @file{.wgetrc}.  With this option, for each file it intends to download,
2617 Wget will check whether a local file of the same name exists.  If it
2618 does, and the remote file is not newer, Wget will not download it.
2619
2620 If the local file does not exist, or the sizes of the files do not
2621 match, Wget will download the remote file no matter what the time-stamps
2622 say.
2623
2624 @menu
2625 * Time-Stamping Usage::         
2626 * HTTP Time-Stamping Internals::  
2627 * FTP Time-Stamping Internals::  
2628 @end menu
2629
2630 @node Time-Stamping Usage, HTTP Time-Stamping Internals, Time-Stamping, Time-Stamping
2631 @section Time-Stamping Usage
2632 @cindex time-stamping usage
2633 @cindex usage, time-stamping
2634
2635 The usage of time-stamping is simple.  Say you would like to download a
2636 file so that it keeps its date of modification.
2637
2638 @example
2639 wget -S http://www.gnu.ai.mit.edu/
2640 @end example
2641
2642 A simple @code{ls -l} shows that the time stamp on the local file equals
2643 the state of the @code{Last-Modified} header, as returned by the server.
2644 As you can see, the time-stamping info is preserved locally, even
2645 without @samp{-N} (at least for @sc{http}).
2646
2647 Several days later, you would like Wget to check if the remote file has
2648 changed, and download it if it has.
2649
2650 @example
2651 wget -N http://www.gnu.ai.mit.edu/
2652 @end example
2653
2654 Wget will ask the server for the last-modified date.  If the local file
2655 has the same timestamp as the server, or a newer one, the remote file
2656 will not be re-fetched.  However, if the remote file is more recent,
2657 Wget will proceed to fetch it.
2658
2659 The same goes for @sc{ftp}.  For example:
2660
2661 @example
2662 wget "ftp://ftp.ifi.uio.no/pub/emacs/gnus/*"
2663 @end example
2664
2665 (The quotes around that URL are to prevent the shell from trying to
2666 interpret the @samp{*}.)
2667
2668 After download, a local directory listing will show that the timestamps
2669 match those on the remote server.  Reissuing the command with @samp{-N}
2670 will make Wget re-fetch @emph{only} the files that have been modified
2671 since the last download.
2672
2673 If you wished to mirror the GNU archive every week, you would use a
2674 command like the following, weekly:
2675
2676 @example
2677 wget --timestamping -r ftp://ftp.gnu.org/pub/gnu/
2678 @end example
2679
2680 Note that time-stamping will only work for files for which the server
2681 gives a timestamp.  For @sc{http}, this depends on getting a
2682 @code{Last-Modified} header.  For @sc{ftp}, this depends on getting a
2683 directory listing with dates in a format that Wget can parse
2684 (@pxref{FTP Time-Stamping Internals}).
2685
2686 @node HTTP Time-Stamping Internals, FTP Time-Stamping Internals, Time-Stamping Usage, Time-Stamping
2687 @section HTTP Time-Stamping Internals
2688 @cindex http time-stamping
2689
2690 Time-stamping in @sc{http} is implemented by checking of the
2691 @code{Last-Modified} header.  If you wish to retrieve the file
2692 @file{foo.html} through @sc{http}, Wget will check whether
2693 @file{foo.html} exists locally.  If it doesn't, @file{foo.html} will be
2694 retrieved unconditionally.
2695
2696 If the file does exist locally, Wget will first check its local
2697 time-stamp (similar to the way @code{ls -l} checks it), and then send a
2698 @code{HEAD} request to the remote server, demanding the information on
2699 the remote file.
2700
2701 The @code{Last-Modified} header is examined to find which file was
2702 modified more recently (which makes it ``newer'').  If the remote file
2703 is newer, it will be downloaded; if it is older, Wget will give
2704 up.@footnote{As an additional check, Wget will look at the
2705 @code{Content-Length} header, and compare the sizes; if they are not the
2706 same, the remote file will be downloaded no matter what the time-stamp
2707 says.}
2708
2709 When @samp{--backup-converted} (@samp{-K}) is specified in conjunction
2710 with @samp{-N}, server file @samp{@var{X}} is compared to local file
2711 @samp{@var{X}.orig}, if extant, rather than being compared to local file
2712 @samp{@var{X}}, which will always differ if it's been converted by
2713 @samp{--convert-links} (@samp{-k}).
2714
2715 Arguably, @sc{http} time-stamping should be implemented using the
2716 @code{If-Modified-Since} request.
2717
2718 @node FTP Time-Stamping Internals,  , HTTP Time-Stamping Internals, Time-Stamping
2719 @section FTP Time-Stamping Internals
2720 @cindex ftp time-stamping
2721
2722 In theory, @sc{ftp} time-stamping works much the same as @sc{http}, only
2723 @sc{ftp} has no headers---time-stamps must be ferreted out of directory
2724 listings.
2725
2726 If an @sc{ftp} download is recursive or uses globbing, Wget will use the
2727 @sc{ftp} @code{LIST} command to get a file listing for the directory
2728 containing the desired file(s).  It will try to analyze the listing,
2729 treating it like Unix @code{ls -l} output, extracting the time-stamps.
2730 The rest is exactly the same as for @sc{http}.  Note that when
2731 retrieving individual files from an @sc{ftp} server without using
2732 globbing or recursion, listing files will not be downloaded (and thus
2733 files will not be time-stamped) unless @samp{-N} is specified.
2734
2735 Assumption that every directory listing is a Unix-style listing may
2736 sound extremely constraining, but in practice it is not, as many
2737 non-Unix @sc{ftp} servers use the Unixoid listing format because most
2738 (all?) of the clients understand it.  Bear in mind that @sc{rfc959}
2739 defines no standard way to get a file list, let alone the time-stamps.
2740 We can only hope that a future standard will define this.
2741
2742 Another non-standard solution includes the use of @code{MDTM} command
2743 that is supported by some @sc{ftp} servers (including the popular
2744 @code{wu-ftpd}), which returns the exact time of the specified file.
2745 Wget may support this command in the future.
2746
2747 @node Startup File, Examples, Time-Stamping, Top
2748 @chapter Startup File
2749 @cindex startup file
2750 @cindex wgetrc
2751 @cindex .wgetrc
2752 @cindex startup
2753 @cindex .netrc
2754
2755 Once you know how to change default settings of Wget through command
2756 line arguments, you may wish to make some of those settings permanent.
2757 You can do that in a convenient way by creating the Wget startup
2758 file---@file{.wgetrc}.
2759
2760 Besides @file{.wgetrc} is the ``main'' initialization file, it is
2761 convenient to have a special facility for storing passwords.  Thus Wget
2762 reads and interprets the contents of @file{$HOME/.netrc}, if it finds
2763 it.  You can find @file{.netrc} format in your system manuals.
2764
2765 Wget reads @file{.wgetrc} upon startup, recognizing a limited set of
2766 commands.
2767
2768 @menu
2769 * Wgetrc Location::             Location of various wgetrc files.
2770 * Wgetrc Syntax::               Syntax of wgetrc.
2771 * Wgetrc Commands::             List of available commands.
2772 * Sample Wgetrc::               A wgetrc example.
2773 @end menu
2774
2775 @node Wgetrc Location, Wgetrc Syntax, Startup File, Startup File
2776 @section Wgetrc Location
2777 @cindex wgetrc location
2778 @cindex location of wgetrc
2779
2780 When initializing, Wget will look for a @dfn{global} startup file,
2781 @file{/usr/local/etc/wgetrc} by default (or some prefix other than
2782 @file{/usr/local}, if Wget was not installed there) and read commands
2783 from there, if it exists.
2784
2785 Then it will look for the user's file.  If the environmental variable
2786 @code{WGETRC} is set, Wget will try to load that file.  Failing that, no
2787 further attempts will be made.
2788
2789 If @code{WGETRC} is not set, Wget will try to load @file{$HOME/.wgetrc}.
2790
2791 The fact that user's settings are loaded after the system-wide ones
2792 means that in case of collision user's wgetrc @emph{overrides} the
2793 system-wide wgetrc (in @file{/usr/local/etc/wgetrc} by default).
2794 Fascist admins, away!
2795
2796 @node Wgetrc Syntax, Wgetrc Commands, Wgetrc Location, Startup File
2797 @section Wgetrc Syntax
2798 @cindex wgetrc syntax
2799 @cindex syntax of wgetrc
2800
2801 The syntax of a wgetrc command is simple:
2802
2803 @example
2804 variable = value
2805 @end example
2806
2807 The @dfn{variable} will also be called @dfn{command}.  Valid
2808 @dfn{values} are different for different commands.
2809
2810 The commands are case-insensitive and underscore-insensitive.  Thus
2811 @samp{DIr__PrefiX} is the same as @samp{dirprefix}.  Empty lines, lines
2812 beginning with @samp{#} and lines containing white-space only are
2813 discarded.
2814
2815 Commands that expect a comma-separated list will clear the list on an
2816 empty command.  So, if you wish to reset the rejection list specified in
2817 global @file{wgetrc}, you can do it with:
2818
2819 @example
2820 reject =
2821 @end example
2822
2823 @node Wgetrc Commands, Sample Wgetrc, Wgetrc Syntax, Startup File
2824 @section Wgetrc Commands
2825 @cindex wgetrc commands
2826
2827 The complete set of commands is listed below.  Legal values are listed
2828 after the @samp{=}.  Simple Boolean values can be set or unset using
2829 @samp{on} and @samp{off} or @samp{1} and @samp{0}.
2830
2831 Some commands take pseudo-arbitrary values.  @var{address} values can be
2832 hostnames or dotted-quad IP addresses.  @var{n} can be any positive
2833 integer, or @samp{inf} for infinity, where appropriate.  @var{string}
2834 values can be any non-empty string.
2835
2836 Most of these commands have direct command-line equivalents.  Also, any
2837 wgetrc command can be specified on the command line using the
2838 @samp{--execute} switch (@pxref{Basic Startup Options}.)
2839
2840 @table @asis
2841 @item accept/reject = @var{string}
2842 Same as @samp{-A}/@samp{-R} (@pxref{Types of Files}).
2843
2844 @item add_hostdir = on/off
2845 Enable/disable host-prefixed file names.  @samp{-nH} disables it.
2846
2847 @item ask_password = on/off
2848 Prompt for a password for each connection established. Cannot be specified
2849 when @samp{--password} is being used, because they are mutually
2850 exclusive. Equivalent to @samp{--ask-password}.
2851
2852 @item auth_no_challenge = on/off
2853 If this option is given, Wget will send Basic HTTP authentication
2854 information (plaintext username and password) for all requests. See
2855 @samp{--auth-no-challenge}.
2856
2857 @item background = on/off
2858 Enable/disable going to background---the same as @samp{-b} (which
2859 enables it).
2860
2861 @item backup_converted = on/off
2862 Enable/disable saving pre-converted files with the suffix
2863 @samp{.orig}---the same as @samp{-K} (which enables it).
2864
2865 @c @item backups = @var{number}
2866 @c #### Document me!
2867 @c
2868 @item base = @var{string}
2869 Consider relative @sc{url}s in input files (specified via the
2870 @samp{input} command or the @samp{--input-file}/@samp{-i} option,
2871 together with @samp{force_html} or @samp{--force-html})
2872 as being relative to @var{string}---the same as @samp{--base=@var{string}}.
2873
2874 @item bind_address = @var{address}
2875 Bind to @var{address}, like the @samp{--bind-address=@var{address}}.
2876
2877 @item ca_certificate = @var{file}
2878 Set the certificate authority bundle file to @var{file}.  The same
2879 as @samp{--ca-certificate=@var{file}}.
2880
2881 @item ca_directory = @var{directory}
2882 Set the directory used for certificate authorities.  The same as
2883 @samp{--ca-directory=@var{directory}}.
2884
2885 @item cache = on/off
2886 When set to off, disallow server-caching.  See the @samp{--no-cache}
2887 option.
2888
2889 @item certificate = @var{file}
2890 Set the client certificate file name to @var{file}.  The same as
2891 @samp{--certificate=@var{file}}.
2892
2893 @item certificate_type = @var{string}
2894 Specify the type of the client certificate, legal values being
2895 @samp{PEM} (the default) and @samp{DER} (aka ASN1).  The same as
2896 @samp{--certificate-type=@var{string}}.
2897
2898 @item check_certificate = on/off
2899 If this is set to off, the server certificate is not checked against
2900 the specified client authorities.  The default is ``on''.  The same as
2901 @samp{--check-certificate}.
2902
2903 @item connect_timeout = @var{n}
2904 Set the connect timeout---the same as @samp{--connect-timeout}.
2905
2906 @item content_disposition = on/off
2907 Turn on recognition of the (non-standard) @samp{Content-Disposition}
2908 HTTP header---if set to @samp{on}, the same as @samp{--content-disposition}.
2909
2910 @item trust_server_names = on/off
2911 If set to on, use the last component of a redirection URL for the local
2912 file name.
2913
2914 @item continue = on/off
2915 If set to on, force continuation of preexistent partially retrieved
2916 files.  See @samp{-c} before setting it.
2917
2918 @item convert_links = on/off
2919 Convert non-relative links locally.  The same as @samp{-k}.
2920
2921 @item cookies = on/off
2922 When set to off, disallow cookies.  See the @samp{--cookies} option.
2923
2924 @item cut_dirs = @var{n}
2925 Ignore @var{n} remote directory components.  Equivalent to
2926 @samp{--cut-dirs=@var{n}}.
2927
2928 @item debug = on/off
2929 Debug mode, same as @samp{-d}.
2930
2931 @item default_page = @var{string}
2932 Default page name---the same as @samp{--default-page=@var{string}}.
2933
2934 @item delete_after = on/off
2935 Delete after download---the same as @samp{--delete-after}.
2936
2937 @item dir_prefix = @var{string}
2938 Top of directory tree---the same as @samp{-P @var{string}}.
2939
2940 @item dirstruct = on/off
2941 Turning dirstruct on or off---the same as @samp{-x} or @samp{-nd},
2942 respectively.
2943
2944 @item dns_cache = on/off
2945 Turn DNS caching on/off.  Since DNS caching is on by default, this
2946 option is normally used to turn it off and is equivalent to
2947 @samp{--no-dns-cache}.
2948
2949 @item dns_timeout = @var{n}
2950 Set the DNS timeout---the same as @samp{--dns-timeout}.
2951
2952 @item domains = @var{string}
2953 Same as @samp{-D} (@pxref{Spanning Hosts}).
2954
2955 @item dot_bytes = @var{n}
2956 Specify the number of bytes ``contained'' in a dot, as seen throughout
2957 the retrieval (1024 by default).  You can postfix the value with
2958 @samp{k} or @samp{m}, representing kilobytes and megabytes,
2959 respectively.  With dot settings you can tailor the dot retrieval to
2960 suit your needs, or you can use the predefined @dfn{styles}
2961 (@pxref{Download Options}).
2962
2963 @item dot_spacing = @var{n}
2964 Specify the number of dots in a single cluster (10 by default).
2965
2966 @item dots_in_line = @var{n}
2967 Specify the number of dots that will be printed in each line throughout
2968 the retrieval (50 by default).
2969
2970 @item egd_file = @var{file}
2971 Use @var{string} as the EGD socket file name.  The same as
2972 @samp{--egd-file=@var{file}}.
2973
2974 @item exclude_directories = @var{string}
2975 Specify a comma-separated list of directories you wish to exclude from
2976 download---the same as @samp{-X @var{string}} (@pxref{Directory-Based
2977 Limits}).
2978
2979 @item exclude_domains = @var{string}
2980 Same as @samp{--exclude-domains=@var{string}} (@pxref{Spanning
2981 Hosts}).
2982
2983 @item follow_ftp = on/off
2984 Follow @sc{ftp} links from @sc{html} documents---the same as
2985 @samp{--follow-ftp}.
2986
2987 @item follow_tags = @var{string}
2988 Only follow certain @sc{html} tags when doing a recursive retrieval,
2989 just like @samp{--follow-tags=@var{string}}.
2990
2991 @item force_html = on/off
2992 If set to on, force the input filename to be regarded as an @sc{html}
2993 document---the same as @samp{-F}.
2994
2995 @item ftp_password = @var{string}
2996 Set your @sc{ftp} password to @var{string}.  Without this setting, the
2997 password defaults to @samp{-wget@@}, which is a useful default for
2998 anonymous @sc{ftp} access.
2999
3000 This command used to be named @code{passwd} prior to Wget 1.10.
3001
3002 @item ftp_proxy = @var{string}
3003 Use @var{string} as @sc{ftp} proxy, instead of the one specified in
3004 environment.
3005
3006 @item ftp_user = @var{string}
3007 Set @sc{ftp} user to @var{string}.
3008
3009 This command used to be named @code{login} prior to Wget 1.10.
3010
3011 @item glob = on/off
3012 Turn globbing on/off---the same as @samp{--glob} and @samp{--no-glob}.
3013
3014 @item header = @var{string}
3015 Define a header for HTTP downloads, like using
3016 @samp{--header=@var{string}}.
3017
3018 @item adjust_extension = on/off
3019 Add a @samp{.html} extension to @samp{text/html} or
3020 @samp{application/xhtml+xml} files that lack one, or a @samp{.css}
3021 extension to @samp{text/css} files that lack one, like
3022 @samp{-E}. Previously named @samp{html_extension} (still acceptable,
3023 but deprecated).
3024
3025 @item http_keep_alive = on/off
3026 Turn the keep-alive feature on or off (defaults to on).  Turning it
3027 off is equivalent to @samp{--no-http-keep-alive}.
3028
3029 @item http_password = @var{string}
3030 Set @sc{http} password, equivalent to
3031 @samp{--http-password=@var{string}}.
3032
3033 @item http_proxy = @var{string}
3034 Use @var{string} as @sc{http} proxy, instead of the one specified in
3035 environment.
3036
3037 @item http_user = @var{string}
3038 Set @sc{http} user to @var{string}, equivalent to
3039 @samp{--http-user=@var{string}}.
3040
3041 @item https_proxy = @var{string}
3042 Use @var{string} as @sc{https} proxy, instead of the one specified in
3043 environment.
3044
3045 @item ignore_case = on/off
3046 When set to on, match files and directories case insensitively; the
3047 same as @samp{--ignore-case}.
3048
3049 @item ignore_length = on/off
3050 When set to on, ignore @code{Content-Length} header; the same as
3051 @samp{--ignore-length}.
3052
3053 @item ignore_tags = @var{string}
3054 Ignore certain @sc{html} tags when doing a recursive retrieval, like
3055 @samp{--ignore-tags=@var{string}}.
3056
3057 @item include_directories = @var{string}
3058 Specify a comma-separated list of directories you wish to follow when
3059 downloading---the same as @samp{-I @var{string}}.
3060
3061 @item iri = on/off
3062 When set to on, enable internationalized URI (IRI) support; the same as
3063 @samp{--iri}.
3064
3065 @item inet4_only = on/off
3066 Force connecting to IPv4 addresses, off by default.  You can put this
3067 in the global init file to disable Wget's attempts to resolve and
3068 connect to IPv6 hosts.  Available only if Wget was compiled with IPv6
3069 support.  The same as @samp{--inet4-only} or @samp{-4}.
3070
3071 @item inet6_only = on/off
3072 Force connecting to IPv6 addresses, off by default.  Available only if
3073 Wget was compiled with IPv6 support.  The same as @samp{--inet6-only}
3074 or @samp{-6}.
3075
3076 @item input = @var{file}
3077 Read the @sc{url}s from @var{string}, like @samp{-i @var{file}}.
3078
3079 @item keep_session_cookies = on/off
3080 When specified, causes @samp{save_cookies = on} to also save session
3081 cookies.  See @samp{--keep-session-cookies}.
3082
3083 @item limit_rate = @var{rate}
3084 Limit the download speed to no more than @var{rate} bytes per second.
3085 The same as @samp{--limit-rate=@var{rate}}.
3086
3087 @item load_cookies = @var{file}
3088 Load cookies from @var{file}.  See @samp{--load-cookies @var{file}}.
3089
3090 @item local_encoding = @var{encoding}
3091 Force Wget to use @var{encoding} as the default system encoding. See
3092 @samp{--local-encoding}.
3093
3094 @item logfile = @var{file}
3095 Set logfile to @var{file}, the same as @samp{-o @var{file}}.
3096
3097 @item max_redirect = @var{number}
3098 Specifies the maximum number of redirections to follow for a resource.
3099 See @samp{--max-redirect=@var{number}}.
3100
3101 @item mirror = on/off
3102 Turn mirroring on/off.  The same as @samp{-m}.
3103
3104 @item netrc = on/off
3105 Turn reading netrc on or off.
3106
3107 @item no_clobber = on/off
3108 Same as @samp{-nc}.
3109
3110 @item no_parent = on/off
3111 Disallow retrieving outside the directory hierarchy, like
3112 @samp{--no-parent} (@pxref{Directory-Based Limits}).
3113
3114 @item no_proxy = @var{string}
3115 Use @var{string} as the comma-separated list of domains to avoid in
3116 proxy loading, instead of the one specified in environment.
3117
3118 @item output_document = @var{file}
3119 Set the output filename---the same as @samp{-O @var{file}}.
3120
3121 @item page_requisites = on/off
3122 Download all ancillary documents necessary for a single @sc{html} page to
3123 display properly---the same as @samp{-p}.
3124
3125 @item passive_ftp = on/off
3126 Change setting of passive @sc{ftp}, equivalent to the
3127 @samp{--passive-ftp} option.
3128
3129 @item password = @var{string}
3130 Specify password @var{string} for both @sc{ftp} and @sc{http} file retrieval. 
3131 This command can be overridden using the @samp{ftp_password} and 
3132 @samp{http_password} command for @sc{ftp} and @sc{http} respectively.
3133
3134 @item post_data = @var{string}
3135 Use POST as the method for all HTTP requests and send @var{string} in
3136 the request body.  The same as @samp{--post-data=@var{string}}.
3137
3138 @item post_file = @var{file}
3139 Use POST as the method for all HTTP requests and send the contents of
3140 @var{file} in the request body.  The same as
3141 @samp{--post-file=@var{file}}.
3142
3143 @item prefer_family = none/IPv4/IPv6
3144 When given a choice of several addresses, connect to the addresses
3145 with specified address family first.  The address order returned by
3146 DNS is used without change by default.  The same as @samp{--prefer-family},
3147 which see for a detailed discussion of why this is useful.
3148
3149 @item private_key = @var{file}
3150 Set the private key file to @var{file}.  The same as
3151 @samp{--private-key=@var{file}}.
3152
3153 @item private_key_type = @var{string}
3154 Specify the type of the private key, legal values being @samp{PEM}
3155 (the default) and @samp{DER} (aka ASN1).  The same as
3156 @samp{--private-type=@var{string}}.
3157
3158 @item progress = @var{string}
3159 Set the type of the progress indicator.  Legal types are @samp{dot}
3160 and @samp{bar}.  Equivalent to @samp{--progress=@var{string}}.
3161
3162 @item protocol_directories = on/off
3163 When set, use the protocol name as a directory component of local file
3164 names.  The same as @samp{--protocol-directories}.
3165
3166 @item proxy_password = @var{string}
3167 Set proxy authentication password to @var{string}, like
3168 @samp{--proxy-password=@var{string}}.
3169
3170 @item proxy_user = @var{string}
3171 Set proxy authentication user name to @var{string}, like
3172 @samp{--proxy-user=@var{string}}.
3173
3174 @item quiet = on/off
3175 Quiet mode---the same as @samp{-q}.
3176
3177 @item quota = @var{quota}
3178 Specify the download quota, which is useful to put in the global
3179 @file{wgetrc}.  When download quota is specified, Wget will stop
3180 retrieving after the download sum has become greater than quota.  The
3181 quota can be specified in bytes (default), kbytes @samp{k} appended) or
3182 mbytes (@samp{m} appended).  Thus @samp{quota = 5m} will set the quota
3183 to 5 megabytes.  Note that the user's startup file overrides system
3184 settings.
3185
3186 @item random_file = @var{file}
3187 Use @var{file} as a source of randomness on systems lacking
3188 @file{/dev/random}.
3189
3190 @item random_wait = on/off
3191 Turn random between-request wait times on or off. The same as 
3192 @samp{--random-wait}.
3193
3194 @item read_timeout = @var{n}
3195 Set the read (and write) timeout---the same as
3196 @samp{--read-timeout=@var{n}}.
3197
3198 @item reclevel = @var{n}
3199 Recursion level (depth)---the same as @samp{-l @var{n}}.
3200
3201 @item recursive = on/off
3202 Recursive on/off---the same as @samp{-r}.
3203
3204 @item referer = @var{string}
3205 Set HTTP @samp{Referer:} header just like
3206 @samp{--referer=@var{string}}.  (Note that it was the folks who wrote
3207 the @sc{http} spec who got the spelling of ``referrer'' wrong.)
3208
3209 @item relative_only = on/off
3210 Follow only relative links---the same as @samp{-L} (@pxref{Relative
3211 Links}).
3212
3213 @item remote_encoding = @var{encoding}
3214 Force Wget to use @var{encoding} as the default remote server encoding.
3215 See @samp{--remote-encoding}.
3216
3217 @item remove_listing = on/off
3218 If set to on, remove @sc{ftp} listings downloaded by Wget.  Setting it
3219 to off is the same as @samp{--no-remove-listing}.
3220
3221 @item restrict_file_names = unix/windows
3222 Restrict the file names generated by Wget from URLs.  See
3223 @samp{--restrict-file-names} for a more detailed description.
3224
3225 @item retr_symlinks = on/off
3226 When set to on, retrieve symbolic links as if they were plain files; the
3227 same as @samp{--retr-symlinks}.
3228
3229 @item retry_connrefused = on/off
3230 When set to on, consider ``connection refused'' a transient
3231 error---the same as @samp{--retry-connrefused}.
3232
3233 @item robots = on/off
3234 Specify whether the norobots convention is respected by Wget, ``on'' by
3235 default.  This switch controls both the @file{/robots.txt} and the
3236 @samp{nofollow} aspect of the spec.  @xref{Robot Exclusion}, for more
3237 details about this.  Be sure you know what you are doing before turning
3238 this off.
3239
3240 @item save_cookies = @var{file}
3241 Save cookies to @var{file}.  The same as @samp{--save-cookies
3242 @var{file}}.
3243
3244 @item save_headers = on/off
3245 Same as @samp{--save-headers}.
3246
3247 @item secure_protocol = @var{string}
3248 Choose the secure protocol to be used.  Legal values are @samp{auto}
3249 (the default), @samp{SSLv2}, @samp{SSLv3}, and @samp{TLSv1}.  The same
3250 as @samp{--secure-protocol=@var{string}}.
3251
3252 @item server_response = on/off
3253 Choose whether or not to print the @sc{http} and @sc{ftp} server
3254 responses---the same as @samp{-S}.
3255
3256 @item show_all_dns_entries = on/off
3257 When a DNS name is resolved, show all the IP addresses, not just the first
3258 three.
3259
3260 @item span_hosts = on/off
3261 Same as @samp{-H}.
3262
3263 @item spider = on/off
3264 Same as @samp{--spider}.
3265
3266 @item strict_comments = on/off
3267 Same as @samp{--strict-comments}.
3268
3269 @item timeout = @var{n}
3270 Set all applicable timeout values to @var{n}, the same as @samp{-T
3271 @var{n}}.
3272
3273 @item timestamping = on/off
3274 Turn timestamping on/off.  The same as @samp{-N} (@pxref{Time-Stamping}).
3275
3276 @item use_server_timestamps = on/off
3277 If set to @samp{off}, Wget won't set the local file's timestamp by the
3278 one on the server (same as @samp{--no-use-server-timestamps}).
3279
3280 @item tries = @var{n}
3281 Set number of retries per @sc{url}---the same as @samp{-t @var{n}}.
3282
3283 @item use_proxy = on/off
3284 When set to off, don't use proxy even when proxy-related environment
3285 variables are set.  In that case it is the same as using
3286 @samp{--no-proxy}.
3287
3288 @item user = @var{string}
3289 Specify username @var{string} for both @sc{ftp} and @sc{http} file retrieval. 
3290 This command can be overridden using the @samp{ftp_user} and 
3291 @samp{http_user} command for @sc{ftp} and @sc{http} respectively.
3292
3293 @item user_agent = @var{string}
3294 User agent identification sent to the HTTP Server---the same as
3295 @samp{--user-agent=@var{string}}.
3296
3297 @item verbose = on/off
3298 Turn verbose on/off---the same as @samp{-v}/@samp{-nv}.
3299
3300 @item wait = @var{n}
3301 Wait @var{n} seconds between retrievals---the same as @samp{-w
3302 @var{n}}.
3303
3304 @item wait_retry = @var{n}
3305 Wait up to @var{n} seconds between retries of failed retrievals
3306 only---the same as @samp{--waitretry=@var{n}}.  Note that this is
3307 turned on by default in the global @file{wgetrc}.
3308 @end table
3309
3310 @node Sample Wgetrc,  , Wgetrc Commands, Startup File
3311 @section Sample Wgetrc
3312 @cindex sample wgetrc
3313
3314 This is the sample initialization file, as given in the distribution.
3315 It is divided in two section---one for global usage (suitable for global
3316 startup file), and one for local usage (suitable for
3317 @file{$HOME/.wgetrc}).  Be careful about the things you change.
3318
3319 Note that almost all the lines are commented out.  For a command to have
3320 any effect, you must remove the @samp{#} character at the beginning of
3321 its line.
3322
3323 @example
3324 @include sample.wgetrc.munged_for_texi_inclusion
3325 @end example
3326
3327 @node Examples, Various, Startup File, Top
3328 @chapter Examples
3329 @cindex examples
3330
3331 @c man begin EXAMPLES
3332 The examples are divided into three sections loosely based on their
3333 complexity.
3334
3335 @menu
3336 * Simple Usage::                Simple, basic usage of the program.
3337 * Advanced Usage::              Advanced tips.
3338 * Very Advanced Usage::         The hairy stuff.
3339 @end menu
3340
3341 @node Simple Usage, Advanced Usage, Examples, Examples
3342 @section Simple Usage
3343
3344 @itemize @bullet
3345 @item
3346 Say you want to download a @sc{url}.  Just type:
3347
3348 @example
3349 wget http://fly.srk.fer.hr/
3350 @end example
3351
3352 @item
3353 But what will happen if the connection is slow, and the file is lengthy?
3354 The connection will probably fail before the whole file is retrieved,
3355 more than once.  In this case, Wget will try getting the file until it
3356 either gets the whole of it, or exceeds the default number of retries
3357 (this being 20).  It is easy to change the number of tries to 45, to
3358 insure that the whole file will arrive safely:
3359
3360 @example
3361 wget --tries=45 http://fly.srk.fer.hr/jpg/flyweb.jpg
3362 @end example
3363
3364 @item
3365 Now let's leave Wget to work in the background, and write its progress
3366 to log file @file{log}.  It is tiring to type @samp{--tries}, so we
3367 shall use @samp{-t}.
3368
3369 @example
3370 wget -t 45 -o log http://fly.srk.fer.hr/jpg/flyweb.jpg &
3371 @end example
3372
3373 The ampersand at the end of the line makes sure that Wget works in the
3374 background.  To unlimit the number of retries, use @samp{-t inf}.
3375
3376 @item
3377 The usage of @sc{ftp} is as simple.  Wget will take care of login and
3378 password.
3379
3380 @example
3381 wget ftp://gnjilux.srk.fer.hr/welcome.msg
3382 @end example
3383
3384 @item
3385 If you specify a directory, Wget will retrieve the directory listing,
3386 parse it and convert it to @sc{html}.  Try:
3387
3388 @example
3389 wget ftp://ftp.gnu.org/pub/gnu/
3390 links index.html
3391 @end example
3392 @end itemize
3393
3394 @node Advanced Usage, Very Advanced Usage, Simple Usage, Examples
3395 @section Advanced Usage
3396
3397 @itemize @bullet
3398 @item
3399 You have a file that contains the URLs you want to download?  Use the
3400 @samp{-i} switch:
3401
3402 @example
3403 wget -i @var{file}
3404 @end example
3405
3406 If you specify @samp{-} as file name, the @sc{url}s will be read from
3407 standard input.
3408
3409 @item
3410 Create a five levels deep mirror image of the GNU web site, with the
3411 same directory structure the original has, with only one try per
3412 document, saving the log of the activities to @file{gnulog}:
3413
3414 @example
3415 wget -r http://www.gnu.org/ -o gnulog
3416 @end example
3417
3418 @item
3419 The same as the above, but convert the links in the downloaded files to
3420 point to local files, so you can view the documents off-line:
3421
3422 @example
3423 wget --convert-links -r http://www.gnu.org/ -o gnulog
3424 @end example
3425
3426 @item
3427 Retrieve only one @sc{html} page, but make sure that all the elements needed
3428 for the page to be displayed, such as inline images and external style
3429 sheets, are also downloaded.  Also make sure the downloaded page
3430 references the downloaded links.
3431
3432 @example
3433 wget -p --convert-links http://www.server.com/dir/page.html
3434 @end example
3435
3436 The @sc{html} page will be saved to @file{www.server.com/dir/page.html}, and
3437 the images, stylesheets, etc., somewhere under @file{www.server.com/},
3438 depending on where they were on the remote server.
3439
3440 @item
3441 The same as the above, but without the @file{www.server.com/} directory.
3442 In fact, I don't want to have all those random server directories
3443 anyway---just save @emph{all} those files under a @file{download/}
3444 subdirectory of the current directory.
3445
3446 @example
3447 wget -p --convert-links -nH -nd -Pdownload \
3448      http://www.server.com/dir/page.html
3449 @end example
3450
3451 @item
3452 Retrieve the index.html of @samp{www.lycos.com}, showing the original
3453 server headers:
3454
3455 @example
3456 wget -S http://www.lycos.com/
3457 @end example
3458
3459 @item
3460 Save the server headers with the file, perhaps for post-processing.
3461
3462 @example
3463 wget --save-headers http://www.lycos.com/
3464 more index.html
3465 @end example
3466
3467 @item
3468 Retrieve the first two levels of @samp{wuarchive.wustl.edu}, saving them
3469 to @file{/tmp}.
3470
3471 @example
3472 wget -r -l2 -P/tmp ftp://wuarchive.wustl.edu/
3473 @end example
3474
3475 @item
3476 You want to download all the @sc{gif}s from a directory on an @sc{http}
3477 server.  You tried @samp{wget http://www.server.com/dir/*.gif}, but that
3478 didn't work because @sc{http} retrieval does not support globbing.  In
3479 that case, use:
3480
3481 @example
3482 wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
3483 @end example
3484
3485 More verbose, but the effect is the same.  @samp{-r -l1} means to
3486 retrieve recursively (@pxref{Recursive Download}), with maximum depth
3487 of 1.  @samp{--no-parent} means that references to the parent directory
3488 are ignored (@pxref{Directory-Based Limits}), and @samp{-A.gif} means to
3489 download only the @sc{gif} files.  @samp{-A "*.gif"} would have worked
3490 too.
3491
3492 @item
3493 Suppose you were in the middle of downloading, when Wget was
3494 interrupted.  Now you do not want to clobber the files already present.
3495 It would be:
3496
3497 @example
3498 wget -nc -r http://www.gnu.org/
3499 @end example
3500
3501 @item
3502 If you want to encode your own username and password to @sc{http} or
3503 @sc{ftp}, use the appropriate @sc{url} syntax (@pxref{URL Format}).
3504
3505 @example
3506 wget ftp://hniksic:mypassword@@unix.server.com/.emacs
3507 @end example
3508
3509 Note, however, that this usage is not advisable on multi-user systems
3510 because it reveals your password to anyone who looks at the output of
3511 @code{ps}.
3512
3513 @cindex redirecting output
3514 @item
3515 You would like the output documents to go to standard output instead of
3516 to files?
3517
3518 @example
3519 wget -O - http://jagor.srce.hr/ http://www.srce.hr/
3520 @end example
3521
3522 You can also combine the two options and make pipelines to retrieve the
3523 documents from remote hotlists:
3524
3525 @example
3526 wget -O - http://cool.list.com/ | wget --force-html -i -
3527 @end example
3528 @end itemize
3529
3530 @node Very Advanced Usage,  , Advanced Usage, Examples
3531 @section Very Advanced Usage
3532
3533 @cindex mirroring
3534 @itemize @bullet
3535 @item
3536 If you wish Wget to keep a mirror of a page (or @sc{ftp}
3537 subdirectories), use @samp{--mirror} (@samp{-m}), which is the shorthand
3538 for @samp{-r -l inf -N}.  You can put Wget in the crontab file asking it
3539 to recheck a site each Sunday:
3540
3541 @example
3542 crontab
3543 0 0 * * 0 wget --mirror http://www.gnu.org/ -o /home/me/weeklog
3544 @end example
3545
3546 @item
3547 In addition to the above, you want the links to be converted for local
3548 viewing.  But, after having read this manual, you know that link
3549 conversion doesn't play well with timestamping, so you also want Wget to
3550 back up the original @sc{html} files before the conversion.  Wget invocation
3551 would look like this:
3552
3553 @example
3554 wget --mirror --convert-links --backup-converted  \
3555      http://www.gnu.org/ -o /home/me/weeklog
3556 @end example
3557
3558 @item
3559 But you've also noticed that local viewing doesn't work all that well
3560 when @sc{html} files are saved under extensions other than @samp{.html},
3561 perhaps because they were served as @file{index.cgi}.  So you'd like
3562 Wget to rename all the files served with content-type @samp{text/html}
3563 or @samp{application/xhtml+xml} to @file{@var{name}.html}.
3564
3565 @example
3566 wget --mirror --convert-links --backup-converted \
3567      --html-extension -o /home/me/weeklog        \
3568      http://www.gnu.org/
3569 @end example
3570
3571 Or, with less typing:
3572
3573 @example
3574 wget -m -k -K -E http://www.gnu.org/ -o /home/me/weeklog
3575 @end example
3576 @end itemize
3577 @c man end
3578
3579 @node Various, Appendices, Examples, Top
3580 @chapter Various
3581 @cindex various
3582
3583 This chapter contains all the stuff that could not fit anywhere else.
3584
3585 @menu
3586 * Proxies::                     Support for proxy servers.
3587 * Distribution::                Getting the latest version.
3588 * Web Site::                    GNU Wget's presence on the World Wide Web.
3589 * Mailing Lists::               Wget mailing list for announcements and discussion.
3590 * Internet Relay Chat::         Wget's presence on IRC.
3591 * Reporting Bugs::              How and where to report bugs.
3592 * Portability::                 The systems Wget works on.
3593 * Signals::                     Signal-handling performed by Wget.
3594 @end menu
3595
3596 @node Proxies, Distribution, Various, Various
3597 @section Proxies
3598 @cindex proxies
3599
3600 @dfn{Proxies} are special-purpose @sc{http} servers designed to transfer
3601 data from remote servers to local clients.  One typical use of proxies
3602 is lightening network load for users behind a slow connection.  This is
3603 achieved by channeling all @sc{http} and @sc{ftp} requests through the
3604 proxy which caches the transferred data.  When a cached resource is
3605 requested again, proxy will return the data from cache.  Another use for
3606 proxies is for companies that separate (for security reasons) their
3607 internal networks from the rest of Internet.  In order to obtain
3608 information from the Web, their users connect and retrieve remote data
3609 using an authorized proxy.
3610
3611 @c man begin ENVIRONMENT
3612 Wget supports proxies for both @sc{http} and @sc{ftp} retrievals.  The
3613 standard way to specify proxy location, which Wget recognizes, is using
3614 the following environment variables:
3615
3616 @table @env
3617 @item http_proxy
3618 @itemx https_proxy
3619 If set, the @env{http_proxy} and @env{https_proxy} variables should
3620 contain the @sc{url}s of the proxies for @sc{http} and @sc{https}
3621 connections respectively.
3622
3623 @item ftp_proxy
3624 This variable should contain the @sc{url} of the proxy for @sc{ftp}
3625 connections.  It is quite common that @env{http_proxy} and
3626 @env{ftp_proxy} are set to the same @sc{url}.
3627
3628 @item no_proxy
3629 This variable should contain a comma-separated list of domain extensions
3630 proxy should @emph{not} be used for.  For instance, if the value of
3631 @env{no_proxy} is @samp{.mit.edu}, proxy will not be used to retrieve
3632 documents from MIT.
3633 @end table
3634 @c man end
3635
3636 In addition to the environment variables, proxy location and settings
3637 may be specified from within Wget itself.
3638
3639 @table @samp
3640 @item --no-proxy
3641 @itemx proxy = on/off
3642 This option and the corresponding command may be used to suppress the
3643 use of proxy, even if the appropriate environment variables are set.
3644
3645 @item http_proxy = @var{URL}
3646 @itemx https_proxy = @var{URL}
3647 @itemx ftp_proxy = @var{URL}
3648 @itemx no_proxy = @var{string}
3649 These startup file variables allow you to override the proxy settings
3650 specified by the environment.
3651 @end table
3652
3653 Some proxy servers require authorization to enable you to use them.  The
3654 authorization consists of @dfn{username} and @dfn{password}, which must
3655 be sent by Wget.  As with @sc{http} authorization, several
3656 authentication schemes exist.  For proxy authorization only the
3657 @code{Basic} authentication scheme is currently implemented.
3658
3659 You may specify your username and password either through the proxy
3660 @sc{url} or through the command-line options.  Assuming that the
3661 company's proxy is located at @samp{proxy.company.com} at port 8001, a
3662 proxy @sc{url} location containing authorization data might look like
3663 this:
3664
3665 @example
3666 http://hniksic:mypassword@@proxy.company.com:8001/
3667 @end example
3668
3669 Alternatively, you may use the @samp{proxy-user} and
3670 @samp{proxy-password} options, and the equivalent @file{.wgetrc}
3671 settings @code{proxy_user} and @code{proxy_password} to set the proxy
3672 username and password.
3673
3674 @node Distribution, Web Site, Proxies, Various
3675 @section Distribution
3676 @cindex latest version
3677
3678 Like all GNU utilities, the latest version of Wget can be found at the
3679 master GNU archive site ftp.gnu.org, and its mirrors.  For example,
3680 Wget @value{VERSION} can be found at
3681 @url{ftp://ftp.gnu.org/pub/gnu/wget/wget-@value{VERSION}.tar.gz}
3682
3683 @node Web Site, Mailing Lists, Distribution, Various
3684 @section Web Site
3685 @cindex web site
3686
3687 The official web site for GNU Wget is at
3688 @url{http://www.gnu.org/software/wget/}. However, most useful
3689 information resides at ``The Wget Wgiki'',
3690 @url{http://wget.addictivecode.org/}.
3691
3692 @node Mailing Lists, Internet Relay Chat, Web Site, Various
3693 @section Mailing Lists
3694 @cindex mailing list
3695 @cindex list
3696
3697 @unnumberedsubsec Primary List
3698
3699 The primary mailinglist for discussion, bug-reports, or questions
3700 about GNU Wget is at @email{bug-wget@@gnu.org}. To subscribe, send an
3701 email to @email{bug-wget-join@@gnu.org}, or visit
3702 @url{http://lists.gnu.org/mailman/listinfo/bug-wget}.
3703
3704 You do not need to subscribe to send a message to the list; however,
3705 please note that unsubscribed messages are moderated, and may take a
3706 while before they hit the list---@strong{usually around a day}.  If
3707 you want your message to show up immediately, please subscribe to the
3708 list before posting. Archives for the list may be found at
3709 @url{http://lists.gnu.org/pipermail/bug-wget/}.
3710
3711 An NNTP/Usenettish gateway is also available via
3712 @uref{http://gmane.org/about.php,Gmane}. You can see the Gmane
3713 archives at
3714 @url{http://news.gmane.org/gmane.comp.web.wget.general}. Note that the
3715 Gmane archives conveniently include messages from both the current
3716 list, and the previous one. Messages also show up in the Gmane
3717 archives sooner than they do at @url{lists.gnu.org}.
3718
3719 @unnumberedsubsec Bug Notices List
3720
3721 Additionally, there is the @email{wget-notify@@addictivecode.org} mailing
3722 list. This is a non-discussion list that receives bug report
3723 notifications from the bug-tracker. To subscribe to this list,
3724 send an email to @email{wget-notify-join@@addictivecode.org},
3725 or visit @url{http://addictivecode.org/mailman/listinfo/wget-notify}.
3726
3727 @unnumberedsubsec Obsolete Lists
3728
3729 Previously, the mailing list @email{wget@@sunsite.dk} was used as the
3730 main discussion list, and another list,
3731 @email{wget-patches@@sunsite.dk} was used for submitting and
3732 discussing patches to GNU Wget.
3733
3734 Messages from @email{wget@@sunsite.dk} are archived at
3735 @itemize @tie{}
3736 @item
3737 @url{http://www.mail-archive.com/wget%40sunsite.dk/} and at
3738 @item
3739 @url{http://news.gmane.org/gmane.comp.web.wget.general} (which also
3740 continues to archive the current list, @email{bug-wget@@gnu.org}).
3741 @end itemize
3742
3743 Messages from @email{wget-patches@@sunsite.dk} are archived at
3744 @itemize @tie{}
3745 @item
3746 @url{http://news.gmane.org/gmane.comp.web.wget.patches}.
3747 @end itemize
3748
3749 @node Internet Relay Chat, Reporting Bugs, Mailing Lists, Various
3750 @section Internet Relay Chat
3751 @cindex Internet Relay Chat
3752 @cindex IRC
3753 @cindex #wget
3754
3755 In addition to the mailinglists, we also have a support channel set up
3756 via IRC at @code{irc.freenode.org}, @code{#wget}. Come check it out!
3757
3758 @node Reporting Bugs, Portability, Internet Relay Chat, Various
3759 @section Reporting Bugs
3760 @cindex bugs
3761 @cindex reporting bugs
3762 @cindex bug reports
3763
3764 @c man begin BUGS
3765 You are welcome to submit bug reports via the GNU Wget bug tracker (see
3766 @url{http://wget.addictivecode.org/BugTracker}).
3767
3768 Before actually submitting a bug report, please try to follow a few
3769 simple guidelines.
3770
3771 @enumerate
3772 @item
3773 Please try to ascertain that the behavior you see really is a bug.  If
3774 Wget crashes, it's a bug.  If Wget does not behave as documented,
3775 it's a bug.  If things work strange, but you are not sure about the way
3776 they are supposed to work, it might well be a bug, but you might want to
3777 double-check the documentation and the mailing lists (@pxref{Mailing
3778 Lists}).
3779
3780 @item
3781 Try to repeat the bug in as simple circumstances as possible.  E.g. if
3782 Wget crashes while downloading @samp{wget -rl0 -kKE -t5 --no-proxy
3783 http://yoyodyne.com -o /tmp/log}, you should try to see if the crash is
3784 repeatable, and if will occur with a simpler set of options.  You might
3785 even try to start the download at the page where the crash occurred to
3786 see if that page somehow triggered the crash.
3787
3788 Also, while I will probably be interested to know the contents of your
3789 @file{.wgetrc} file, just dumping it into the debug message is probably
3790 a bad idea.  Instead, you should first try to see if the bug repeats
3791 with @file{.wgetrc} moved out of the way.  Only if it turns out that
3792 @file{.wgetrc} settings affect the bug, mail me the relevant parts of
3793 the file.
3794
3795 @item
3796 Please start Wget with @samp{-d} option and send us the resulting
3797 output (or relevant parts thereof).  If Wget was compiled without
3798 debug support, recompile it---it is @emph{much} easier to trace bugs
3799 with debug support on.
3800
3801 Note: please make sure to remove any potentially sensitive information
3802 from the debug log before sending it to the bug address.  The
3803 @code{-d} won't go out of its way to collect sensitive information,
3804 but the log @emph{will} contain a fairly complete transcript of Wget's
3805 communication with the server, which may include passwords and pieces
3806 of downloaded data.  Since the bug address is publically archived, you
3807 may assume that all bug reports are visible to the public.
3808
3809 @item
3810 If Wget has crashed, try to run it in a debugger, e.g. @code{gdb `which
3811 wget` core} and type @code{where} to get the backtrace.  This may not
3812 work if the system administrator has disabled core files, but it is
3813 safe to try.
3814 @end enumerate
3815 @c man end
3816
3817 @node Portability, Signals, Reporting Bugs, Various
3818 @section Portability
3819 @cindex portability
3820 @cindex operating systems
3821
3822 Like all GNU software, Wget works on the GNU system.  However, since it
3823 uses GNU Autoconf for building and configuring, and mostly avoids using
3824 ``special'' features of any particular Unix, it should compile (and
3825 work) on all common Unix flavors.
3826
3827 Various Wget versions have been compiled and tested under many kinds of
3828 Unix systems, including GNU/Linux, Solaris, SunOS 4.x, Mac OS X, OSF
3829 (aka Digital Unix or Tru64), Ultrix, *BSD, IRIX, AIX, and others.  Some
3830 of those systems are no longer in widespread use and may not be able to
3831 support recent versions of Wget.  If Wget fails to compile on your
3832 system, we would like to know about it.
3833
3834 Thanks to kind contributors, this version of Wget compiles and works
3835 on 32-bit Microsoft Windows platforms.  It has been compiled
3836 successfully using MS Visual C++ 6.0, Watcom, Borland C, and GCC
3837 compilers.  Naturally, it is crippled of some features available on
3838 Unix, but it should work as a substitute for people stuck with
3839 Windows.  Note that Windows-specific portions of Wget are not
3840 guaranteed to be supported in the future, although this has been the
3841 case in practice for many years now.  All questions and problems in
3842 Windows usage should be reported to Wget mailing list at
3843 @email{wget@@sunsite.dk} where the volunteers who maintain the
3844 Windows-related features might look at them.
3845
3846 Support for building on MS-DOS via DJGPP has been contributed by Gisle
3847 Vanem; a port to VMS is maintained by Steven Schweda, and is available
3848 at @url{http://antinode.org/}.
3849
3850 @node Signals,  , Portability, Various
3851 @section Signals
3852 @cindex signal handling
3853 @cindex hangup
3854
3855 Since the purpose of Wget is background work, it catches the hangup
3856 signal (@code{SIGHUP}) and ignores it.  If the output was on standard
3857 output, it will be redirected to a file named @file{wget-log}.
3858 Otherwise, @code{SIGHUP} is ignored.  This is convenient when you wish
3859 to redirect the output of Wget after having started it.
3860
3861 @example
3862 $ wget http://www.gnus.org/dist/gnus.tar.gz &
3863 ...
3864 $ kill -HUP %%
3865 SIGHUP received, redirecting output to `wget-log'.
3866 @end example
3867
3868 Other than that, Wget will not try to interfere with signals in any way.
3869 @kbd{C-c}, @code{kill -TERM} and @code{kill -KILL} should kill it alike.
3870
3871 @node Appendices, Copying this manual, Various, Top
3872 @chapter Appendices
3873
3874 This chapter contains some references I consider useful.
3875
3876 @menu
3877 * Robot Exclusion::             Wget's support for RES.
3878 * Security Considerations::     Security with Wget.
3879 * Contributors::                People who helped.
3880 @end menu
3881
3882 @node Robot Exclusion, Security Considerations, Appendices, Appendices
3883 @section Robot Exclusion
3884 @cindex robot exclusion
3885 @cindex robots.txt
3886 @cindex server maintenance
3887
3888 It is extremely easy to make Wget wander aimlessly around a web site,
3889 sucking all the available data in progress.  @samp{wget -r @var{site}},
3890 and you're set.  Great?  Not for the server admin.
3891
3892 As long as Wget is only retrieving static pages, and doing it at a
3893 reasonable rate (see the @samp{--wait} option), there's not much of a
3894 problem.  The trouble is that Wget can't tell the difference between the
3895 smallest static page and the most demanding CGI.  A site I know has a
3896 section handled by a CGI Perl script that converts Info files to @sc{html} on
3897 the fly.  The script is slow, but works well enough for human users
3898 viewing an occasional Info file.  However, when someone's recursive Wget
3899 download stumbles upon the index page that links to all the Info files
3900 through the script, the system is brought to its knees without providing
3901 anything useful to the user (This task of converting Info files could be
3902 done locally and access to Info documentation for all installed GNU
3903 software on a system is available from the @code{info} command).
3904
3905 To avoid this kind of accident, as well as to preserve privacy for
3906 documents that need to be protected from well-behaved robots, the
3907 concept of @dfn{robot exclusion} was invented.  The idea is that
3908 the server administrators and document authors can specify which
3909 portions of the site they wish to protect from robots and those
3910 they will permit access.
3911
3912 The most popular mechanism, and the @i{de facto} standard supported by
3913 all the major robots, is the ``Robots Exclusion Standard'' (RES) written
3914 by Martijn Koster et al. in 1994.  It specifies the format of a text
3915 file containing directives that instruct the robots which URL paths to
3916 avoid.  To be found by the robots, the specifications must be placed in
3917 @file{/robots.txt} in the server root, which the robots are expected to
3918 download and parse.
3919
3920 Although Wget is not a web robot in the strictest sense of the word, it
3921 can download large parts of the site without the user's intervention to
3922 download an individual page.  Because of that, Wget honors RES when
3923 downloading recursively.  For instance, when you issue:
3924
3925 @example
3926 wget -r http://www.server.com/
3927 @end example
3928
3929 First the index of @samp{www.server.com} will be downloaded.  If Wget
3930 finds that it wants to download more documents from that server, it will
3931 request @samp{http://www.server.com/robots.txt} and, if found, use it
3932 for further downloads.  @file{robots.txt} is loaded only once per each
3933 server.
3934
3935 Until version 1.8, Wget supported the first version of the standard,
3936 written by Martijn Koster in 1994 and available at
3937 @url{http://www.robotstxt.org/wc/norobots.html}.  As of version 1.8,
3938 Wget has supported the additional directives specified in the internet
3939 draft @samp{<draft-koster-robots-00.txt>} titled ``A Method for Web
3940 Robots Control''.  The draft, which has as far as I know never made to
3941 an @sc{rfc}, is available at
3942 @url{http://www.robotstxt.org/wc/norobots-rfc.txt}.
3943
3944 This manual no longer includes the text of the Robot Exclusion Standard.
3945
3946 The second, less known mechanism, enables the author of an individual
3947 document to specify whether they want the links from the file to be
3948 followed by a robot.  This is achieved using the @code{META} tag, like
3949 this:
3950
3951 @example
3952 <meta name="robots" content="nofollow">
3953 @end example
3954
3955 This is explained in some detail at
3956 @url{http://www.robotstxt.org/wc/meta-user.html}.  Wget supports this
3957 method of robot exclusion in addition to the usual @file{/robots.txt}
3958 exclusion.
3959
3960 If you know what you are doing and really really wish to turn off the
3961 robot exclusion, set the @code{robots} variable to @samp{off} in your
3962 @file{.wgetrc}.  You can achieve the same effect from the command line
3963 using the @code{-e} switch, e.g. @samp{wget -e robots=off @var{url}...}.
3964
3965 @node Security Considerations, Contributors, Robot Exclusion, Appendices
3966 @section Security Considerations
3967 @cindex security
3968
3969 When using Wget, you must be aware that it sends unencrypted passwords
3970 through the network, which may present a security problem.  Here are the
3971 main issues, and some solutions.
3972
3973 @enumerate
3974 @item
3975 The passwords on the command line are visible using @code{ps}.  The best
3976 way around it is to use @code{wget -i -} and feed the @sc{url}s to
3977 Wget's standard input, each on a separate line, terminated by @kbd{C-d}.
3978 Another workaround is to use @file{.netrc} to store passwords; however,
3979 storing unencrypted passwords is also considered a security risk.
3980
3981 @item
3982 Using the insecure @dfn{basic} authentication scheme, unencrypted
3983 passwords are transmitted through the network routers and gateways.
3984
3985 @item
3986 The @sc{ftp} passwords are also in no way encrypted.  There is no good
3987 solution for this at the moment.
3988
3989 @item
3990 Although the ``normal'' output of Wget tries to hide the passwords,
3991 debugging logs show them, in all forms.  This problem is avoided by
3992 being careful when you send debug logs (yes, even when you send them to
3993 me).
3994 @end enumerate
3995
3996 @node Contributors,  , Security Considerations, Appendices
3997 @section Contributors
3998 @cindex contributors
3999
4000 @iftex
4001 GNU Wget was written by Hrvoje Nik@v{s}i@'{c} @email{hniksic@@xemacs.org},
4002 @end iftex
4003 @ifnottex
4004 GNU Wget was written by Hrvoje Niksic @email{hniksic@@xemacs.org}.
4005 @end ifnottex
4006
4007 However, the development of Wget could never have gone as far as it has, were
4008 it not for the help of many people, either with bug reports, feature proposals,
4009 patches, or letters saying ``Thanks!''.
4010
4011 Special thanks goes to the following people (no particular order):
4012
4013 @itemize @bullet
4014 @item Dan Harkless---contributed a lot of code and documentation of
4015 extremely high quality, as well as the @code{--page-requisites} and
4016 related options.  He was the principal maintainer for some time and
4017 released Wget 1.6.
4018
4019 @item Ian Abbott---contributed bug fixes, Windows-related fixes, and
4020 provided a prototype implementation of the breadth-first recursive
4021 download.  Co-maintained Wget during the 1.8 release cycle.
4022
4023 @item
4024 The dotsrc.org crew, in particular Karsten Thygesen---donated system
4025 resources such as the mailing list, web space, @sc{ftp} space, and
4026 version control repositories, along with a lot of time to make these
4027 actually work.  Christian Reiniger was of invaluable help with setting
4028 up Subversion.
4029
4030 @item
4031 Heiko Herold---provided high-quality Windows builds and contributed
4032 bug and build reports for many years.
4033
4034 @item
4035 Shawn McHorse---bug reports and patches.
4036
4037 @item
4038 Kaveh R. Ghazi---on-the-fly @code{ansi2knr}-ization.  Lots of
4039 portability fixes.
4040
4041 @item
4042 Gordon Matzigkeit---@file{.netrc} support.
4043
4044 @item
4045 @iftex
4046 Zlatko @v{C}alu@v{s}i@'{c}, Tomislav Vujec and Dra@v{z}en
4047 Ka@v{c}ar---feature suggestions and ``philosophical'' discussions.
4048 @end iftex
4049 @ifnottex
4050 Zlatko Calusic, Tomislav Vujec and Drazen Kacar---feature suggestions
4051 and ``philosophical'' discussions.
4052 @end ifnottex
4053
4054 @item
4055 Darko Budor---initial port to Windows.
4056
4057 @item
4058 Antonio Rosella---help and suggestions, plus the initial Italian
4059 translation.
4060
4061 @item
4062 @iftex
4063 Tomislav Petrovi@'{c}, Mario Miko@v{c}evi@'{c}---many bug reports and
4064 suggestions.
4065 @end iftex
4066 @ifnottex
4067 Tomislav Petrovic, Mario Mikocevic---many bug reports and suggestions.
4068 @end ifnottex
4069
4070 @item
4071 @iftex
4072 Fran@,{c}ois Pinard---many thorough bug reports and discussions.
4073 @end iftex
4074 @ifnottex
4075 Francois Pinard---many thorough bug reports and discussions.
4076 @end ifnottex
4077
4078 @item
4079 Karl Eichwalder---lots of help with internationalization, Makefile
4080 layout and many other things.
4081
4082 @item
4083 Junio Hamano---donated support for Opie and @sc{http} @code{Digest}
4084 authentication.
4085
4086 @item
4087 Mauro Tortonesi---improved IPv6 support, adding support for dual
4088 family systems.  Refactored and enhanced FTP IPv6 code. Maintained GNU
4089 Wget from 2004--2007.
4090
4091 @item
4092 Christopher G.@: Lewis---maintenance of the Windows version of GNU WGet.
4093
4094 @item
4095 Gisle Vanem---many helpful patches and improvements, especially for
4096 Windows and MS-DOS support.
4097
4098 @item
4099 Ralf Wildenhues---contributed patches to convert Wget to use Automake as
4100 part of its build process, and various bugfixes.
4101
4102 @item
4103 Steven Schubiger---Many helpful patches, bugfixes and improvements.
4104 Notably, conversion of Wget to use the Gnulib quotes and quoteargs
4105 modules, and the addition of password prompts at the console, via the
4106 Gnulib getpasswd-gnu module.
4107
4108 @item
4109 Ted Mielczarek---donated support for CSS.
4110
4111 @item
4112 Saint Xavier---Support for IRIs (RFC 3987).
4113
4114 @item
4115 People who provided donations for development---including Brian Gough.
4116 @end itemize
4117
4118 The following people have provided patches, bug/build reports, useful
4119 suggestions, beta testing services, fan mail and all the other things
4120 that make maintenance so much fun:
4121
4122 Tim Adam,
4123 Adrian Aichner,
4124 Martin Baehr,
4125 Dieter Baron,
4126 Roger Beeman,
4127 Dan Berger,
4128 T.@: Bharath,
4129 Christian Biere,
4130 Paul Bludov,
4131 Daniel Bodea,
4132 Mark Boyns,
4133 John Burden,
4134 Julien Buty,
4135 Wanderlei Cavassin,
4136 Gilles Cedoc,
4137 Tim Charron,
4138 Noel Cragg,
4139 @iftex
4140 Kristijan @v{C}onka@v{s},
4141 @end iftex
4142 @ifnottex
4143 Kristijan Conkas,
4144 @end ifnottex
4145 John Daily,
4146 Andreas Damm,
4147 Ahmon Dancy,
4148 Andrew Davison,
4149 Bertrand Demiddelaer,
4150 Alexander Dergachev,
4151 Andrew Deryabin,
4152 Ulrich Drepper,
4153 Marc Duponcheel,
4154 @iftex
4155 Damir D@v{z}eko,
4156 @end iftex
4157 @ifnottex
4158 Damir Dzeko,
4159 @end ifnottex
4160 Alan Eldridge,
4161 Hans-Andreas Engel,
4162 @iftex
4163 Aleksandar Erkalovi@'{c},
4164 @end iftex
4165 @ifnottex
4166 Aleksandar Erkalovic,
4167 @end ifnottex
4168 Andy Eskilsson,
4169 @iftex
4170 Jo@~{a}o Ferreira,
4171 @end iftex
4172 @ifnottex
4173 Joao Ferreira,
4174 @end ifnottex
4175 Christian Fraenkel,
4176 David Fritz,
4177 Mike Frysinger,
4178 Charles C.@: Fu,
4179 FUJISHIMA Satsuki,
4180 Masashi Fujita,
4181 Howard Gayle,
4182 Marcel Gerrits,
4183 Lemble Gregory,
4184 Hans Grobler,
4185 Alain Guibert,
4186 Mathieu Guillaume,
4187 Aaron Hawley,
4188 Jochen Hein,
4189 Karl Heuer,
4190 Madhusudan Hosaagrahara,
4191 HIROSE Masaaki,
4192 Ulf Harnhammar,
4193 Gregor Hoffleit,
4194 Erik Magnus Hulthen,
4195 Richard Huveneers,
4196 Jonas Jensen,
4197 Larry Jones,
4198 Simon Josefsson,
4199 @iftex
4200 Mario Juri@'{c},
4201 @end iftex
4202 @ifnottex
4203 Mario Juric,
4204 @end ifnottex
4205 @iftex
4206 Hack Kampbj@o rn,
4207 @end iftex
4208 @ifnottex
4209 Hack Kampbjorn,
4210 @end ifnottex
4211 Const Kaplinsky,
4212 @iftex
4213 Goran Kezunovi@'{c},
4214 @end iftex
4215 @ifnottex
4216 Goran Kezunovic,
4217 @end ifnottex
4218 Igor Khristophorov,
4219 Robert Kleine,
4220 KOJIMA Haime,
4221 Fila Kolodny,
4222 Alexander Kourakos,
4223 Martin Kraemer,
4224 Sami Krank,
4225 Jay Krell,
4226 @tex
4227 $\Sigma\acute{\iota}\mu o\varsigma\;
4228 \Xi\varepsilon\nu\iota\tau\acute{\epsilon}\lambda\lambda\eta\varsigma$
4229 (Simos KSenitellis),
4230 @end tex
4231 @ifnottex
4232 Simos KSenitellis,
4233 @end ifnottex
4234 Christian Lackas,
4235 Hrvoje Lacko,
4236 Daniel S.@: Lewart,
4237 @iftex
4238 Nicol@'{a}s Lichtmeier,
4239 @end iftex
4240 @ifnottex
4241 Nicolas Lichtmeier,
4242 @end ifnottex
4243 Dave Love,
4244 Alexander V.@: Lukyanov,
4245 @iftex
4246 Thomas Lu@ss{}nig,
4247 @end iftex
4248 @ifnottex
4249 Thomas Lussnig,
4250 @end ifnottex
4251 Andre Majorel,
4252 Aurelien Marchand,
4253 Matthew J.@: Mellon,
4254 Jordan Mendelson,
4255 Ted Mielczarek,
4256 Robert Millan,
4257 Lin Zhe Min,
4258 Jan Minar,
4259 Tim Mooney,
4260 Keith Moore,
4261 Adam D.@: Moss,
4262 Simon Munton,
4263 Charlie Negyesi,
4264 R.@: K.@: Owen,
4265 Jim Paris,
4266 Kenny Parnell,
4267 Leonid Petrov,
4268 Simone Piunno,
4269 Andrew Pollock,
4270 Steve Pothier,
4271 @iftex
4272 Jan P@v{r}ikryl,
4273 @end iftex
4274 @ifnottex
4275 Jan Prikryl,
4276 @end ifnottex
4277 Marin Purgar,
4278 @iftex
4279 Csaba R@'{a}duly,
4280 @end iftex
4281 @ifnottex
4282 Csaba Raduly,
4283 @end ifnottex
4284 Keith Refson,
4285 Bill Richardson,
4286 Tyler Riddle,
4287 Tobias Ringstrom,
4288 Jochen Roderburg,
4289 @c Texinfo doesn't grok @'{@i}, so we have to use TeX itself.
4290 @tex
4291 Juan Jos\'{e} Rodr\'{\i}guez,
4292 @end tex
4293 @ifnottex
4294 Juan Jose Rodriguez,
4295 @end ifnottex
4296 Maciej W.@: Rozycki,
4297 Edward J.@: Sabol,
4298 Heinz Salzmann,
4299 Robert Schmidt,
4300 Nicolas Schodet,
4301 Benno Schulenberg,
4302 Andreas Schwab,
4303 Steven M.@: Schweda,
4304 Chris Seawood,
4305 Pranab Shenoy,
4306 Dennis Smit,
4307 Toomas Soome,
4308 Tage Stabell-Kulo,
4309 Philip Stadermann,
4310 Daniel Stenberg,
4311 Sven Sternberger,
4312 Markus Strasser,
4313 John Summerfield,
4314 Szakacsits Szabolcs,
4315 Mike Thomas,
4316 Philipp Thomas,
4317 Mauro Tortonesi,
4318 Dave Turner,
4319 Gisle Vanem,
4320 Rabin Vincent,
4321 Russell Vincent,
4322 @iftex
4323 @v{Z}eljko Vrba,
4324 @end iftex
4325 @ifnottex
4326 Zeljko Vrba,
4327 @end ifnottex
4328 Charles G Waldman,
4329 Douglas E.@: Wegscheid,
4330 Ralf Wildenhues,
4331 Joshua David Williams,
4332 Benjamin Wolsey,
4333 Saint Xavier,
4334 YAMAZAKI Makoto,
4335 Jasmin Zainul,
4336 @iftex
4337 Bojan @v{Z}drnja,
4338 @end iftex
4339 @ifnottex
4340 Bojan Zdrnja,
4341 @end ifnottex
4342 Kristijan Zimmer,
4343 Xin Zou.
4344
4345 Apologies to all who I accidentally left out, and many thanks to all the
4346 subscribers of the Wget mailing list.
4347
4348 @node Copying this manual, Concept Index, Appendices, Top
4349 @appendix Copying this manual
4350   
4351 @menu
4352 * GNU Free Documentation License::  Licnse for copying this manual.
4353 @end menu
4354
4355 @node GNU Free Documentation License,  , Copying this manual, Copying this manual
4356 @appendixsec GNU Free Documentation License
4357 @cindex FDL, GNU Free Documentation License
4358
4359 @include fdl.texi
4360
4361
4362 @node Concept Index,  , Copying this manual, Top
4363 @unnumbered Concept Index
4364 @printindex cp
4365
4366 @contents
4367
4368 @bye