检查 URL 中的 HTTP 代码 200

检查 URL 中的 HTTP 代码 200

我有一个包含 URL 列表的文本文件,如下所示:

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

我想要做的是检查哪些 URL 返回 HTTP 代码 200(正常)并将它们放入另一个文件的列表中。

我怎样才能使用终端来完成这个任务?卷曲?

答案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,并且需要时间。

查看xargscurl手册页。

答案3

可能不是最好的方法,但您也可以使用这个易于理解的 shell 脚本:

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

运行此 shell 脚本./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

相关内容