'youtube-dl'이나 'yt-dlp' 같은 다운로드 도구를 사용하지 않고 YouTube에서 동영상을 다운로드하려고 하면 강렬한 대역 제한이 발동하여 10 분의 동영상을 다운로드하는 데 약 6 시간 반이나 걸려 버립니다. 이러한 제한을 다운로드 툴이 어떻게 돌파하고 있는지에 대해서, 해커 베다드 씨가 해설하고 있습니다.
How They Bypass YouTube Video Download Throttling | 0x7D0
동영상 다운로드의 첫 단계는 동영상에 액세스 하기 위한 실제 URL을 찾는 것입니다. 이 단계에서는 YouTube API의 엔드포인트인 "/youtubei/v1/player"에 액세스 하면 됩니다.
제목, 상세 설명, 썸네일 외에 동영상 해상도별 URL을 얻을 수 있습니다.
다만, 여기에서 취득한 URL을 사용해 영상을 다운로드하려 하면, 아래 그림과 같이 전송 속도가 40kB/s ~ 70kB/s로 억제되어 버려, 10분의 무비를 다운로드하는데 약 6시간 반이 걸립니다. 웹상에서 시청할 때는 그렇게 많이 기다리지 않기 때문에, 어떠한 제한이 걸려 있는 것이 분명합니다.
베다드 씨에 의하면, 무비의 URL의 파라미터 중에 「n」라는 파라미터가 존재하여, YouTube는 이 「n」을 이용해 공식 클라이언트 여부를 구별하고 있다고 합니다. 공식 클라이언트인 경우 「n」을 특정 알고리즘에 따라 변환하고 매개 변수에 새로운 「n」을 설정하여 다운로드합니다. 「n」이 잘못되면 대역 제한이 발동합니다.
「n」의 변환 알고리즘은 난독화되며 자주 변경되기 때문에 해독을 시도하는 것은 현실적이지 않습니다. 하지만 클라이언트 측에서 실행되는 JavaScript의 특징상 알고리즘 코드 자체는 누구나 액세스 할 수 있습니다. 따라서, 많은 다운로드 라이브러리에서는 YouTube의 JavaScript를 다운로드해, 알고리즘 코드를 통째로 뽑아내고 「n」을 변환시키는 해결 방법이 채용되고 있다고 합니다.
이렇게 대역 제한을 해제하면 4MB/s라는 속도로 동영상을 다운로드할 수 있게 됩니다. 그러나 베다드 씨는 여기서 두 번째 대역 제한이 발생한다고 말합니다. YouTube는 스트리밍 플랫폼이기 때문에 스트리밍 하기에 충분한 속도가 되면 자동으로 대역 제한이 걸린다는 것. 일반적으로는 재생 시간의 절반 정도의 시간에 다운로드가 완료되도록 조정됩니다.
제2 대역 제한은 다운로드 개시 후 잠시 후 발생하기 때문에, HTTP 헤더의 「Range」를 이용해 다운로드를 세세하게 분할해, 항상 새로운 접속을 실시하도록 하면 된다는 것. 예를 들어 10MB씩 다운로드하도록 스크립트를 변경하면 아래 그림과 같이 60MB/s ~ 80MB/s라는 속도로 다운로드를 할 수 있습니다.
YouTube의 동영상은 영상과 음성이 다른 파일로 나뉘어 저장되어 있기 때문에, 양자를 각각 다운로드한 후, ffmpeg 등의 편집 툴을 이용하여 하나의 파일로 통합하면 다운로드가 완료됩니다. 이번에 베다드 씨가 작성한 다운로드 스크립트는 베다드 씨의 블로그에 공개되어 있습니다.
https://blog.0x7d0.dev/assets/download/how-they-bypass-youtube-video-download-throttling/youtube-download.js
그러나 역시, 다운로드 전용 툴을 사용하는 것이 가장 편리합니다.
'트렌드 이슈 · 토픽' 카테고리의 다른 글
엑셀에서 파이썬을 사용할 수 있도록 한다고 Microsoft가 발표 (2) | 2023.08.24 |
---|---|
비의 에너지를 발전에 이용하기 위한 돌파구를 발견, 솔라 패널이 아닌 「레인 패널」이 등장하는가 (21) | 2023.08.18 |
줄기 세포를 이용한 치아 에나멜 재생에 성공, 충치 재생기술의 실현을 기대 (1) | 2023.08.18 |
리튬 이온 배터리보다 안전하고 효율적인 리튬 금속 배터리의 실현으로 이어지는 근본적인 발견이 확실시 (1) | 2023.08.16 |
새의 깃털 같은 디자인의 피아노 「Ravenchord」 (1) | 2023.08.14 |
오픈소스 앱을 유지하기 힘든 이유 (1) | 2023.08.14 |
플라스틱 식품 용기를 전자 레인지로 가열하면 방대한 양의 플라스틱 입자가 방출되는 것으로 밝혀졌습니다. (2) | 2023.08.10 |
'먹는 시간'을 제한하는 다이어트는 칼로리 제한과 거의 같은 효과가 있다는 것이 판명 (1) | 2023.08.07 |