1편 링크 : https://arca.live/b/revivedwitch/58910947


이번엔 1편에서 완성한 카페 공지 가져오기 기능을 이용해 가져온 공지사항을 깨챈에 업로드 하는 기능을 구현해보도록 하겠습니다!

구현을 할껀대... 이쪽부분은 적을 내용이 많아서 적당히 기능별로 2-1, 2-2 이렇게 분할해서 적을께

그리고 기능에 대한 설명과 코드에 대한 설명, 코드사진이 있으니 모르겠는 사람은 "? 뭔소리지 암튼 뭔갈 한다는거지?"라고 하면서 그냥 읽으면됨

(저번 편에서 코드 사진이 없으니 뭔가 글이 부족해보이고 그래서 이번엔 조금씩 코드 사진을 넣어보려고 해..)




일단 우리가 글을 쓰기위해서 제일 먼저 구현해야할 기능은 로그인이야

유동으로 쓸까? 라고 생각했는데 그래도 공지를 올리는데 고닉을써야지 라고 생각해서 해당기능을 구현하게되었어


우선 로그인의 작동방식을 설명할께

우리가 아카라이브에 로그인을 하기위해서 로그인페이지에 접속을하고 계정정보를 입력한뒤에 입력한 정보를 서버에 보내고,

서버가 확인을 하고 통과를 시키면 우리는 해당계정으로 로그인이 되는거야

여기서 우리가 서버에 정보를 보내는 것을 POST request라고 해 우리는 이렇게 계정정보를 POST request로 전달함으로써 서버에 해당 계정정보를 전달할수 있는거지


그러면 로그인 기능을 구현하려면 아카라이브 로그인 페이지로 전달하는 POST request를 직접 구성해야 하는거지

일단 한번 로그인 request를 살펴보자


우리가 계정정보를 입력하고 로그인 버튼을 누르면 아카라이브 서버로 POST request가 전달되는데 이 request에 전달되는 값을 브라우저 개발자 도구를 이용하면 볼 수 있어

여길 보니 Payload라는곳에 _csrf, goto, username, password저장되어서 전달된다는 것을 볼수 있는데 

이 Payload를 우리가 필요한대로 만들면 로그인할때 정보를 전달할수 있겠구나!라고 생각할 수 있지


자 그럼 저기 Payload에 들어가는 값은 어떻게 가져오지?

username과 password는 딱보니깐 계정정보야 근데 _csrf랑 goto는 뭐지?라고 생각할수 있는데 이 2개의 값은 로그인할때 POST request를 보내는 HTML을 살펴보면 값을 알수 있어

자 이렇게 로그인 페이지의 로그인 관련 HTML을 보면 _csrf와 goto에 해당하는 값들이 적혀있는걸 볼 수 있는데, 우리는 로그인할 때 HTML을 통해서 이 값을 가져오는것으로 로그인할때 보내는 POST request에 필요한 Payload 데이터를 모두를 가지게되었어!


이제 부턴 작동 코드 설명으로 들어갈껀대 "나도 공지봇 만들꺼임!!!"이러는 사람아니면 밑에 글은 이해하려고 노력할 필요는 없음..

(근대 내가 긴글 쓴 정성은 생각해서 휙 넘기지는 말아주라....)



아무튼 해당 기능 구현 코드를 살펴보자

세션까지 설명하면 지금도 긴데 너무 길어지니깐 패스하고 그냥 서버에 요청보내는거구나 라고 생각하면서 봐바

위의 코드는 공지봇에서 사용하는 내가 만든 ArcaLive API의 Login함수야

여기서 self.SESSION.post()를 통해서 로그인 request를 보내고 로그인을 하는거야.

그럼 아까 얘기한거에서 우리 계정정보랑 csrf, goto는 어떻게 전달하냐면 post함수에 인자로 같이 넘겨주면 되는거야!

위의 코드에서 보면 data = self.CreateLoginPayloadData(self.LOGIN_URL)에서 계정정보랑 csrf, goto데이터를 전달하는거지



이런식으로 CreateLoginPayloadData()함수가 구현이 되는거야 어차피 모르는사람이 대부분일테니 간단히 설명하자면

해당 로그인 URL로 request를 보내고 HTML을 받아서 우리가 필요한 csrf값과 goto값을 받아오는 코드라고 보면 됨


이렇게 구현된 함수들을 이용해서 우리는 아카라이브에 로그인을 할 수 있게 되는거야!


이렇게 로그인을 할수 있었는데....

1편에서 얘기했던 JavaScript를 이용가능한지 확인해서 봇을 걸러내는 검증이 아카라이브에도 도입이 되어서 현재 이 코드는 사용 불가야....



하... 아무튼 로그인이 제대로 적용되었을때 작동하게 되는 다음 기능 글쓰기는 2-2편에서 다루도록 할께.


이번엔 1편보다 내용이 좀 복잡해서 누가 이걸 다 읽어줄지는 모르겠지만 아무튼 이렇게 2-1편으로 아카라이브 로그인에 대한 내용을 담아봤어

이렇게 긴 내용을 읽어줘서 고맙고 심심하면 나중에 쓸 다음 제작일기도 읽어줬으면 좋겠어


혹시나 모든 코드가 궁금한 사람은 얘기하면 깃허브 올려서 코드 보여줄께!