본문 바로가기

Development/개발 노트

광고충을 막기 위해 카카오톡 영구정지 당해본 썰 (feat. LOCO)

오랜만에 글을 적습니다..

 

지금부터 쓰는 글은 오픈채팅방을 운영하면서 필연적으로 겪었던 광고쟁이들과의 싸움을 위해 어떤 뻘짓을 했는지 작성하고자 합니다..ㅋㅋ

 

참고로 이 글에서 획득할 수 있는 정보로 카카오봇에 적용하다가 불이익을 얻어도 저는 책임이 없다는 것을 미리 밝힙니다.

 

광고쟁이들은 다양한 패턴으로 들어옵니다.

 

도배는 기본, 전체 멘션, 방장 속이기 등.. 오픈채팅방에 오래 있으면서 내보내기를 하다 보면 진짜 정말로 다양한 패턴을 접하게 됩니다.

 

이놈들은 어떤 기술을 쓰길래 남의 방에 와서 버그까지 써가면서 광고를 할까..?

 

생각을 해보니 문득 LOCO 프로토콜을 분석하는 글을 본게 기억이 났었고 github에 들어가 누군가는 만들어놨겠지 하는 심정으로 찾아봤더니 역시 선구자가 존재했습니다.

 

코드를 보니 굉장히 잘 되어 있고 파이썬이라 범용적이기도 해서 아 이거면 내가 카톡 관종을 하면서 하고싶었던걸 이뤄볼 수 있겠구나 하는 생각이 들었습니다.

 

처음엔 ping / pong 으로 메시지를 주고 받는 것부터 시작했고 친구들과 있는 방에서 명령어를 써가며 가지고 놀고 있었습니다. 

 

그 때는 광고충이 한참 덜 활동하던 시기였는데... 어느 순간 일이 터집니다.

 

광고 차단 봇을 만들고 대응하던 시절

사진에도 보이듯.. 30분에 3명이나 들어와서 광고를 해대기 시작합니다.

 

물론 저 때에는 광고충들의 패턴이 단순했습니다. 단순히 링크만 올리고 사전에 정의해놓은 필터링에 손쉽게 걸려들어줘서 아주 편했거든요.

 

직접 입력한 광고 필터링 문구들

또 이젠 도배를 엄청나게 하기 시작합니다..

 

그래서 코드를 또 짜봅니다..

또 테스팅도 해봅니다..

 

이렇게 만든 봇은 공개된 방과 침묵을 유지해야 하는 뉴스정보 공유방에 투입되어 열심히 빌런을 퇴치합니다.

 

근데.. 이 광고쟁이들은 지칠줄을 모르더니 카카오 채널 메시지를 통해 광고하지를 않나.. 일반 메시지 인것처럼 위장하여 광고하질 않나..

 

카카오 채널 메시지 유형은 그나마 특징이 뚜렷해서 대응할 수 있었지만 일반 메시지로 위장해서 광고하는 메시지는 어려웠죠..

 

그래서 봇이 직접 침투해서 판단하고 내보내는 기능을 만들기로 합니다..

 

크롬 드라이버를 띄워서 카카오 채팅방 URL을 타고 들어가 해시태그 값들을 가져와 필터링 문구에 부합하면 광고로 인식하여 내보낸다는 아이디어였죠.

 

그런데 이러한 방법도 한계가 존재하게 됩니다.

 

URL 형식을 파싱해서 들어가서 광고인지 아닌지 판단해야 했으니 이게 또 엉뚱한 사이트에 들어가서도 판단하기 시작한겁니다.

 

너무 쓸데없이 일을 잘해서 탈이라는게 이런걸 뜻하나봅니다....

 

그래서 생각한게.. "머신러닝을 도입해볼까..?"

 

이 뻘짓에 대한 글을 쓰기 위한 행동이었을 수도 있지만 그땐 나름 참신했습니다.

 

일단 스팸과 스팸이 아닌 메시지를 구분하기 위해 어떻게 해야하나 공부를 해야 했죠.

 

https://jiho-ml.com/weekly-nlp-8/

 

Week 8 - 스팸 이메일 분류기 만들기

여러분의 이메일 받은 편지함은 얼마나 빨리 쌓이시나요? 저는 이것저것 가입하다 보니깐 하루에도 홍보성 이메일이 수십 개가 오고는 합니다. 저는 앱 아이콘에 숫자가 그려져 있는 것을 견디

jiho-ml.com

뭐 이러한 블로그들을 탐색하면서 공부를 하기 시작합니다.

 

아 그러면 스팸 메시지와 스팸이 아닌 메시지에 대한 데이터를 쌓고 얘네들에게 라벨링을 하고 앞으로 들어오는 메시지에 대해 구분을 시켜보면 되겠구나 하고 봇이 속한 모든 채팅방에서 광고메시지와 일반메시지를 수집하기 시작합니다.

수집한 스팸 메시지
스팸이 아닌 메시지

한땀 한땀 라벨링을 해줬습니다.. 그렇게 한참 뻘짓을 하고나니 어느정도 정확도는 떨어지지만 분간이 가긴 가는 모델이 되더라구요.

 

베이지안 필터를 적용하고 분석한 결과

좀 부족해보이긴 했는데 그래도 오탐의 가능성이 높아 실질적으로 도입하진 못하고 잠입시켜서 운영진에게 노티만 주는 용도로 사용했습니다..

 

그러다가 이제 종합 광고 차단 봇이 완성되기도 합니다 ㅋㅋ

 

 

그러나 데이터셋의 한계와 머신러닝이라곤 깔작대면서 찍먹하던 저였기에.. 주변에 조언을 구하던 중 어느 귀인께서 혜안을 주십니다.

 

똑똑한 친구..

아이디어를 얻은 저는 바로 퇴근하자마자 개발에 착수합니다.

 

필터링 문자열 포함 점수 + 머신러닝 결과의 광고판단 점수가 50점 이상일 때 광고로 판단하도록 하니 결과가 꽤 괜찮아졌습니다.

 

다만 앞에서 얘기한 일반메시지 형태의 광고를 차단하기엔 한계가 존재했기 때문에 요것도 참고자료로 하여 운영진 방에서만 쓰이게 됩니다..

 

더 나아가서 완성을 하고 싶었지만 어느날..

 

영구정지..두둥

이용자 보호조치를 받으며 광고충과의 싸움은 The End가 됩니다.

 

카카오의 탓을 하려는 건 아닙니다. 카카오 시스템에 영향을 줄 수 있는 행위를 한거고 저는 그에 대한 합당한 제재를 받았기 때문에 그렇게 막 억울하지는 않았습니다. 

 

다만 이러한 노력에도 광고가 계속해서 들어온다는 사실이 너무 안타까웠습니다.

 

지금은 카톡을 볼때마다 광고가 들어오면 바로 내보내기하고 가리기에 끝나지만 나중에.. 정말 나중에 LOCO가 사용자들에게 선의적으로 이용될 수 있다면 저는 다시 광고 차단 봇을 만들 것 같습니다.

 

주저리 주저리 글 읽어주셔서 감사합니다.ㅎ