Webserver Dateien auf Kommadozeile mit wget holen

Frage :

Mit welchem  Tool ist es möglich komplette HTTP-Requests von der Kommandozeile unter Windows zu generieren und absetzen ?

Antwort:

wget, cURL, netcat (sortiert von einfach nach mächtig) wären die Kandidaten. Hier zuerst die Infos zu wget.

 

Einzelne Dateien mit wget downloaden

(wget downloaden)

Hier ist ein Batch, der die Anwendung von wget veranschaulicht.  Es sollen 4 Bilder testweise geladen werden.

Parameter –no-check-certificate : Die Kommunikation läuft per HTTPS und daher ist es sinnvoll das Zerifikat nicht zu prüfen.

 

@ECHO OFF
set P=1
:start

date /t 
echo %date% %time% >> ok.txt


wget https://media101.zgt.de/content/TSHOP/DI/MH/HM/D713643909556.JPG --no-check-certificate

wget https://media101.zgt.de/content/TSHOP/JD/UG/BJ/D713641510088.JPG --no-check-certificate

wget https://media101.zgt.de/content/TSHOP/ZL/OU/AM/D713644710254.JPG --no-check-certificate

wget https://media101.zgt.de/content/TSHOP/PU/RJ/RJ/D713652501422.JPG --no-check-certificate


if exist D713643909556.JPG echo 1 OK >> ok.txt
if exist D713641510088.JPG echo 2 OK >> ok.txt
if exist D713644710254.JPG echo 3 OK >> ok.txt
if exist D713652501422.JPG echo 4 OK >> ok.txt

if not exist D713643909556.JPG echo %date% %time% %P% Bild 1 >> ../fehler.txt
if not exist D713641510088.JPG echo %date% %time% %P% Bild 2 >> ../fehler.txt
if not exist D713644710254.JPG echo %date% %time% %P% Bild 3 >> ../fehler.txt
if not exist D713652501422.JPG echo %date% %time% %P% Bild 4 >> ../fehler.txt


del D713643909556.JPG 
del D713641510088.JPG 
del D713644710254.JPG 
del D713652501422.JPG 

goto start:

Komplette Webseiten mit wget downloaden

Manchmal ist es auch sinnvoll nicht nur einzelne Dateien sondern komplette Seiten zu Testzwecken downloaden. Hier ein Beispiel :

#
#
wget -d -o log.txt -r -l2 https://www.thueringen-kiosk.de --no-check-certificate --span-hosts
#
#

Hier die Erklärung der Parameter :

-d
der DEBUG Mode wird eingeschaltet und liefert geniale Informationen

-o log.txt
Das Logfile wird in log.txt geschrieben

-r
rekursiv:
Diese Option erlaubt das rekursive Herunterladen. Dies ist eigentlich die interessanteste Option, da diese notwendig ist, wenn man mehr als nur die Indexdatei herunterladen will, was ja in den meisten Fällen Sinn macht. Die Option wird meistens zusammen mit der Option ‚-l‘ verwendet. Beim rekursiven Download von Webseiten folgt wget allen Links, die in einer HTML-Datei angegeben sind, bzw. es werden auch Dateien wie Bilder heruntergeladen, die für die Darstellung der Webseite relevant sind.

-l1
Mit der Option ‚-l‘ gibt man an, wie tief der rekursive Download verzweigen darf. Wenn wget einem einem Link zu einer weiteren Webseite folgt, dann kann es passieren, daß diese zweite Webseite wieder einen Link zu einer weiteren Internetseite enthält. In diesem Fall würde wget ebenfalls diesem Link folgen. Wenn man dies weiterspinnt, dann könnte wget so rein theoretisch den Inhalt des gesamten Internets herunterladen. Um dies zu vermeiden, gibt es die Option ‚-i‘, welche die Tiefe der Rekursion angibt. Als Standard ist „5“ vorgesehen. Will man zum Beispiel nur eine einzige Webseite mit dazugehörigen Dateien herunterladen, so ist eine Rekursionstiefe von 1 sinnvoll. Gibt man 0 als Rekursionstiefe an, so gibt es keine Beschränkung, und man hat, wenn man genug Festplattenplatz zur Verfügung hat, den gesamten Inhalt des Internets geladen.

