tutorials

동영상 직접 링크에서 MP4 다운로드하는 방법

MP4·WebM 직접 링크를 찾아 FlowPick으로 한 번에 저장하고, 403·404·CORS·파일 불완전 문제를 하나씩 해결합니다.
FlowPick 팀
9분 분량
# 동영상 다운로드 # MP4 # WebM # 직접 링크 # 튜토리얼

동영상 직접 링크에서 MP4 다운로드하는 방법

동영상을 보다가 오른쪽 버튼을 눌러도 "다른 이름으로 저장"이 없다. 주소창에도 .mp4가 안 보인다. 이럴 때 원인은 거의 둘 중 하나입니다. M3U8/MPD 같은 분할 스트리밍이거나, 직접 링크인데 숨겨져 있거나. 이 글은 후자만 다룹니다. 숨겨진 직접 링크를 어떻게 파내는지, 진짜 받을 수 있는 링크인지 가려내는 법, 그리고 못 받을 때 도대체 어디서 막히는지를 다룹니다.

먼저 정리: 직접 링크가 뭔가?

직접 링크는 "URL 하나가 파일 하나를 가리키는" 다운로드입니다. 주소를 얻어 다운로더에 넣으면 한 번의 요청으로 MP4·WebM·MOV·MKV 전체가 내려옵니다. HLS/DASH처럼 매니페스트를 조립하고 세그먼트를 하나씩 받아올 필요가 없습니다.

직접 링크HLS / DASH 스트리밍
URL이 가리키는 것단일 파일매니페스트 + 세그먼트
다운로드 방식요청 1개매니페스트 분석 → 분할 다운로드 → 병합
실패했을 때403 / 404 / 빈 파일화면 깨짐, 소리 없음, 병합 실패

아래 내용은 전부 직접 링크 얘기입니다. 실제로 손에 든 게 .m3u8이나 .mpd URL이라면 이 글에서 끙끙대지 말고, M3U8/HLS 스트리밍 다운로드 방법: 완전 초보 가이드소리가 나오는 DASH 동영상 다운로드 방법 으로 가세요. 방향이 틀리면 어떤 방법도 헛수고입니다.

진짜 직접 링크인지 확인하는 법

