치지직/치지직.개발자모드.

치지직 오토핫키로 하고싶은게 되려는지....

몽브르 2024. 3. 26.

치지직 관련 개발?

치지직이 아직은 오픈API를 내놓지도 않고 내놓을 계획도 없다고 함에도 불구하고 많은 시청자들과 개발자들이 바쁘게 이곳저곳 뜯어보고 계시네요 ㅋㅋ 꽤 다양한 정보도 확인가능하고 비공식으로 API를 제작하신 분들도 계실정도 ㄷㄷㄷ

손놓은지 오래된 코딩이라 사실 하나하나 다 공부중이라 쉽지가 않습니다 ㄷㄷ

 

 

 

현재 목표

더블 클릭 으로 간단히 실행 가능한 채팅 크롤러

로그인 정보를 받아 내채널에 명령 입력이 가능한 채팅창겸 크롤러

 

 

 

이미 개발이 완료되어 사용 가능한 크롤러들이 있긴한데 실행해보려면 개발환경을 요구 하거나 로그인 관련된 쿠키값을 따로 입력해줘야 하는 어려움이 보여 이런걸 해결할 방법이 있을까 알아보고 있습니다.

 

 

 

왜 오토핫키로?

현재 다른 개발환경을 구축하는데 어려움이 있고 오토핫키가 꽤 손에 익었다고 생각해서 건드리기 시작했는데 어려운 부분이 너무 많습니다 ㅋㅋㅋ 시작을 잘못 했다 싶긴한데 그래도 시작을 했으니 뭐라도 하나 만들어 보기는 해야겠습니다.

 

 

 

필요 지식

1. 채널 정보 수집

2. 채널에 로그인 한채 정보 수집

3. 채널 채팅창에 웹소켓 연결

4. 소켓으로 전송되는 정보 수신

5. 수신된 정보를 화면에 출력

6. 출력된 내용을 txt파일로 기록

 

 

 

똑똑한 사람들이 참 많다

https://chzzk.naver.com/{streamer}

방송채널 주소 가장 끝부분이 스트리머 아이디를 배배꽈서 만들어둔 문자입니다

 

 

https://api.chzzk.naver.com/polling/v2/channels/{streamer}/live-status

라이브제목, 방송상태,카운트,19세여부,채팅채널아이디,카테고리타입,라이브카테고리 등의 정보를 확인 할 수 있습니다

여기서 chatChannelId 를 확인해야 나중에 다른 정보가 확인 가능합니다.

 

 

https://api.chzzk.naver.com/service/v1/channels/{streamer}

채널아이디,채널이름,채널타입,팔로워수,구독여부 등의 정보를 확인 할 수 있습니다.

channelName을 확인 할 수있습니다. 닉네임이랑 같으니 크게 의미가 있을까 싶기는 합니다.

 

 

https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chatChannelId} &chatType=STREAMING

엑세스토큰,엑스트라토큰 등의 정보를 확인 할 수 있습니다

위에서 확인한 chatChannelId가 쓰입니다. 소켓에 연결할때 필요한 모양인데 아직 거기까지는 진도를 못나갔습니다 ㄷㄷ

 

 

https://comm-api.game.naver.com/nng_main/v1/user/getUserStatus

로그인 된 상태로 해당 api에 접근하면 유저 아이디 해시 정보를 확인 할 수 있습니다.

아직 이부분을 해결을 못했습니다.

 

 

 

해결한 부분

우선 가장 기본적인 사항인 url을 입력하고 Json 정보를 받아서 배열로 풀어 원하는 값만 뽑아내는데까지는 해결을 했습니다. 로그인을 안하고 원하는 정보값을 얻어내는건 크게 어려움이 없었습니다.

m_chatChannelId(streamer){
url := "https://api.chzzk.naver.com/polling/v2/channels/" streamer "/live-status"

        headers := { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" }
        response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
        response.Open("GET", url)
        for key, value in headers
            response.SetRequestHeader(key, value)
			response.Send()
        responseBody := response.ResponseText
			 
				
		jsonObj := Json.Load(responseBody)
		chatChannelId := jsonObj["content"]["chatChannelId"]		
	return chatChannelId
}

간단한 예제로 chatChannelId를 가져오는 방법입니다. 쿠키값을 활용하지 않는 한도내에서는 동일한 방법으로 정보를 얻을 수 있었습니다. 그냥 웹페이지 크롤링하고 비슷하네요.

 

 

 

Json파일을 편하게 읽어오고 활용하기 위해서 JSONParser를 사용하셔야 합니다. stremer값을 받아서 url을 완성하고 응답을 요청하고 내용을 받아 텍스트로 저장한뒤에 Json으로 받아서 원하는 부분을 리턴한걸로 끝납니다. 뭐 잡스럽게 없어도 되는 부분이 포함된지는 모르겠지만 일단 정상적인 구동은 됩니다. 똑똑하신 분들이 만들어두신 소스코드를 열심히 뜯어봐가면서 크롬에서 헤더값 쿠키값 읽어가면서 해보고 있습니다.

 

 

 

해결 못한 부분

로그인 된 상태로 들어가서 userIdHash 유저아이디 해시 정보를 가져와야하는데 이건 로그인이 되어있는 상태에서만 확인이 가능합니다. 그래서 로그인 상태를 확인해주는 쿠키정보인 NID_AUT, NID_SES를 입력을 해줘야 하는데... 이거 어떻게 하는건지 잘 모르겠어서 꽉 막혀있는 상태입니다 ㅋㅋㅋ

 

쿠키에서 NID_AUT, NID_SES까지는 추출을 해왔는데 접근할때 이이정보를 가진 쿠키와 함께 접근해서 정보를 받는 방법을 전~혀~ 모르겠습니다 ㄷㄷㄷ 일단 다른분들이 만들어 두신 소스들을 조금 더 열심히 뜯어보면서 공부해야 겠습니다.

 

 

로그인 상태에서 정보를 가지고와서 소켓에 연결하는것까지 하면 얼추 모양새는 나올것 같은데 조금 더 열심히 해봐야겠습니다.

반응형

추천 글