Quelle : http://www.pro-linux.de/artikel/2/624/webseiten-herunterladen-mit-gnu-wget.html

–no-check-certificate
Die Zertifikate nicht prüfen
–span-hosts
Diese Option macht das Laden von Inhalten möglich, die sich auf einem anderen Server befinden. Die Seite soll z.B von www.meineseite.de geladen werden, enthält jedoch Bilder von www.meinebilder.de.

Hier sind die Optionen des wget Tools :

c:\test\wget --help
GNU Wget 1.11.4, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...

Mandatory arguments to long options are mandatory for short options too.

Startup:
  -V,  --version           display the version of Wget and exit.
  -h,  --help              print this help.
  -b,  --background        go to background after startup.
  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.

Logging and input file:
  -o,  --output-file=FILE    log messages to FILE.
  -a,  --append-output=FILE  append messages to FILE.
  -d,  --debug               print lots of debugging information.
  -q,  --quiet               quiet (no output).
  -v,  --verbose             be verbose (this is the default).
  -nv, --no-verbose          turn off verboseness, without being quiet.
  -i,  --input-file=FILE     download URLs found in FILE.
  -F,  --force-html          treat input file as HTML.
  -B,  --base=URL            prepends URL to relative links in -F -i file.

Download:
  -t,  --tries=NUMBER            set number of retries to NUMBER (0 unlimits).
       --retry-connrefused       retry even if connection is refused.
  -O,  --output-document=FILE    write documents to FILE.
  -nc, --no-clobber              skip downloads that would download to
                                 existing files.
  -c,  --continue                resume getting a partially-downloaded file.
       --progress=TYPE           select progress gauge type.
  -N,  --timestamping            don't re-retrieve files unless newer than
                                 local.
  -S,  --server-response         print server response.
       --spider                  don't download anything.
  -T,  --timeout=SECONDS         set all timeout values to SECONDS.
       --dns-timeout=SECS        set the DNS lookup timeout to SECS.
       --connect-timeout=SECS    set the connect timeout to SECS.
       --read-timeout=SECS       set the read timeout to SECS.
  -w,  --wait=SECONDS            wait SECONDS between retrievals.
       --waitretry=SECONDS       wait 1..SECONDS between retries of a retrieval.

       --random-wait             wait from 0...2*WAIT secs between retrievals.
       --no-proxy                explicitly turn off proxy.
  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.
       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local host.

       --limit-rate=RATE         limit download rate to RATE.
       --no-dns-cache            disable caching DNS lookups.
       --restrict-file-names=OS  restrict chars in file names to ones OS allows.

       --ignore-case             ignore case when matching files/directories.
       --user=USER               set both ftp and http user to USER.
       --password=PASS           set both ftp and http password to PASS.

Directories:
  -nd, --no-directories           don't create directories.
  -x,  --force-directories        force creation of directories.
  -nH, --no-host-directories      don't create host directories.
       --protocol-directories     use protocol name in directories.
  -P,  --directory-prefix=PREFIX  save files to PREFIX/...
       --cut-dirs=NUMBER          ignore NUMBER remote directory components.

