Wget HEAD 请求?

Xiè*_*léi 58 wget http

我想HTTP HEAD使用wget. 是否可以?

Sle*_*Boy 64

它不是 wget,但您可以通过使用 curl 轻松做到这一点。

curl -I http://www.superuser.com/
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

HTTP/1.1 301 Moved Permanently                        
Content-Length: 144                       
Content-Type: text/html; charset=UTF-8     
Location: http://superuser.com/
Date: Sat, 09 Oct 2010 19:11:50 GMT
Run Code Online (Sandbox Code Playgroud)

  • `-I` 等价于 `--head`。 (2认同)
  • 如果需要基于`https`的自签名证书,还可以添加`-k`或`--insecure` (2认同)

Cas*_*der 40

尝试:

wget -S --spider www.example.com
Run Code Online (Sandbox Code Playgroud)

您还可以通过-O /dev/null以防止wget将 HTTP 响应写入文件。

  • `wget -S --spider http://localhost` 在apache服务器中创建的日志是`127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 " -" "Wget/1.13.4 (linux-gnu)"` (14认同)
  • `-S` 将 *显示* 标头,但它执行的是 `GET`,而不是 `HEAD`。换句话说,它将获取整个 URL。 (4认同)
  • 来自手册: --spider 当使用此选项调用时,Wget 将充当网络蜘蛛,这意味着它不会下载页面,只需检查它们是否存在。 (2认同)

thi*_*fun 22

不需要curl

对于 Wget,添加--spider意味着您要发送HEAD请求(与GET或相对POST)。

这是检查 URL 是否响应的极简方式。例如,您可以在脚本检查中使用它,该HEAD操作将确保您不会在网络和目标网络服务器上施加任何负载。

奖励信息:如果 Wget 在执行时从服务器收到 HTTP 错误 500,HEAD它将继续GET针对相同的 URL执行。我不知道这种设计的原因。这就是为什么你可以同时看到原因HEAD 一个GET正在对服务器进行请求。如果没有任何问题,则仅HEAD执行请求。您可以使用将--triesWget 限制为仅一次尝试的选项来禁用此功能。

总而言之,我建议使用它来测试 URL 是否响应:

# This works in Bash and derivatives
wget_output=$(wget --spider --tries 1 $URL  2>&1)
wget_exit_code=$?

if [ $wget_exit_code -ne 0 ]; then
    # Something went wrong
    echo "$URL is not responding"
    echo "Output from wget: "
    echo "$wget_output"
else
    echo "Check succeeded: $URL is responding"
fi
Run Code Online (Sandbox Code Playgroud)