web-dev-qa-db-ja.com

Wget HEAD request?

wgetを使用してHTTP HEADリクエストを送信します。出来ますか?

54
Xiè Jìléi

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
60
SleighBoy

試してください:

wget -S --spider www.example.com

-O /dev/nullを渡して、wgetがHTTP応答をファイルに書き込まないようにすることもできます。

37
Casual Coder

curlは必要ありません。

Wgetでは、--spiderを追加すると、HEADまたはGETではなくPOSTリクエストを送信することになります。

これは、URLが応答するかどうかを確認するための優れた最小限の方法です。たとえば、これをスクリプト化されたチェックで使用できます。HEAD操作は、ネットワークにもターゲットWebサーバーにも負荷をかけないことを確認します。

ボーナス情報:WgetがHEADを実行するときにサーバーからHTTPエラー500を受け取ると、同じURLに対してGETを実行します。このデザインの理由はわかりません。これが、サーバーに対してHEADandGETリクエストの両方が実行される理由です。何も問題がなければ、HEADリクエストのみが実行されます。 --triesオプションを使用してこの機能を無効にすると、Wgetを1回のみに制限できます。

全体として、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
20
thisisfun

wget -Sはファイルを取得します:

コンテンツの長さ:2316、長さ:2316(2.3K)[text/plain]、保存先: `index.html '

wget --spiderヘッダーを取得します。

スパイダーモードが有効になっています。リモートファイルが存在するかどうかを確認してください。長さ:未指定[text/plain]リモートファイルが存在します。

4
LanPartacz