컴퓨터와 잡동사니 자료

네이버 블로그 동영상의 _lsu_sa_에 대한 고찰.

K66Google 2020. 11. 23. 12:19


 * 알림


이 게시물의 내용은 2020년 11월에 최초 작성되었고, 2021년 3월 초에 수정되었습니다.

글을 읽는 시점과는 상황이 다를 수 있습니다.



네이버 블로그 동영상의 다운로드 방법은 이미 인터넷에 널리 퍼져있다. 가장 유명한 방법은 오른쪽 상단의 공유 버튼을 누르고 소스 코드에서 플레이어 URL을 복사한 뒤 ToGetFLV라는 사이트에 붙여넣어서 다운로드 받는 방식이다.

하지만 그런 방식은 해당 동영상을 게시한 블로그 게시물이 '전체공개'일때만 가능하다. 게시물이 이웃공개·서로이웃공개·비공개일때는 공유 버튼이 뜨지 않으므로 해당 방법을 적용할 수 없다.


그렇게 되면 크롬 F12 기능을 이용해서 동영상 주소를 추출하는 수밖에 없다. 네이버 블로그의 동영상 스트리밍 방식은 m3u8 방식이다. 여기까지라면 ffmpeg을 통해 동영상을 쉽게 다운로드 받을 수 있다. 그러나 네이버는 자신들의 서버에 있는 동영상을 쉽게 다운로드할 수 있다는 것에 기분이 상했는지 방패를 하나 장착하게 된다.


그 방패가 바로 '_lsu_sa_' 라는 값이다. 임의의 시간이 지나면 해당 값이 바뀐다는 점에서 다른 스트리밍 사이트의 token과 유사하다고 볼 수 있겠다. 그러나 네이버 블로그는 다른 스트리밍 사이트와 한 가지 다른 점이 있다. 그것은 토막 파일인 .ts에도 '_lsu_sa_' 값이 붙는다는 것이다.


그렇기 때문에, 단순히 m3u8 주소만 따서 ffmpeg으로 다운로드를 받으려고 시도하면 400 Bad Request 오류만 뜨고 다운로드에 실패하게 된다. youtube-dl 또한 m3u8 파일까지는 잘 불러오지만 .ts 파일 다운로드 과정에서 ffmpeg과 똑같은 오류가 발생하게 된다.


그렇다면 대체 어떻게 해야 네이버 블로그 동영상을 다운로드 받을 수 있단 말인가?

2021년 3월 초 현재 가능한 방법은 두 가지가 있다. 첫 번째는 명령 프롬프트(cmd)의 curl · copy 명령어를 사용하는 방법이며, 두 번째는 m3u8.exe를 이용하는 방법이다.

그런데 두 번째 방법인 m3u8.exe는 윈도우 디펜더에서 악성코드로 감지하는 문제가 있다고 한다. 오진일 가능성도 있지만 좀 꺼림칙하므로 번거롭더라도 cmd 명령어를 사용하는 방법을 권장하고 싶다. (관련 설명은 일단 남겨두도록 하겠다.)



1. 명령 프롬프트 사용 방법

(기법 출처는 #L1 , #L2 를 참조.)


1. 먼저 아무 폴더나 생성한다.


2. 크롬 F12(개발자 도구)의 Network 탭을 띄워놓고 동영상을 재생시킨다. 그런 다음 동영상의 m3u8 파일을 찾고 Preview 탭으로 간다. 거기서 첫번째 ts 번호를 확인한다. 위 스크린샷에서는 000000.ts 였다.


3. 그 후 스크롤을 내려서 마지막 ts 번호를 확인한다. 위 스크린샷에서는 000015.ts 였다.


4. ts 번호 두 개를 다 파악했으면 Headers 탭으로 와서 경로를 메모장에 복사한다. 복사 후 경로는 따옴표(")로 묶어준다.


5. 이제 curl 명령어로 만들기 위해서 m3u8 경로를 좀 수정해야 한다. 경로의 앞과 뒤에 무언가를 추가해야 하고, 경로 안의 '.m3u8' 을 다른 내용으로 바꿔야 한다. 수정 사항은 다음과 같다.


m3u8 경로 맨 앞 : 'curl ' 을 추가.

.m3u8 : -[첫번째 ts 번호-마지막 ts 번호].ts 로 변경.

m3u8 경로 맨 뒤 : ' -o #1.ts' 를 추가.


(공백 띄어쓰기에도 유의해야 함)


6. 수정 사항대로 수정하면 이런 식으로 curl 명령어가 만들어진다.


7. 맨 처음에 만들었던 폴더로 가서 탐색기 주소창에 cmd라고 입력한다.


8. 명령 프롬프트가 열리면 메모장에서 만든 curl 명령어를 복붙하고 엔터 키 누른다.


9. 성공적으로 다운로드가 됐다면 폴더에 ts 파일들이 들어왔을 거다. 이제 합치는 일만 남았다.


10. 다시 명령 프롬프트에서 합치는 명령어를 입력하고 엔터 키를 친다.


copy /b *.ts "output.ts"


이 명령어를 쓰면 해당 폴더에 있는 모든 ts 파일을 output.ts로 합쳐준다.


11. 합치기 작업이 완료되면 해당 폴더에 합친 ts 파일이 생성되었을 것이다. 재생해서 이상 없으면 파일명 바꾸고 다른 폴더로 옮겨놓으면 된다.




2. m3u8.exe 사용 방법 (접기 처리됨)



위 방법을 통해 네이버 블로그 뿐만 아니라 네이버TV의 일부 영상들도 다운로드가 가능하다는 것을 확인했다.

그럼 이만...