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
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.