클릭 한번으로 인터넷 비디오 다운로드하기(m3u8)
검색 유입용 부제: 비디오 다운로드 막힌 사이트 뚫기
tl;dr (한 줄 요약)
비디오를 다운로드 받고 싶은데 다운로드가 안되는 경우..
video downloader - CocoCut
이라는 크롬 익스텐션을 설치한다.- 다운받고 싶은 비디오가 있는 사이트에 들어가 비디오를 재생한다.
- CoCoCut 플러그인에 파란 숫자가 뜨면 클릭한다. 다운로드 버튼을 누른다.
- 다운로드가 된다.
m3u8이란 언제부터 쓰였는지는 모르겠는데 요즘 실시간 스트리밍이든 실시간이 아닌 그냥 비디오든 매우 많은 곳에서 쓰는 비디오 전송 방식이다.
하나의 비디오을 여러 조각으로 쪼개 각각의 비디오에 대한 정보(다운로드 url 등)을 비디오 플레이를 시작했을 때, 즉 가장 처음에 보내준다. 그리고 비디오 상영중에는 필요한 비디오 파일을 조각조각 다운받는다. 확장자는 인덱스가 m3u8, 다운로드 비디오가 ts이다.
그리고 m3u8 방식으로 비디오를 보내주며 덤으로 F12 차단(개발자 도구 켜져 있으면 비디오 멈춤 등)이나 User-Agent 확인 기타 등등 여러 수단으로 비디오 다운로드를 막으려는 사이트가 꽤 있다. 저작권법에 적법하게 비디오를 송출하는 사이트에는 당연히 필요할 수 있지만... 음... 그다지 적법하지 않은 곳도 꽤나 공을 들여 다운로드를 못하게 하려고 한다.
그런 경우 여러 방식으로 다운로드가 가능한데, F12 차단이 안 되어 있는 경우에는 그냥 개발자 도구->Network->m3u8 파일 찾아서 그거를 ffmpeg 등에서 다운받게 하면 된다. ffmpeg -i "m3u8 주소" -c copy a.mp4
처럼 입력하면 아마 다운로드가 되는 걸로 안다. F12 차단이 되어 있으면 뭐 여러 방법이 있겠지만 Fiddler처럼 프록시 방식으로 중간에 패킷을 가로채는 프로그램을 써도 되고, F12 외의 웹 네트워크 흐름을 파악할 수 있는 도구를 쓰면 된다.
근데 그렇게 m3u8 주소를 찾아도 ffmpeg로 다운로드하려하면 다운로드가 안되는 경우가 있다. 보통 http request의 다양한 헤더(user-agent 등등)을 확인해서 막는 것 같다. 일단 이 글은 비개발자를 위한 글이니까 좀 풀어 설명하면, http request라하면 당신의 컴퓨터에서 비디오 서버에 이 비디오 주세요~ 하고 보내는 요청을 말하고, 그것의 헤더라 하면 제 웹브라우저의 종류는 이거고요 원하는 언어는 이거고요 뭐 기타등등 이런 정보를 추가적으로 담아 보내는 거라 생각하면 된다. 왜 이런 걸 보내냐면 웹브라우저 종류나 언어 설정 등에 따라 서버에서 회신해야 하는 정보가 달라질 수 있기 때문이다.
ffmpeg로 헤더 설정이 가능하다. 바로 직전에 이 블로그에 내가 올린 글을 보면 된다. 근데 매우 귀찮고 무엇보다 이것보다 훨씬 쉬운 방법이 있다. 바로 그냥 브라우저에서 다운로드하는거다. 이게 말이 쉽지 어떻게 하냐 궁금할텐데 이걸 도와주는 크롬 익스텐션이 있다. video downloader - CocoCut
이라고 검색하고 다운로드하자.
그리고 브라우저 우측 위 Extension 메뉴에서 "Pin"이나 "고정" 같은 걸 클릭해서 항상 좌상단에 보이게 하자.
그리고 비디오를 다운로드하고 싶은 사이트에 들어가서, 비디오를 재생하면(당연히, 비디오가 들어가자마자 자동재생되는 게 아닌 이상, 비디오를 처음 재생해서 m3u8 파일을 받아오지 않으면 비디오를 다운로드 할 수 없다.) 위와 같이 익스텐션에 파란색으로 숫자가 생긴다. 보통 저렇게 숫자 3이 있으면 "m3u8 파일을 3개 감지했어요"라는 뜻이고, 저거 클릭해서 다운로드 버튼 누르면 된다. m3u8 파일이 여러 개 있는데 하나 눌러서 원하는 비디오가 아니면 다른 거 다운로드 버튼 클릭하면 된다.
Twitch
트위치 다운로드
트위치 삭제된 영상 다운로드
TwitchLink의 경우 아마 개발자가 한국인인가보다.