it-swarm.com.de

wget: folge keinen Weiterleitungen

Wie verhindere ich, dass wget Weiterleitungen folgt?

45
flybywire

--max-redirect 0

Ich habe dies nicht ausprobiert, es wird entweder keine oder unendlich erlauben ..

45
Matt

Benutze curl ohne -L anstelle von wget. Das Weglassen dieser Option bei Verwendung von curl verhindert, dass der Umleitung gefolgt wird.

Wenn du benutzt curl -I <URL> dann erhalten Sie die Überschriften anstelle des Umleitungs-HTML.

Wenn du benutzt curl -IL <URL> dann erhalten Sie die Überschriften für die URL sowie die für die URL, zu der Sie umgeleitet werden.

10

Einige Versionen von wget haben ein --max-redirect Option: Siehe hier

3
Pekka 웃

wget folgt standardmäßig bis zu 20 Weiterleitungen. Es umfasst jedoch keine Hosts. Wenn Sie wget aufgefordert haben, example.com Herunterzuladen, werden unter www.example.com Keine Ressourcen berührt. wget erkennt dies als eine Aufforderung, einen anderen Host anzusprechen und sich dagegen zu entscheiden.

Kurz gesagt, sollten Sie wahrscheinlich Folgendes ausführen:

wget --mirror www.example.com

Eher, als

wget --mirror example.com

Nehmen wir an, der Besitzer von www.example.com Hat mehrere Subdomains bei example.com Und wir sind an allen interessiert. Wie geht es weiter?

Versuche dies:

wget --mirror --domains=example.com example.com

wget besucht nun alle Subdomains von example.com, einschließlich m.example.com und www.example.com.

3
Tim McNamara

Im Allgemeinen ist es keine gute Idee, sich auf eine bestimmte Anzahl von Weiterleitungen zu verlassen.

Zum Herunterladen von IntellijIdea lautet die versprochene URL, die immer auf die neueste Version der Community Edition für Linux aufgelöst wird, etwa https://download.jetbrains.com/product?code=IIC&latest&distribution=linux, aber wenn Sie diese URL heutzutage besuchen, werden Sie zweimal umgeleitet (zweimal), bevor Sie die tatsächlich herunterladbare Datei erreichen. In Zukunft werden Sie möglicherweise dreimal oder gar nicht weitergeleitet.

Die Möglichkeit, dieses Problem zu lösen, besteht in der Verwendung des HTTP HEAD verb. So habe ich es im Fall von IntellijIdea gelöst:

# This is the starting URL.
URL="https://download.jetbrains.com/product?code=IIC&latest&distribution=linux"
echo "URL: $URL"

# Issue HEAD requests until the actual target is found.
# The result contains the target location, among some irrelevant stuff.
LOC=$(wget --no-verbose --method=HEAD --output-file - $URL)
echo "LOC: $LOC"

# Extract the URL from the result, stripping the irrelevant stuff.
URL=$(cut "--delimiter= " --fields=4 <<< "$LOC")
echo "URL: $URL"

# Optional: download the actual file.
wget "$URL"
0
Mike Nakis