YouTube의 광고 조회수로부터 수익을 창출하며, 비공식 클라이언트에서 비디오를 시청하거나 다운로드하는 것을 방지하기 위한 제한 조치
속도 제한 우회의 첫 단계는 YouTube API와 통신하여 비디오 파일이 포함된 실제 URL 찾기
YouTube는 파일 URL 대부분에서 'n'이라는 특정 파라미터를 사용하며, 이는 base.js 파일에 위치한 JavaScript 알고리즘을 사용하여 변환해야 함. 이 파라미터는 다운로드가 "공식" 클라이언트에서 시작되었는지 확인하는 도전 과제 역할
JavaScript 알고리즘은 난독화되어 있고 자주 변경되므로, 이를 이해하기 위해 역공학을 시도하는 것은 비현실적. 해결책은 JavaScript 파일을 다운로드하고, 알고리즘 코드를 추출하여 'n' 파라미터를 전달하여 실행하는 것
YouTube는 여전히 비디오의 크기와 길이에 기반한 가변 다운로드 속도 제한 규칙을 적용. 이 제한을 우회하기 위해, 다운로드는 HTTP Range 헤더를 사용하여 여러 작은 부분으로 나눌 수 있음
YouTube는 비디오와 오디오 채널을 두 개의 별도 파일로 배포. 마지막 단계는 이 두 채널을 하나의 파일로 결합하는 것으로, 이는 ffmpeg를 사용하여 수행 가능
현재 많은 프로젝트들이 YouTube의 비디오 다운로드를 방지하기 위해 설정된 제한을 우회하기 위해 이러한 기법을 사용. 가장 인기 있는 것은 Python으로 프로그래밍된 yt-dlp (youtube-dl의 포크)이지만, 이는 'n' 파라미터를 변환하기 위한 자체 사용자 정의 JavaScript 해석기를 포함
기사는 과정을 설명하고 코드 스니펫을 제공하여, 초급 소프트웨어 엔지니어들에게 접근 가능하게 함