Contents

重定向后获取最终URL

1. 概述

有时,当通过命令行从 URL 检索数据时,我们提供的原始 URL 被重定向,我们想知道提供内容的最终 URL。在本文中,我们演示了在使用*curl wget 重定向请求的 URL 后获取最终 URL 。curlwget*是非交互式命令行实用程序,用于将数据传输到服务器或从服务器传输数据。

2. 网址和最终网址

URL 代表统一资源定位器——它是网络上资源的唯一地址。出于各种原因,URL 可能会将流量从一个页面重定向或转发到另一个页面。例如,我们寻找的内容可能已移至新位置、域名已更改或页面已从站点中删除。

最终 URL 是用户在重定向后登陆的页面。例如,在浏览器中键入 URL http://google.com 会重定向到最终 URL https://www.google.com/

3. 使用curl命令

我们使用curl命令在重定向后获取最终 URL

$ curl -Ls -o /dev/null -w %{url_effective} http://google.com
http://www.google.com/

我们传入http://google.com , 但 URL 重定向到http://www.google.com/ 。 让我们分解命令。

-L选项告诉curl命令遵循 URL 重定向。-s选项用于静默模式,这意味着该命令不应向终端输出任何内容,而*-o**选项提供了它应该将输出发送到的路径,而不是将其发送到stdout*。在上面的例子中,我们将输出发送到*/dev/null*。

-w选项在传输完成后写出信息。此外,此选项有很多变量,这些变量使用数据传输中的值和信息进行设置。*%{url_effective}*变量显示最后获取的 URL。由于我们提供了 -L 选项来跟随重定向,它会给我们最终的 URL。

4. 使用wget命令

我们还可以使用wget命令来获取重定向后的最终 URL

$ wget -O /dev/null google.com 2>&1 | grep -w 'Location'
Location: http://www.google.com/ [following]

让我们分解一下上面的wget命令。wget命令的输入是google.com,但它重定向到http://www.google.com/

-O选项设置命令输出将写入的位置。我们正在将输出写入*/dev/null*。默认情况下,wget命令将标头定向到标准错误,因此2>&1将命令的标准错误重定向到标准输出。然后,输出通过管道传递给*grep *命令。grep命令搜索带有单词“Location”的行。此行包含重定向后最终 URL 的值。