문자 메시지 링크를 열기 전에 curl로 확인한 방법
このコンテンツはまだ日本語訳がありません。
Issue
섹션 제목: “Issue”저장되지 않은 번호로 링크 URL만 포함된 문자 메시지를 받았다.
평소라면 바로 차단했겠지만, 이번에는 발신 번호가 아주 이상해 보이지 않았고 본문도 짧아서 실제 지인이 보낸 링크일지도 모른다는 생각이 들었다.
그런데 이 링크가 너무 의심스러워서 열 수가 없었다. 어떤 링크인지 알 수도 없는데 어떻게 막 열겠나? 먼저 이 URL이 다른 사이트로 리다이렉트되는지, 어떤 성격의 페이지인지 확인하고 싶었다.
Cause
섹션 제목: “Cause”브라우저에서 링크를 바로 열면 어떤 주소로 어떤 동작이 실행될지 알 수가 없다.
그래서 처음에는 가상 환경이나 에뮬레이터에서 열어볼까 했지만, 그 정도까지 준비하기에는 번거로웠다. 대신 curl로 HTTP 헤더와 HTML 일부를 먼저 확인하면 최소한 아래 두 가지는 빠르게 볼 수 있다고 생각했다.
- 이 URL이 다른 곳으로 리다이렉트되는지
- 페이지 안에 어떤 키워드가 들어 있는지
다만 curl도 결국 서버에 요청을 보내는 방식이므로, 완전히 흔적 없이 확인하는 방법은 아니다. 이번에는 링크를 브라우저로 직접 열기 전에 성격을 먼저 확인하는 용도로만 사용했다.
Resolution
섹션 제목: “Resolution”먼저 HEAD 요청으로 리다이렉트 여부를 확인했다.
curl -I 링크주소응답 예시는 아래와 같았다.
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Thu, 28 May 2026 02:24:29 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: 링크주소여기서 Location 헤더를 보면 이 URL이 다른 주소로 이동시키는지 확인할 수 있다. 이번 경우에는 Location에도 같은 계열 주소가 들어 있었고, 바로 수상한 외부 도메인으로 보내는 형태는 아니었다.
그 다음에는 링크 주소를 확인해보니 모바일 부고장을 제공하는 서비스의 주소였다. 그래서 실제 페이지에 부고 서비스 관련 문구가 있는지 HTML 일부를 확인했다.
curl -sL 링크주소 | grep -E "상주|빈소|고인|장례"-s는 출력 중간 진행 표시를 숨긴다. 조용히 결과만 받기 위한 옵션.-L은 리다이렉트(curl -I 링크주소결과의 Location 주소)가 있으면 최종 응답(서버가 HTTP 리다이렉트로 안내한 범위)까지 따라간다.- HTTP 응답이 301, 302, 303, 307, 308처럼 리다이렉트면 Location 헤더를 읽고 다음 URL로 다시 요청한다.
- 자바스크립트로 리다이렉트한다면 따라가지 못한다.
- 예)
-
https://a.com/x요청
-
- 서버가 302와 Location:
https://b.com/y반환
- 서버가 302와 Location:
-
- curl -L이
https://b.com/y로 다시 요청
- curl -L이
-
- 또 리다이렉트면 계속 따라감
-
- 더 이상 리다이렉트가 없으면 그 최종 페이지 응답을 출력
-
grep -E는 정규식으로 여러 키워드를 한 번에 찾는다.
출력에는 아래처럼 제목과 메타 태그 일부가 포함됐다.
<title>XXXX</title><meta itemprop="name" content="XXX" /><meta property="og:title" content="xxxx" />결과를 보니 실제로 알고 있는 사람 이름과 부고장에 가까운 문구가 확인됐고, 문자 메시지의 링크 성격을 대략 판단할 수 있었다.
Notes
섹션 제목: “Notes”1) 다시 볼 체크포인트
섹션 제목: “1) 다시 볼 체크포인트”- 먼저
curl -I로Location헤더를 확인한다. - 바로 본문까지 볼 필요가 없으면
HEAD확인만으로 멈춘다. - 본문 확인은
curl -s부터 보고, 최종 도착지 확인이 필요할 때만curl -sL을 쓴다.
2) 관련 지표 / 용어 / 주의점
섹션 제목: “2) 관련 지표 / 용어 / 주의점”301이나302응답은 다른 주소로 이동시키는 리다이렉트를 의미한다.Location헤더가 예상과 다른 도메인을 가리키면 주의가 필요하다.curl -sL도 실제 HTTP 요청이므로, 접속 기록이 남을 수 있다는 점은 감안해야 한다.- HTML에 키워드가 보인다고 해서 반드시 안전한 사이트라고 단정할 수는 없다.
3) 의심 링크를 확인할 때의 순서
섹션 제목: “3) 의심 링크를 확인할 때의 순서”curl -I "URL"로 서버 리다이렉트와Location을 먼저 확인한다.- 본문이 필요하면
curl -s "URL" | head나grep -E로 일부만 본다. - 최종 도착지 확인이 필요할 때만
curl -sL "URL"을 쓴다. - 그래도 애매하면 브라우저에서 바로 열지 않고 중단한다.