HTTP options:
       --http-user=USER        set http user to USER.
       --http-password=PASS    set http password to PASS.
       --no-cache              disallow server-cached data.
  -E,  --html-extension        save HTML documents with `.html' extension.
       --ignore-length         ignore `Content-Length' header field.
       --header=STRING         insert STRING among the headers.
       --max-redirect          maximum redirections allowed per page.
       --proxy-user=USER       set USER as proxy username.
       --proxy-password=PASS   set PASS as proxy password.
       --referer=URL           include `Referer: URL' header in HTTP request.
       --save-headers          save the HTTP headers to file.
  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.
       --no-http-keep-alive    disable HTTP keep-alive (persistent connections).

       --no-cookies            don't use cookies.
       --load-cookies=FILE     load cookies from FILE before session.
       --save-cookies=FILE     save cookies to FILE after session.
       --keep-session-cookies  load and save session (non-permanent) cookies.
       --post-data=STRING      use the POST method; send STRING as the data.
       --post-file=FILE        use the POST method; send contents of FILE.
       --content-disposition   honor the Content-Disposition header when
                               choosing local file names (EXPERIMENTAL).
       --auth-no-challenge     Send Basic HTTP authentication information
                               without first waiting for the server's
                               challenge.

HTTPS (SSL/TLS) options:
       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,
                                SSLv3, and TLSv1.
       --no-check-certificate   don't validate the server's certificate.
       --certificate=FILE       client certificate file.
       --certificate-type=TYPE  client certificate type, PEM or DER.
       --private-key=FILE       private key file.
       --private-key-type=TYPE  private key type, PEM or DER.
       --ca-certificate=FILE    file with the bundle of CA's.
       --ca-directory=DIR       directory where hash list of CA's is stored.
       --random-file=FILE       file with random data for seeding the SSL PRNG.
       --egd-file=FILE          file naming the EGD socket with random data.

FTP options:
       --ftp-user=USER         set ftp user to USER.
       --ftp-password=PASS     set ftp password to PASS.
       --no-remove-listing     don't remove `.listing' files.
       --no-glob               turn off FTP file name globbing.
       --no-passive-ftp        disable the "passive" transfer mode.
       --retr-symlinks         when recursing, get linked-to files (not dir).
       --preserve-permissions  preserve remote file permissions.

Recursive download:
  -r,  --recursive          specify recursive download.
  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for infinite).
       --delete-after       delete files locally after downloading them.
  -k,  --convert-links      make links in downloaded HTML point to local files.
  -K,  --backup-converted   before converting file X, back up as X.orig.
  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.
  -p,  --page-requisites    get all images, etc. needed to display HTML page.
       --strict-comments    turn on strict (SGML) handling of HTML comments.

Recursive accept/reject:
  -A,  --accept=LIST               comma-separated list of accepted extensions.
  -R,  --reject=LIST               comma-separated list of rejected extensions.
  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-ftp                follow FTP links from HTML documents.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -H,  --span-hosts                go to foreign hosts when recursive.
  -L,  --relative                  follow relative links only.
  -I,  --include-directories=LIST  list of allowed directories.
  -X,  --exclude-directories=LIST  list of excluded directories.
  -np, --no-parent                 don't ascend to the parent directory.

Mail bug reports and suggestions to .

Hinweise : http://users.ugent.be/~bpuype/wget/

http://wget.addictivecode.org/FrequentlyAskedQuestions

FAQ zur Nutzung und den Fehlermeldungen von wget

Wget hört auf Anweisungen, die sich aus der Dateie robots.txt file und den no-follow Attributes ergeben.
Wenn die –debug Ausgabe so etwas
If Wget’s –debug output says something like

Rejecting path content/TSHOP/DI/MH/HM/D713643909556.JPG because of rule `'.
Not following https://media101.zgt.de/D713643909556.JPG because robots.txt forbids it.
Decided NOT to load it.

oder so etwas

no-follow in index.html

zeigen sollte, dann sind die Anweisungen aus der „robots.txt“ oder dem „no-follow“ Attribut schuld.
Um diese Anweisungen zu ignorieren, benutze diese Parameter:

#
wget -e robots=off --wait 1 http://your.site.here
#

Die Option –wait 1 geht etwas sparsamer mit den Ressourcen des Servers um und sollte immer genutzt werden.

Hier ist der Output, wenn man die Loggingfunktion nutzt. Sie bietet eine klare Bestätigung der Paramater.