생일날쓰는 onsen downloader 고침기
년초에 다운로더를 만들었다 .
참고로 나는 지금까지 계속 사용 중 이었음
onsen 라디오 업로드가 2주다보니 항상 2주마다 받는데 갑자기 금요일부터 잘 안돌아가기 시작했음.
링크를따서 ffmpeg로 진입할시에 access deny가 뜨기 시작했음. 이때까지만해도 일단 고쳐야겠네 생각만하고 그냥 넘어갔었는데
나는 모르는 다른 사용자가 나한테 이거 부서졌는데 봐줄수있어요?라고 문의를 남겼다.
개발자는 아닌지 issue로 남겨놓진않고, 따로 개인적으로 나한테 문의를 남겨놨더라.
마침 12시가 지난 생일날에 이 문의를 읽었는데(문의자체는 전날에 남김) 내가 만든걸 남들이 쓰고있었다는 생각에 마냥 싱글벙글 했었다.
그래서 바로 고치기로 결심먹고 시작했음.
정상적인 파일 링크가 아닌가 확인
html 따서 m3u8파일을 보니 정상적으로 가져오고있었다. access deny인것부터 애초에 url을 가져오고 ffmpeg 명령어를 실행할때 생기는 문제였으니 당연히 잘 작동되는 부분이었다.
느낌상으론 사이트쪽에서 임의적으로 막는 느낌이 강했다.
이것이 무지성으로 리퀘스트를 날리니 봇인걸 인식하고 막는건가?
그럼 웹크롤링에 쓰는 크롬으로 우회해서 하면되나? chrome 헤더넣는것처럼 해야하나생각했지만 역시 아닌게 크롬으로 직접 링크로 들어가도 access deny가 발생했다.
일단 ffmpeg에서의 access deny는 일단 일반적인 접근자체가 완전히 막힌 접속에서 주로 일어나는데 일단 이 경우에서는 조금 상황이 다른게 적어도 온센 사이트에서 접속은 가능하게 남겨놨기에 확실하게 방법이 있다고 생각했다.
- 이게 쿠키쪽으로 넘어가서 쿠키문제인가?
- 좀 특별한방식으로 리퀘스트를 해서 key파일을 분석해야하는가? 란 생각도 했다.
슬슬 답이 없음을 느낄때쯤에 누군가가 도움을 줬는데 youtube-dl에서 리퀘스트 헤더를 추가하니까 다운이 된다는 얘길해줬다.
해결방법은 리퀘스트 헤더를 추가하는것.
리퀘스트 헤더
f12를 누르고 필요한 파일을 보면
하는말은 여기 존재하는 리퀘스트 헤더를 싹다 추가해줘야한다는것. youtube-dl 에는 리퀘스트 헤더를 추가하는 방법이 있었다.
일단은 더 고민없이 최대한 빨리 돌아가는것을 만드는걸로 생각했기에 추가적인 고민없이 일단 youtube-dl로서 정상적으로 돌아가는 명령어를 만들었다.
그리고 여기서 가장 많은 시간이 걸렸다.
헤더 추가
만든 최종적인 명령어가 이제 각 링크마다 작동하게 python code로 넣으면 된다. youtube-dl 패키지가 있다는걸 알았지만 쓸 생각까진 하지않았다.
1
command = 'youtube-dl.exe --add-header Accept:"*/*" --add-header Accept-Encoding:"gzip, deflate, br" --add-header Accept-Language:"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6" --add-header Connection:"keep-alive" --add-header Host:"onsen-ma3phlsvod.sslcs.cdngc.net" --add-header Origin:"https://www.onsen.ag" --add-header Referer:"https://www.onsen.ag/" --add-header "sec-ch-ua: Google Chrome;v=95, Chromium;v=95, ;Not A Brand;v=99" --add-header sec-ch-ua-mobile:"?0" --add-header sec-ch-ua-platform:""Windows"" --add-header Sec-Fetch-Dest:"empty" --add-header Sec-Fetch-Mode:"cors" --add-header Sec-Fetch-Site:"cross-site" --add-header User-Agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" --extract-audio --audio-format mp3 '
해결
이렇게 밤을 새고 릴리즈를 새로 올렸다.
사실 완성도 측면에서는 조금 아쉽지만 이후 추가적으로 고쳐봐야할듯하다.