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로 리디렉션되므로 출력이 생성되지 않습니다.

  • 값을 얻지 못한 경우 각각은 wget0이 아닌 반환 값을 반환합니다.200 OK response

관련 정보