치지직 다운로드 도구 모음은 관리자 시스템을 설계하면서부터 외부 연계 및 모니터링 작업을 위해 JSON-RPC 2.0 규격을 도입해 활용하고 있습니다. 이에 대해서는 이미 Chzzk Downloader Suite: JSON-RPC 통신 기능에서 설명한 바 있고 그 수는 많지 않지만 잘 활용하고 계신 분들이 있는 것으로 알고 있습니다.

이 기능은 TCP 기반의 소켓을 통해 접속할 수 있는 클라이언트라면 특별한 조치 없이도 JSON-RPC 2.0 규격을 활용해 현재 원격의 PC에서 동작하고 있는 Chzzk Live Downloader를 비롯해 Chzzk Video Downloader, Chzzk Clip Downloader, Chzzk Transport Finalizer와 같은 치지직 다운로드 도구를 조작하거나 현재 다운로드 현황을 확인할 수 있도록 설계되어 있습니다.
하지만 버전 1.35.0까지는 보안 상의 이유로 인해 단일 PC 내부인 localhost에서만 서로 연결이 가능하도록 막아 두었습니다. 그런데 치지직 다운로드 도구를 파헤쳐서 활용하시는 분들 중에 외부에서도 상황을 확인하고 싶다는 요청이 심심찮게 있었고, 이에 부응하기 위해 1월에 잠시 여유가 생긴 틈을 타 보안에 대해 이해가 있으신 분들이 기능을 활용할 수 있도록 버전 1.36.0부터 부분적으로, 그리고 버전 1.37.0부터 본격적으로 외부 접속을 지원하고 있습니다.
외부 접속 허용하기
먼저 외부에서 치지직 다운로드 도구 내부의 JSON-RPC 서버에 접근할 수 있도록 해 주어야 합니다. 다운로드 도구를 시작할 때 --rpc 매개 변수와 함께 --rpcexpose 매개 변수에 open 선택 사항을 지정하면 JSON-RPC 서버가 외부 접속을 인식할 수 있게 되어 모니터링 또는 기능 실행이 가능한 상태가 됩니다.
.\ChzzkLiveDownloader.exe --rpc --rpcexpose open
이 때 첫 외부 접속이라면 아래 그림과 같이 Windows Defender 방화벽이 외부 접속을 허용할 것인지 물어보므로 자세히 보기를 눌러 외부 접속(Public networks)을 선택해 주면 됩니다. 만약 이 대화 상자에서 제대로 선택하지 못했다면 Windows Defender 방화벽 설정에서 변경할 수 있습니다. 이 때 두 가지 방법 모두 Windows의 관리자(Administrator) 권한이 필요합니다.

CLI 도구를 사용하고 있지 않다면 아래 그림과 같이 관리자의 다운로드 도구 설정과 최종 처리 설정에서도 외부 접속 여부를 설정할 수 있습니다.

채널별 설정
모든 영상을 단일 프로세스가 순차적으로 다운로드하기 때문에 JSON-RPC 서버가 하나만 필요한 비디오 다운로드 도구나 클립 다운로드 도구와 달리, 상시 상주하면서 여러 개의 라이브 스트림을 확인하다가 다운로드해야 하는 라이브 다운로드 도구의 경우 각 스트리머 채널별로 JSON-RPC 서버를 가지고 있습니다.
따라서 보안을 고려하면 각 서버마다 외부 원격 접속 허용을 따로 해 주는 것이 상대적으로 더 안전합니다. 이를 위해 버전 1.37부터는 아래 그림과 같이 채널 추가 또는 다운로드 설정 변경 시 채널별로 외부 원격 접속 허용 여부를 설정할 수 있도록 개선하였습니다. (물론 다운로드 도구 설정에서 전체 허용도 가능합니다.)

