Verificando URLs para o código HTTP 200

1

Eu tenho um arquivo de texto contendo uma lista de URLs como esta:

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

O que eu gostaria de fazer é verificar quais URLs retornam o código HTTP 200 (OK) e colocá-los em uma lista em outro arquivo.

Como eu poderia conseguir isso usando o terminal? Curl?

    
por Eddie M. Patrick 28.12.2014 / 12:11

2 respostas

1

Tente fazer isso usando :

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

ou modo 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

Verifique se o homem enrola

    
por 28.12.2014 / 12:17
0

Pode não ser o melhor caminho, mas você também pode usar este script de shell fácil de entender:

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

Execute este script de shell como ./wget_check.sh < urllist.txt , em que wget_check.sh é o nome do script e urllist.txt é o arquivo de texto que contém as URLs.

Este script basicamente executa um wget --spider contra cada um dos URLs na lista e adicionará o URL a outro arquivo 'validlist.txt' se o URL retornar uma resposta 200 OK válida.

  • A opção --spider "rastreará" os URLs e não fará o download de nenhum arquivo.

  • Não haverá saída produzida, pois a saída será redirecionada para / dev / null.

  • Cada wget retornará um valor de retorno diferente de zero se não obtiver 200 OK response

por 28.12.2014 / 13:04