NOMO.asia

[!] 본 글에서는 Twitch 의 1080p 차단을 회피하기 위한 적용 방법을 설명하지는 않으며, 작동 원리만을 설명한다. 본 글에서는 해당 확장기능의 사용을 권장하거나 사용하지 말라고 권하지 않는다.


Twitch 가 갑자기 어제 공지를 올렸는데, 내용을 요약하면 한국에서 망사용료의 부담으로 인하여 원본(1080p) 품질의 재생을 막겠다는 것이다. 그리고 약 3시간 전부터 원본 품질의 재생이 불가능하게 되기 시작했다. 자세한 내용은 다음의 링크를 참고. https://blog.twitch.tv/ko-kr/2022/09/28/%ED%95%9C%EA%B5%AD-twitch-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8/

 

Twitch 가 1080p 재생을 막은 방법

Twitch 채널에 들어가면 유저는 화질별 playlist 가 담긴 파일을 아래 주소에 요청하게 된다.
https://usher.ttvnw.net/api/channel/hls/streamer_id.m3u8?allow_source=true&fast_bread=true~~(중략)~~.m3u8

위 주소에서 받아오는 내용은 다음과 같다.

이것은 화질별 playlist 들을 담은 playlist 이며 master playlist 라고도 부른다. 내용은 뭔가 복잡하지만 화질 이름이 있고 그 아래에 https://video-weaver~ 로 시작하는 것들이 있는데, 이 주소에 화질 별로 스트림 재생에 필요한 동영상 조각(.ts)들의 주소가 담겨있다.

현재 https://usher.ttvnw.net/~ 에 요청을 하는 ip 가 한국으로 필터링되면 master playlist 에서 source(1080p) 품질에 해당하는 playlist 를 제외하는 것으로 보인다. 현재 한국 ip 로 요청한 아래의 경우를 보면 위와 달리 1080p 에 해당하는 것이 아예 없는 것을 볼 수 있다.

요약하면, 단순히 플레이어에서 원본 화질 설정 버튼을 숨긴 것이 아니라 서버단에서 원본 품질에 해당하는 playlist 를 제공하지 않는 것이다. (단순 테스트 목적으로) 위 playlist 를 요청할 때 사용되는 여러 쿼리들을 바꿔가며 테스트 해보았지만 한국 ip 일 때 원본 품질을 다시 포함시킬 수 있는 방법을 확인할 수는 없었다.

 

Proxy 를 사용하는 확장기능의 동작 원리

현재 Proxy 를 사용하는 Twitch 광고 차단 툴로 1080p 를 제대로 볼 수 있다는 글들이 많이 있다.

이 확장기능의 동작 원리에 대하여 간단히 설명하면 다음과 같다.

1. 확장기능은 https://usher.ttvnw.net/api/... 에 playlist 를 요청하는 과정을 인터셉트 한 후,
2. playlist 를 저 url에 요청하는 것 대신, "확장기능 제작자가 만든, 해외에 위치한 다른 서버"에 요청한다.
3. 그럼 그 서버에서 대신 저 url 에 playlist 를 달라고 요청을 날리고
4. 서버는 playlist 를 Twitch 로부터 받아 다시 나에게 전달해준다.

Twitch 는 특정 국가의 ip 에 대해서는 중간광고를 출력하지 않는데, 이 서버는 광고를 회피하려는 목적으로 중간광고를 출력하지 않는 국가에 위치한 것처럼 ip 를 가지도록 만든다. 이 국가는 한국이 아닐테니 playlist 에 1080p 가 포함되게 된다.

 

VPN 을 사용하는 경우

VPN 을 사용하는 경우에 대해서는 자세한 설명이 필요 없을 것이다.

VPN 을 사용한 우회 방법들을 찾다보면, VPN 을 사용할 때 23.160.0.254 등의 ip 만 split tunneling 을 통해 VPN 을 적용하라는 글이 있는데, 저건 위에서 playlist 를 요청할 때 사용된 "usher.ttvnw.net" 도메인에 해당되는 ip 주소이다. master playlist 에 해당하는, 파일 사이즈가 작은 m3u8 파일만 VPN 을 통해 받아오면 되는데 굳이 사이즈가 큰 동영상 조각들 까지 VPN 을 적용해서 받아올 필요는 없기 때문이다.

 

2줄 요약

1. 화질별 playlist 를 요청하는 ip 가 한국이면 Twitch 는 1080p 를 제외시킨다.
2. 확장기능은 해외 ip 를 가지는 서버에서 playlist 를 나 대신 Twitch 로부터 받아 다시 내게 전달해준다.

 

소론

Proxy 방식을 사용하는 확장기능이 VPN 과 다른점은 오로지 Twitch 의 playlist 만을 제공하는 것을 목적으로 만들어진 서버(API)를 이용한다는 것이다. 예전에 확장기능을 뜯어봤을 때 도대체 무슨 목적으로 이런 API를 개인이 만들어서 운영하는지에 대한 궁금증이 있었는데 지금도 의문이기는 하다. 구현에 필요한 구조는 간단하고 송수신 되는 데이터도 텍스트라 얼마 되지는 않는다지만 그래도 뭔가를 따로 구축하여 관리해주어야 하기 때문이다. 해당 확장기능이 그렇다는 것은 아니지만, 만약 악용하려고 마음을 먹는다면 사용자의 토큰 값을 저장해두었다가 활용하는 것이 가능할 듯하다.

Twitch 가 위와 같은 우회 방법을 막을 수 없느냐? 모든 송수신에 VPN을 적용하는 방법을 제외한다면 충분히 아주 아주 쉽게 막을 수 있을 것이다. 물론 막으면 다시 뚫리겠지만 또 막으면 되고, 만약 내가 Twitch 라면 바로 막는 것 대신에 해당 우회 방법을 사용하는 사람을 필터링 한다음 일정 기간 후 약관 위반이나 "잘못된 접근으로 인한 시스템 부하"와 같은 핑계를 대충 들어 패널티를 주는 것도 생각해볼 수 있을 것이다. 즉, 막는 것이 기술적으로나 정책상으로나 어렵지 않지만 그냥 막지 않는 것 뿐이다. 만약 전체 사용자의 단 1% 가 우회 방법을 사용하여 1080p 를 시청하고, 720p 를 시청하는 경우보다 약 2.5배의 traffic 을 사용한다고 가정하면 적게 잡아도 1년 기준 수 억원의 비용을 더 내는 것이긴 할텐데 역시 통이 큰 아마존 형님이시다.

내 경우 별도의 우회 방법으로 원본 품질을 시청하지는 않을 것이다. 터보와 프라임을 동시에 쓰고있는 사용자로서 이 사태가 조속히 무사히 해결되기를 바란다.