인터넷 라우터 또는 공유기의 포트 전환 설정
일반적으로 인터넷 라우터나 공유기에는 여러 개의 장치가 연결됩니다. 하지만 외부에서는 마치 하나의 IP에 대해 하나의 장치만 연결된 것처럼 인식됩니다. 따라서 외부에서 라우터나 공유기 아래에 있는 특정 PC로 접근하려면 미리 어떻게 들어오겠다는 약속이 필요하며 이를 설정하는 것이 포트 전환(Port Forwarding)입니다.
다시 말하면 포트 전환은 이 포트로 들어오는 데이터를 무조건 이 장치로 보낸다라는 의미입니다. 그리고 치지직 다운로드 도구의 설정을 살펴 보면 JSON-RPC 서버도 62000과 같이 자체적인 포트를 가지고 있는 것을 알 수 있습니다. 따라서 우리가 해야 할 일은 JSON-RPC 서버의 포트를 인터넷 라우터나 공유기 외부에서도 인식하게 해 주는 것입니다.

이 설정을 하지 않으면 외부에서는 어느 PC로 데이터를 보내야 할지 알 수 없게 되므로 반드시 설정해 주어야 합니다. 그리고 대부분의 라우터는 외부 노출 포트와 내부 연결 포트를 다르게 지정할 수 있습니다. 따라서 포트만 보고 어떤 기능이 열려 있는지 알기 어렵도록 서로 다른 포트 번호를 지정하는 것이 좋습니다. 예를 들면 내부 포트 번호는 JSON-RPC 서버의 포트와 동일한 62000을 지정하고, 외부 노출 포트는 49532로 지정할 수 있습니다.
외부 PC에서 상태 확인하기
이제 드디어 외부 PC에서 치지직 다운로드 도구의 상태를 확인해 볼 차례입니다.
만약 Python이 설치되어 있고 간단하게 활용할 수 있는 분이라면 별도의 유틸리티 설치 없이 GitHub에서 저희가 제공하고 있는 예제 코드를 활용할 수 있습니다. GitHub의 samples 디렉터리에 포함되어 있는 json_rpc_test.py라는 파일을 다운로드하여 Python을 이용해 다음 그림과 같이 실행하면 다운로드 상태를 확인할 수 있습니다.
python -B .\json_rpc_test.py

Python이 설치되어 있지 않은 환경이라면 굳이 Python을 설치하기 보다는 TCP 포트 기반의 테스트 유틸리티를 활용할 수 있습니다. 여기서는 Windows, macOS, Linux를 모두 지원하면서도 간단한 Socket Tester라는 유틸리티를 사용했습니다.

스마트폰에서도 TCP 기반의 테스트 앱을 사용하면 다음 그림과 같이 내용을 확인할 수 있습니다.

입력할 메시지 관련 내용은 문서 모음의 how_to_control_chzzk_..._downloader.pdf에서 확인하실 수 있습니다.
물론 매번 이렇게 메시지를 조합해서 입력하는 방식으로 상태를 확인하는 것은 번거로운 일입니다. 애초에 이 기능은 이런 식으로 직접 사용하는 것이 아니라 제공된 기반을 이용해 새로운 도구를 만들어 사용하도록 설계된 것이기 때문입니다. 실제로 Chzzk Live Manager와 같은 관리자 앱도 이를 실체화한 하나의 예라고 할 수 있습니다.
요즘은 AI를 이용하면 간단한 앱을 손쉽게 개발할 수 있으니 여러분도 이를 이용해 본인의 스타일에 맞는 외부 연동 도구를 개발해 보시는 것도 재미있는 경험이 될 수 있으리라 생각합니다.
문의하기
치지직 다운로드 도구에 대해 궁금한 사항, 제보할 오류, 개선 요청 사항 등이 있을 때는 GitHub의 Issues 기능을 통해 제보해 주세요. 모든 언어에 대응 가능하나, 직접 대응 가능한 언어는 한국어, 영어, 일본어, 중국어이며, 다른 언어는 기계 번역을 통하기 때문에 100% 대응이 불가능할 수 있습니다.
If you have any questions, bug reports, or improvement requests regarding the Chzzk Downloader Suite, please submit them through GitHub‘s Issues feature. We can respond to all languages; however, the languages we directly support are Korean, English, Japanese, and Chinese. For other languages, responses may not be fully accurate due to the use of machine translation.
Chzzk Downloader Suiteに関するご質問、バグ報告、または改善要望がございましたら、GitHubのIssues機能を通じてお知らせください。全ての言語に対応可能ですが、直接対応可能な言語は韓国語、英語、日本語、中国語です。他の言語については、機械翻訳を通じて対応するため、100%正確に対応できない場合があります。