.mp4 확장자만으로는 부족합니다. 많은 사이트가 CDN URL 뒤에 서명된 파라미터를 잔뜩 붙이고, 확장자를 숨기기도 합니다. 판단 기준은 딱 하나입니다. 응답의 Content-Typevideo/*인지입니다.

방법 1: 개발자 도구의 Network 탭에서 확인

동영상 페이지를 열고 F12로 개발자 도구를 연 다음 Network 탭으로 전환하고, mp4webm으로 필터를 걸고 동영상을 재생합니다.

  1. URL에 .mp4 / .webm이 들어 있는 요청을 찾는다.
  2. 열어서 응답 헤더의 Content-Type을 확인한다.
  3. video/mp4video/webm이면 그게 직접 링크다.

방법 2: curl로 직접 검증

후보 URL이 나왔으면 curl로 실제로 뭐가 돌아오는지 봅니다(URL은 자신의 것으로 바꾸세요).

curl -sI "https://cdn.example.com/course/lesson1.mp4" | head -n 10

봐야 할 건 두 줄입니다.

HTTP/1.1 200 OK
Content-Type: video/mp4
Content-Length: 52428800

Content-Typevideo/mp4면 URL이 맞습니다. text/html이 돌아온다면 그건 동영상이 아니라 웹 페이지입니다. URL을 잘못 복사한 겁니다. 직접 링크 탐지 원리와 지원 형식은 동영상 탐지 — 지원하는 비디오 포맷 을 참고하세요.

FlowPick 확장 프로그램으로 다운로드

1단계, 동영상이 실제로 재생되는 페이지를 열고 몇 초 재생해서 직접 링크가 정말로 요청되게 합니다. 2단계, FlowPick 확장 프로그램을 열고 리소스 목록을 "동영상"으로 필터링해서 video/mp4·video/webm 항목을 골라냅니다. 썸네일이나 커버 이미지는 선택하지 마세요. 3단계, 오른쪽 미리보기에서 정상 재생되는지, 형식이 맞는지 확인한 뒤 다운로드를 누릅니다. 4단계, 다운로드가 끝나면 파일을 열어 재생되는지 확인하고 원래 페이지를 닫습니다.

확장 프로그램은 원본 페이지 환경 안에서 돌기 때문에 Referer와 쿠키가 자동으로 따라가고, 안티 핫링크 검증은 대부분 통과합니다. 바로 이 지점이 온라인 도구보다 확장 프로그램이 나은 이유입니다. 온라인 도구는 자기 도메인에서 돌아서 대상 사이트의 로그인 상태를 가져올 수 없습니다. 이 차이는 온라인 도구 — 확장 프로그램과의 차이점 에 정리돼 있습니다.

가끔 한 편씩만 받고 안티 핫링크 검증이 없다면 온라인 동영상 다운로더 도 쓸 수 있습니다. 직접 링크 URL을 붙여 넣으면 다운로드됩니다.

자주 보는 오류를 하나씩

403 Forbidden: 요청 헤더가 잘못됨

동영상이 진짜로 "권한 없음"인 경우는 거의 없습니다. 대부분 검증을 통과하지 못한 것입니다.

  • Referer 검증: 특정 페이지에서 온 요청이어야 함. 빈 Referer는 즉시 거절.
  • 쿠키 / 로그인 상태: 로그인 쿠키가 없거나 만료됨.
  • 임시 토큰: URL 안의 ?token=이 만료됨.

curl로 재현해서 Referer가 원인인지 확인합니다.

# 헤더 없이. 맨몸 요청이 뭘 돌려주는지 본다
curl -s -o /dev/null -w "%{http_code}\n" "https://cdn.example.com/course/lesson1.mp4"

# 페이지의 Referer를 붙여 다시 시도
curl -s -o /dev/null -w "%{http_code}\n" \
  -H "Referer: https://www.example.com/course/123" \
  "https://cdn.example.com/course/lesson1.mp4"

Referer를 붙이니 통과하면 그게 안티 핫링크입니다. 확장 프로그램으로 바꾸세요. 확장 프로그램은 원본 페이지 안에서 돌아 Referer를 자동으로 채워 주고, v1.1.1 이후에는 안티 핫링크 프록시도 내장해서 미리보기와 다운로드 모두 올바른 요청 헤더를 자동으로 붙입니다. 온라인 도구로는 안 됩니다. 프록시 자세한 내용은 FlowPick v1.1.1: 안티 핫링크 리소스 미리보기와 다운로드 를 보세요.

404 Not Found: URL 만료 또는 잘못 집음

직접 링크에서 가장 짜증나는 게 "어제는 됐는데 오늘 404"입니다. 흔한 원인 세 가지.

  • 임시 서명 URL 만료: 클라우드 스토리지(OSS, COS 등)의 직접 링크는 유효 기간이 있어 몇 분에서 몇 시간이면 끝납니다.
  • 파일 정리됨: 올린 사람이 지웠거나 CDN 캐시가 비워짐.
  • URL 잘못 복사: 복사한 게 플레이어 화면 URL이지 파일 직접 링크가 아님.

URL이 정말 죽었다면 방법이 없습니다. 원래 동영상 페이지로 돌아가 다시 탐지해서 새 직접 링크를 얻어 다시 받으세요.

CORS 오류: 온라인 도구 특유의 함정

온라인 도구로 다운로드하다 CORS 오류가 나면, 조작 실수가 아니라 도구의 한계입니다. 온라인 도구는 flowpick.com 도메인에서 돌기 때문에 브라우저의 동일 출처 정책이 교차 출처 읽기를 막습니다. 확장 프로그램으로 바꾸세요. 확장 프로그램은 독립 권한을 가져 동일 출처 정책 제약을 받지 않으므로 탐지 범위와 성공률 모두 한 단계 위입니다. 자세한 내용은 동영상 탐지 — 확장과 온라인 도구의 감지 차이 를 참고하세요.

파일 불완전: 서버가 이어받기 미지원

다운로드는 시작되는데 일시정지하면 0부터 다시 하고, 중간에 실패하기도 합니다. 이건 서버가 HTTP Range를 지원하는지에 달려 있습니다. Range를 쓰면 클라이언트가 파일 일부만 요청할 수 있고, 이어받기(断点续传)는 전부 여기에 의존합니다.

서버가 지원하는지 확인해 봅니다.

curl -s -o /dev/null -w "%{http_code}\n" \
  -H "Range: bytes=0-1023" \
  "https://cdn.example.com/course/lesson1.mp4"
# 206 = Range 지원, 이어받기 가능
# 200 = 전체 파일 반환, 미지원

206이면 문제없습니다. 200(전체)이 돌아오면 Range 미지원이니 중간에 일시정지하지 말고 한 번에 받으세요. 서버 쪽 능력 문제라 도구를 바꿔도 달라지지 않습니다.

받았는데 재생이 안 될 때

파일은 받았다, 용량도 정상인데 플레이어가 "형식 미지원"이라거나 검은 화면이 나옵니다. 여기서 컨테이너코덱을 구분해서 생각해야 합니다. .mp4는 컨테이너이고, 안에는 H.264일 수도 있고 H.265/HEVC나 AV1일 수도 있습니다. 컨테이너 지원과 코덱 지원은 다릅니다. 플레이어는 안쪽 코덱 레이어를 디코딩할 수 있어야 재생됩니다.

코덱 미지원이면 형식 변환 으로 호환성이 좋은 H.264 MP4로 바꾸면 됩니다. 내 브라우저가 뭘 재생할 수 있는지는 브라우저 호환성 을 참고하세요.

수백 MB 대용량 파일이 다운로드 중간에 멈추는 건 브라우저가 파일을 메모리에 임시 저장하기 때문입니다. FlowPick은 File System Access API를 우선 사용하고(저장 폴더를 고르면 스트리밍으로 디스크에 써서 메모리를 안 먹음), 지원하지 않으면 Blob 모드로 대체합니다. 대용량 파일이 막히는 게 그 이유입니다. 대책은 간단합니다. 기본 다운로드 대신 "저장 폴더 선택"을 우선으로. 그것도 안 되면 저화질 버전을 받으세요. Blob 모드의 하드 제한은 알려진 제한 에 정리돼 있습니다.

직접 링크와 M3U8·MPD 구분이 안 될 때

URL 확장자가 .m3u8이나 .mpd면 그건 직접 링크가 아니라 스트리밍 매니페스트입니다. 억지로 받지 마세요.

정리

직접 링크 다운로드는 4단계입니다. 동영상이 실제로 재생되는 페이지 찾기 → Network나 FlowPick에서 video/* URL 파내기 → curl로 잘못 집지 않았는지 검증하기 → 받은 뒤 재생 확인하고 넘어가기. 403이면 확장 프로그램으로, 404면 다시 탐지, CORS면 온라인 도구 쓰지 말기, 파일 불완전이면 먼저 Range 확인. 그래도 남는 난제는 동영상 직접 링크 다운로드 실패? MP4·WebM 문제 해결 에 증상별 전체 체크리스트가 나와 있습니다. 저장할 권리가 있는 동영상만 다운로드하세요.


관련 글

추천 글