检查网址是否转到包含文字“404”的页面
我有一个bash脚本来检查url列表的HTTP状态代码,但我意识到有些显示为“200”的页面实际上显示了一个包含“404错误”的页面。 我该如何检查?
这是我目前的脚本:
#!/bin/bash
while read LINE; do
curl -o /dev/null --silent --head --write-out '%{http_code}n' "$LINE"
done < url-list.txt
(我从一个先例的问题中得到了它:获取URL列表的HTTP状态代码的脚本?)
编辑似乎有一个脚本中的错误:它返回“200”,但如果我wget -o log
相同的地址我得到“404找不到”
为了好玩 - 这里有一个BASH解决方案:
dosomething() {
code="$1"; url="$2"
case "$code" in
200) echo "OK for $url";;
302) echo "redir for $url";;
404) echo "notfound for $url";;
*) echo "other $code for $url";;
esac
}
#MAIN program
while read url
do
uri=($(echo "$url" | sed 's~http://([^/][^/]*)(.*)~1 2~'))
HOST=${uri[0]:=localhost}
FILE=${uri[1]:=/}
exec {SOCKET}<>/dev/tcp/$HOST/80
echo -ne "GET $FILE HTTP/1.1nHost: $HOSTnn" >&${SOCKET}
res=($(<&${SOCKET} sed '/^.$/,$d' | grep '^HTTP'))
dosomething ${res[1]} "$url"
done << EOF
http://stackoverflow.com
http://stackoverflow.com/some/bad/url
EOF
那么,你可以使用明文打印响应主体并查找“404”,“错误404”,“未找到”,“404未找到”等,但这可能会带来错误的否定和误报。 尽管如果服务器发送了200个应该是404的应用程序,但有些人没有正确执行他们的工作。
链接地址: http://www.djcxy.com/p/45601.html上一篇: Check if a URL goes to a page containing the text "404"