检查网址是否转到包含文字“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"

下一篇: http code 304 in browser