NOMO.asia

문제 증상

24년 5월 17일 현재 PC 브라우저로 치지직에 접속하였을 때 Ublock 과 같은 광고 차단 프로그램을 사용하는 경우 '오류가 발생하여 채팅을 사용할 수 없습니다' 라는 메시지와 함께 채팅 연결이 끊기는 문제가 있다.

https://game.naver.com/lounge/chzzk/board/detail/4079098

해결 방법

위 공지의 설명대로 광고 차단 프로그램을 끄거나, 광고 차단 프로그램에서 치지직을 예외로 설정하여 치지직에서 작동하지 않도록 하면 광고는 나타나게 되지만 채팅 문제는 해결된다.

광고 차단 확장기능의 종류와는 관련이 없고, 아래 문제의 원인에 나타나 있는 것처럼  kr: List-KR 라는 이름의 필터를 구독하고 있다면 문제가 발생할 것이다.

문제의 원인

무엇이 원인일까 궁금하여 광고 필터를 하나씩 끄면서 테스트를 해보았는데 아래의 필터를 비활성화 하니 문제가 발생하지 않았다.  kr: List-KR에 속한 특정 필터가 문제를 발생시키고 있었다.

필터에 adjust-setTimeout 이라는 scriptlets 이 사용된 것을 볼 수 있다. 저 필터는 chzzk.naver.com 에 삽입된 javascript 코드 내의 setTimeout  함수 중에서, 특정 조건을 만족하는, callback 함수의 실행 시점을, 강제로 0.001 ms 뒤로 설정한다. 간~단히 설명하면 원래는 1초 뒤에 실행될 어떤 함수를 0.001초 뒤에 실행되도록, 그러니까 더 빨리 실행되도록 바꾼다는 이야기다. 어떤 의도에서 이렇게 한건지 잘 모르겠지만 이 필터를 만들 때 뭔가 이유가 있었겠지!

호출되는 callback 함수는 sendPing 이라고 적힌 이름처럼 핑을 보내는 함수와 관련이 있었는데, 공지에 "비정상적인 커넥션 요청"이라는 말이 있는 것 보면 핑을 너무 빠르게 보내니까 막은 것 같기도 하고... 아님 그냥 우연히 어떤 수정과 맞물려 문제가 생겼을 수도 있고... 🤔 일단 원인은 찾았으니 더 깊게 분석해보지는 않았다.

사용자 필터를 생성하여 저 필터가 동작하지 않도록 해보려고 했으나, 안타깝게도 +js 필터를 비활성화 하는 사용자 필터는 없는듯했다. 원래 동작을 확인해보니 저 시간이 1초길래, 사용자 필터로 저 값을 1초로 다시 설정해주니 문제가 발생하지 않는 것을 확인할 수 있었다.

chzzk.naver.com##+js(adjust-setTimeout, noPingPong||(e.sendPing, *, 1000.0)

여튼 별 문제가 아니어서 문제는 아마  금방 해결되지 않을까 싶다.