만들게 된 계기
카카오톡 오픈채팅방에는 온갖 광고봇이 이 방 저 방 떠돌며 스팸을 퍼뜨린다. 특히 주식, 코인 리딩을 해주겠다며 다른 방 링크를 올리는 것을 오픈채팅방에 들어가 있는 누구나 한번쯤은 보았을 것이다.
몇몇이 봇을 유료로 사고파는 것 같은데 영리 목적으로 채팅방을 운영하는 것이 아닌 개인은 사용하기에 부담되기 때문에 공부 차원에서 직접 만들어 보았다.
왜 카카오 오픈 API를 사용 안했나?
결론부터 얘기하면, 카카오톡 오픈 채팅방 관련 기능은 카카오에서 API로 제공하지 않는다. 즉, 카카오에서 오픈채팅 API를 제공해주기까지 하염없이 기다려야 한다.
광고 강퇴관련 api 봇 - FreeBoard / 자유게시판 - 카카오 데브톡 (kakao.com)
카카오톡 오픈채팅 api 제공 계획 여부 문의 - REST API - 카카오 데브톡 (kakao.com)
오픈채팅 생성 api 는 없는건가요? 오픈채팅을 생성하고 해당 링크를 리턴하는 api 요 - REST API - 카카오 데브톡 (kakao.com)
위 링크에서는 각각 오픈채팅 API 기능은 제공하지 않는다는 카카오 개발자의 답변을 확인할 수 있다. '16년도에 카카오 내부에서 오픈채팅 관련 API 개발이 후순위로 밀렸다는 기록도 있다.
위 링크는 카카오톡 메시지 API 문서이다. 실제로 해당 기능이 없다.
이미 누가 만들지 않았을까?
일단 오픈채팅방 서비스도 나온지 시간이 좀 지났고, 나와 같은 니즈를 가진 사람들이 분명 있을 것이라 생각했다. 그래서 구글링 해보니 PC 카카오톡을 리버스 엔지니어링해서 봇을 만들고 유료로 파는 사람이 있었다. 물론 이는 불법이고 방법 또한 찾을 수 없었다.
결국, 다른 방법을 찾다가 재밌는 유튜브 영상도 찾게 되었다.
카톡 광고를 막아주는 개발자분께 300만원을 드립니다! #2 - YouTube
오죽 답답했으면 이 분이 스팸 잡겠다고 현상금까지 내걸었을까...
다른 목적의 봇 사례
[카카오톡봇] [초급] 단순 자동응답봇 만들어.. : 네이버블로그 (naver.com)
위 블로그에서는 메신저봇이라는 안드로이드 앱을 활용하여 봇을 만드는 방법을 소개하고 있다.
하지만, 이 방법은 루팅된 안드로이드 폰에서만 가능하고 아이폰은 일체 불가능할 뿐더러 가장 중요한 오픈채팅방 유저 추방, 메시지 가리기와 같은 행위는 불가능하다.
고급 개발자용
카카오톡 봇 만들기 ( python, pc 카톡, 비활성 ) - 1편 :: airfox1의 개발 블로그 (tistory.com)
위 블로그에서는 Windows PC 카카오톡 프로그램을 직접 핸들링하는 방법으로 봇을 만든 것을 공유했다. 필자도 해당 게시글의 코드를 전부 클론하며 웹페이지에서 특정 내용을 스크레이핑 후 메세지를 자동으로 보내는 봇을 만들어봤는데, 결국 Windows API에 대한 이해가 전무하다 보니 정작 중요한 오픈채팅 내 강제추방, 채팅 숨기기 기능을 핸들링하는 방법에서 막히고 다른 방법을 찾게 되었다.
만약, 본인이 Windows API에 대한 이해가 어느 정도 있고 완벽한 봇을 만들고 싶다면 MS에서 만든 spyxx.exe로 오픈채팅 윈도우 속성에서 각 핸들을 파악 후 구현하는 것을 추천한다.
결론 및 매크로 코드
가장 비효율적이지만 초간단한 방법이 매크로라고 판단했다. 구글링을 조금 해보니 광고 잡는 매크로를 고도화해서 파는 업자도 발견할 수 있었다... 그 업자의 매크로가 동작하는 영상을 보고 간단한 스팸 메시지 자동 가리기 매크로를 클론해보았다.
매크로 실행을 위해서는 사전에 오토핫키를 설치해야 한다. 아래 링크에서 Current 버전을 설치하면 된다.
매크로 스크립트는 매우 단순하다. 아래 소스코드를 그대로 복사해서 ahk 파일로 만들고 실행하면 된다.
기능을 간단히 설명하면, F1을 누른 뒤 계속 감시할 카카오톡 오픈채팅방에 마우스 커서를 갖다대면 자동으로 계속 휠을 내리며 스팸이 포함된 메시지가 올라왔을 때 가리기 하는 것을 반복한다.
참고로, 소스코드 5번 라인의 Image.png는 생성한 ahk 파일과 같은 경로에 있어야 에러 없이 정상적으로 동작한다.
아래와 같이 채팅방에서 잘 작동하는 것을 확인할 수 있다.