我该如何防止wget跟随重定向?
--max-redirect 0
我没有尝试过这个选项,它将允许零次重定向或无限制的重定向。
--max-redirect 0
允许没有重定向,而不是无限制的重定向。 - BMDan--level
是用于递归的(跟随 链接,而不是重定向)。 - j08lue使用没有-L
选项的 curl
命令来代替 wget
。在使用 curl
时省略该选项将会阻止重定向。
如果使用 curl -I <URL>
,则可以获得头文件而不是重定向HTML文件。
如果使用 curl -IL <URL>
,则您将同时获得所请求的URL以及被重定向到的URL的头文件。
prisonexp.org
的网站图标,但是我被拒绝访问。根据一个SO用户的说法,wget没有问题,所以我现在正在实施它。 - user2258887wget
,而不是curl
。 - Daniel一般来说,依赖于特定数量的重定向并不是一个好主意。
例如,为了下载IntellijIdea,承诺始终解析到Linux社区版最新版本的URL类似于https://download.jetbrains.com/product?code=IIC&latest&distribution=linux
,但如果你现在访问该URL,你将会被重定向两次,才能到达实际可下载的文件。未来你可能被重定向三次,或者根本不会被重定向。
解决这个问题的方法是使用HTTP HEAD动词。以下是我在IntellijIdea中解决此问题的方式:
# 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"
example.com
,它不会接触任何在www.example.com
的资源。wget会将其检测为一个扩展到另一个主机的请求,并予以拒绝。wget --mirror www.example.com
wget --mirror example.com
www.example.com
的所有者有几个子域名在 example.com
,而我们对它们都感兴趣。怎么办呢?wget --mirror --domains=example.com example.com
m.example.com
和www.example.com
。
wget --mirror http://some.url
中的 301 重定向会将index?q=1
保存为/pretty/urls/
的副本,尽管最初请求 index 返回了 HTTP 301 永久重定向。 - here