링크가 리디렉션되는 위치를 확인하는 방법

링크가 리디렉션되는 위치를 확인하는 방법

현재 파일을 업데이트하는 스크립트를 작성 중입니다. 이 파일에는 여러 버전이 있습니다. 중요한 것은 정적 링크입니다. 이것들은 실제 파일로 리디렉션되어 사용됩니다 . 수신된 헤더를 인쇄하는 플래그가 있음 wget을 발견했습니다 . wget위치 목록이 있습니다. 헤더의 마지막 위치는 실제 URL입니다. 나는 그것을 얻어야 해!

내 생각은 wget -S헤더를 얻는 것입니다(파일 다운로드 및 생성을 방지하려면 다른 플래그가 필요합니다). 그런 다음 파이프를 사용하여 행을 구문 분석하고 포함된 마지막 행을 캡처합니다 location. 를 사용하면 이것이 가능하다고 생각합니다 grep -l -i "location:" | tail -l. 그러면 쉽게 파싱할 수 있는 한 줄을 남겨야겠습니다.

따라서 명령은 다음과 같습니다.

# The -??? flag is the one that prevents the file from downloading. (I don't know it)
Location=$(wget -S -??? $URL | grep -l -i "location:" | tail -l)

내 질문은 파일을 다운로드하지 않으려면 어떤 플래그를 사용해야 합니까? wget아니면 이를 수행하는 다른 방법/명령이 있습니까?

답변1

원하는 것은 HEAD 요청이지만 wget그렇게 하는 것은 지원되지 않습니다 curl.

배포판은 curl저장소에 있을 가능성이 높습니다.

curl -s -I $URL -L | awk '/Location: (.*)/ {print $2}' | tail -n 1

$ URL=http://unix.stackexchange.com/questions/89282/
$ curl -s -I $URL | awk '/Location: (.*)/ {print $2}' | tail -n 1
/questions/89282/how-to-figure-out-where-a-link-gets-redirected
$ _

여기:

  • -scurl진행률 표시줄이 표시되지 않도록 합니다 .
  • -IcurlHEAD 요청을 발행하십시오 .
  • -L다음 리디렉션을 만드세요 curl(@brianstone에게 감사드립니다). 추적하려는 리디렉션 헤더에 따라 이를 포함할 수도 있고 포함하지 않을 수도 있습니다.
  • awk 스크립트는 URI의 로컬 부분인 괄호 안에 일치하는 표현식을 인쇄합니다.

관련 정보