728x90
유튜브에서 yt-dlp
로 영상이나 음성을 다운로드할 때 PO Token(Proof of Origin Token)이 필요하다는 메시지가 나타나는 이유와 해결 방법입니다.
[youtube] Extracting URL: fAHjYSmvDHg
[youtube] fAHjYSmvDHg: Downloading webpage
[youtube] fAHjYSmvDHg: Downloading tv client config
[youtube] fAHjYSmvDHg: Downloading player 9f49a55a-main
[youtube] fAHjYSmvDHg: Downloading tv player API JSON
[youtube] fAHjYSmvDHg: Downloading ios player API JSON
WARNING: [youtube] fAHjYSmvDHg: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
[youtube] fAHjYSmvDHg: Downloading m3u8 information
[info] Testing format 270
[download] Got error: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
ERROR: fragment 1 not found, unable to continue
WARNING: Unable to download format 270. Skipping...
[info] Testing format 232
[download] Got error: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
ERROR: fragment 1 not found, unable to continue
WARNING: Unable to download format 232. Skipping...
[info] Testing format 605
[download] Got error: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
ERROR: fragment 1 not found, unable to continue
WARNING: Unable to download format 605. Skipping...
[info] fAHjYSmvDHg: Downloading 1 format(s): 18
^C
ERROR: Interrupted by user
PO Token이 필요한 이유
YouTube는 최근 비정상적인 다운로드 요청을 방지하기 위해 일부 클라이언트에 대해 PO Token 인증을 요구하고 있습니다.
300x250
이는 주로
- GVS (Google Video Server) 요청
- Player 요청
- 자막 (Subs) 요청
에 해당되며, 다운로드 시 HTTP 403 오류(Forbidden)가 발생하는 주 원인이 됩니다.
PO Token이 필요한 경우
클라이언트 | 필요한 토큰 종류 | 비고 |
---|---|---|
web |
GVS, 자막 (일부) | 가장 제한이 심함 |
mweb (모바일 웹) |
GVS | 추천 클라이언트 |
tv , tv_embedded |
필요 없음 | 단, 일부 DRM 가능 |
web_music , web_creator |
GVS | 유료 회원 우선 적용됨 |
yt-dlp는 기본적으로 PO Token이 필요 없는 클라이언트로 시도하지만, 영상 품질이 낮아지거나 다운로드가 실패할 수 있습니다.
해결 방법
추천 방법: mweb 클라이언트 + PO Token 제공
yt-dlp --extractor-args "youtube:player-client=mweb;po_token=mweb.gvs+토큰값" --cookies cookies.txt VIDEO_URL
--extractor-args
로 클라이언트 및 토큰 설정--cookies
로 계정 쿠키 파일 전달
PO Token 얻는 방법 (수동 추출)
A. 사전 준비
- 브라우저로 유튜브 로그인
- F12 (개발자도구) > Network 탭
- 필터에
v1/player
입력 - 유튜브 영상을 하나 재생
B. 토큰 추출
v1/player
요청 중 Request Payload 또는 JSON Body에서serviceIntegrityDimensions.poToken
필드 값을 찾음- 해당 값을 복사해
yt-dlp
명령에 사용
C. 쿠키 추출 (필수)
- 시크릿 창(Incognito)에서 로그인 후 영상 재생
https://www.youtube.com/robots.txt
접속- 쿠키를 추출하고 시크릿 창 종료
- 확장 프로그램 추천: Get cookies.txt extension (Chrome)
대안: 자동화된 PO Token Provider 사용
예) bgutil-ytdlp-pot-provider
pip install bgutil-ytdlp-pot-provider
- 이 도구는 BotGuard 인증을 통해 PO Token을 자동으로 생성합니다.
yt-dlp
와 연동하여 사용할 수 있도록 플러그인 형태로 제공됨.
예시 명령어
yt-dlp \
--cookies cookies.txt \
--extractor-args "youtube:player-client=mweb;po_token=mweb.gvs+YOUR_TOKEN_HERE" \
https://www.youtube.com/watch?v=VIDEO_ID
Player나 Subtitles 토큰이 필요한 경우 po_token=mweb.player+토큰값, po_token=mweb.subs+토큰값 형식으로 추가
주의사항
- 토큰 유효시간: 수 시간 ~ 수 일. 자주 갱신 필요
- 계정 정지 위험: 너무 많은 다운로드 시 Google 계정이 정지될 수 있음 (서브 계정 사용 추천)
- OAuth 로그인 불가: YouTube 정책으로
yt-dlp
에서 OAuth 로그인은 사용 불가
항목 | 점검 포인트 |
---|---|
계정 사용 | 개인 계정 사용은 지양, 전용 계정 활용 |
쿠키 추출 | 시크릿 모드에서만 수행, 재사용 방지 |
토큰 공유 | 타인과의 토큰 공유 금지 (계정 연동됨) |
다운로드 간격 | --sleep-interval 옵션으로 간격 조정 |
자동화 도구 사용 | 오픈소스 플러그인만 사용, 외부 API 주의 |
YouTube의 보안 정책 강화로 인해 yt-dlp
의 사용이 복잡해졌지만, PO Token을 통해 정상적으로 고품질 다운로드를 할 수 있습니다. 수동 추출 방식 또는 자동화 플러그인을 적절히 선택해 사용하시길 바랍니다.
728x90
그리드형(광고전용)
댓글