URLでHTTPコード200を確認してください。

URLでHTTPコード200を確認してください。

次のURLのリストを含むテキストファイルがあります。

http://somesite.com/some-article/
https://anothersite.fr/somepage.php?page=something

私が望むのは、どのURLがHTTPコード200(OK)を返すかを確認し、それを別のファイルのリストに入れることです。

これを行うために端末をどのように使用できますか?カール?

答え1

以下を使ってこれを行います。:

while read url ; do
    ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
    ((ret==200)) && echo "$url" >> new_list_URL
done < list_URL

またはPOSIXモード:

while read url ; do
    ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
    [ $ret -eq 200 ] && echo "$url" >> new_list_URL
done < list_URL

確認する男の巻き

答え2

私はこれをオンラインで使う

time xargs -n 1 -P 20 \
curl -o /dev/null --silent --head --write-out '"%{url_effective}","%{http_code}"\n' \
< "URLs.txt" \
| tee URLs-status_results.csv

あなたは美しいものを取得し、URLs-status_results.csv時間がかかるでしょう。

確認するxargsそしてcurlマンページ。

答え3

おそらく最善の方法ではないかもしれませんが、次のシェルスクリプトを理解するのは簡単です。

while read i
do
  wget --spider $i > /dev/null 2>1
  if [ $? == 0 ]
  then
    echo $i >> validlist.txt
  fi
done

このシェルスクリプトを実行します./wget_check.sh < urllist.txt。ここで、はwget_check.shスクリプト名、urllist.txtはURLを含むテキストファイルです。

スクリプトはデフォルトでリスト内のすべてのURLに対して実行されwget --spider、URLが有効な200 OK応答を返すと、そのURLが別のファイル "validlist.txt"に追加されます。

  • この--spiderオプションはURLを「クロール」し、ファイルをダウンロードしません。

  • 出力は/ dev / nullにリダイレクトされるため、出力は生成されません。

  • 値が得られなかった場合、それぞれはwgetゼロ以外の戻り値を返します。200 OK response

関連情報