WGET HEAD请求?


52

我想HTTP HEAD使用发送请求wget。可能吗?

Answers:


59

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

curl -I http://www.superuser.com/

产生以下输出:

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

这正是我想要的。
谢雷(YièJìléi)2010年

1
-I等同于--head
Nicolas Marchildon

1
如果您需要基于的自签名证书https,则还可以添加-k--insecure
Mike Aski

36

尝试:

wget -S --spider www.example.com

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


2
-S显示标题,但将执行GET,而不是HEAD。换句话说,它将获取整个URL。
Dan Dascalescu 2014年

9
wget -S --spider http://localhostapache服务器中创建的日志是127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 "-" "Wget/1.13.4 (linux-gnu)"
Casual Coder

20

不需要卷曲

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

这是一种检查URL是否响应的极简方法。例如,您可以在脚本检查中使用此功能,并且该HEAD操作将确保您既不对网络也没有对目标Web服务器施加任何负载。

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

总而言之,我建议使用此工具来测试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

4

wget -S 获取文件:

内容长度:2316,长度:2316(2.3K)[text / plain],保存到:`index.html'

wget --spider 获取标题:

启用蜘蛛模式。检查是否存在远程文件。,长度:未指定[文本/纯文本]远程文件存在。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.