cURL 抑制响应正文

问题描述 投票:0回答:6

是否可以指示 cURL 抑制响应正文的输出?

在我的例子中,响应正文是一个 HTML 页面,它溢出了 CLI 缓冲区,导致很难找到相关信息。我想检查输出的其他部分,例如 HTTP 响应代码、标头等。 - 除了实际的 HTML 之外的所有内容。

curl output suppress
6个回答
209
投票
您可以使用

-o

 开关和 
null
 伪文件 :

Unix

curl -s -o /dev/null -v http://google.com

Windows

curl -s -o nul -v http://google.com
    

100
投票
这是一种抑制所有curl输出和标头的方法,并且可以选择在发生错误时仍然显示错误。对于 cron 作业或自动化测试很有用。

Unix

抑制所有输出:

curl --silent --output /dev/null http://example.com
抑制输出但如果发生错误仍显示错误:

curl --silent --output /dev/null --show-error --fail http://example.com
Windows

抑制所有输出:

curl --silent --output nul http://example.com
抑制输出但如果发生错误仍显示错误:

curl --silent --output nul --show-error --fail http://example.com
参数说明

--silent

 (
-s
) 抑制正在下载的统计信息(但仍会显示 HTML 输出)

--output /dev/null
 (
-o
) 隐藏成功输出
即使启用了
--show-error
 模式,
-S (
silent
) 也会显示错误
如果 HTTP 响应是错误代码(404、500 等)而不仅仅是 DNS/TCP 错误,
--fail
 (
-f
) 将引发错误。


更新:我意识到原作者想要检查请求的标头和响应代码,而不是沉默一切。有关如何执行此操作的详细信息,请参阅 samael 的回答


69
投票
当您想显示标题但隐藏响应正文时,您需要使用:

curl -sIXGET http://somedomain.com/your/url

我一直在使用

curl -I http://somedomain.com/your/url

 来显示响应头。但问题是,它使用 
HEAD
 方法
发出请求,当您想要测试仅响应
GET
 请求的 API 调用时,这并不好。这就是 
-X GET
 的用途,它将请求更改为 
GET

所以,总结一下:

-s

隐藏输出中的进度条(在管道到另一个程序时特别有用)

-I
 显示标头(但发出 
HEAD
 请求)

-XGET
 将请求转换回 
GET
 请求

参见:

http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/


18
投票
只需

发出 HEAD 请求。 您将获得没有正文的标头。符合标准的服务器应该在此处发送与 GET 请求完全相同的信息。

curl --head <url>


或者,如果 HEAD 请求由于某种原因对您不起作用,以下内容将使 cURL 发送 GET

 请求,但随后打印响应代码和标头并在不接收响应正文的情况下断开连接
--与其他接收然后丢弃它的答案不同。这可以节省大量时间和带宽,特别是当主体很大时。

curl --head -X GET <url>

您可以对任何其他动词(例如POST

)进行同样的操作,只需将其提供给
-X
选项而不是
GET
即可。


1
投票
显示响应标头并抑制正文的另一个选项:

curl -sD - https://example.com -o /dev/null
    

0
投票
我建议以下解决方案:

curl -sS -i https://example.com | perl -e '$p = 1; while(<STDIN>){ $p = 0 if $_ =~ /^\s*$/; print if $p }'
这是一句较长的单行文字,但可以满足您的需要:

    身体被压制
  • 标头和响应代码以 @ stdout 输出,以便您还可以将信息通过管道传输到另一个命令或在 shell 变量中捕获它,如
  • output="$(curl -i ....)"
    
    
  • 任何 cURL 错误都会发送到 @ stderr
  • 这适用于 GET 和 POST 请求,以及任何其他 HTTP 请求方法,并且您可以使用其他标准
  • curl
     参数
© www.soinside.com 2019 - 2024. All rights reserved.