代码之家  ›  专栏  ›  技术社区  ›  flybywire

wget:不遵循重定向

  •  42
  • flybywire  · 技术社区  · 14 年前

    如何预防 从以下重定向?

    4 回复  |  直到 12 年前
        1
  •  47
  •   Matt    14 年前

    --max-redirect 0

    我没有试过,它要么不允许,要么允许无限。。

        2
  •  11
  •   Dennis Williamson    5 年前

    使用 curl 没有 -L 而不是 wget 卷曲 防止跟踪重定向。

    curl -I <URL> 然后您将得到标题,而不是重定向HTML。

    curl -IL <URL> 然后您将得到URL的标题,以及重定向到的URL的标题。

        3
  •  4
  •   Pekka    14 年前

    一些版本的 wget --max-redirect 选项:请参见 here

        4
  •  3
  •   Tim McNamara    11 年前

    example.com ,它不会触及任何资源 www.example.com . wget将检测到这是一个跨越到另一个主机的请求,并决定不接受它。

    简而言之,您可能应该执行:

    wget --mirror www.example.com
    

    wget --mirror example.com
    

    现在让我们假设 有几个子域位于 example.com网站 我们对他们都感兴趣。如何进行?

    试试这个:

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

    m.example.com www.example.com网站 .

        5
  •  1
  •   Mike Nakis    5 年前

    一般来说,依赖特定数量的重定向不是一个好主意。

    例如,为了下载IntellijIdea,承诺始终解析为最新版本的communityeditionforlinux的URL如下 https://download.jetbrains.com/product?code=IIC&latest&distribution=linux

    解决这个问题的方法是使用HTTP头动词。下面是我在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"