본문 바로가기 메뉴 바로가기

kakao 블로그 본문

카카오톡 URL 미리보기와 다음 웹검색 연동에 대한 기술리포트

2016.06.02 09:27

안녕하세요, 카카오입니다.
먼저, 카카오톡 'URL 미리보기'를 위해 수집된 웹페이지 주소 (URL)를 다음 웹검색과 연동한 것 관련 이용자 분들께 심려를 끼쳐드린 점 사과 드립니다.
[바로가기] 카카오톡으로 공유된 웹주소의 다음 웹검색 활용에 대해 말씀드립니다.

카카오톡에서 주고받은 URL이 다음 검색에서 노출되었다는 언론 보도와 관련하여 기술 구현 방식을 설명드리고자 합니다. 저희는 품질 개선을 위한 기술적 구현이라고 생각했으나, 이용자들을 불안하게 한 점 송구하게 생각합니다. 신중하지 못한 결정을 돌아보며 어떤 목적으로 어떻게 진행했는지 저희 서비스 과정을 세밀하게 들여다봤습니다.

URL 미리보기 기능은 이렇게 구현했습니다

카카오톡의 서버는 메시지를 주고받는데 사용하는 메시징 서버와, 친구 목록 등 메시지 외의 기능을 제공하는 API 서버를 독립적으로 분리해서 운영하고 있습니다. 카카오톡의 URL 미리보기 기능은 카톡 앱과 API 서버, 그리고 카카오의 공통 플랫폼인 스크랩 서버간의 연동을 통해 구현되며, 메시징 서버와는 관련이 없습니다.

스크랩 서버는 카카오가 제공하는 서비스에서 URL에 대한 미리보기 정보를 요청할 때 사용하는 공통 플랫폼으로, 웹사이트의 대표 이미지와 제목, 그리고 요약 정보를 추출하는 역할을 합니다. 스크랩 서버에서 추출하는 데이터는 다음과 같습니다.

og:title, og:description, og:image, og:type, og:url, og:audio, og:determiner, og:locale, og:locale:alternate, og:site_name, og:video, twitter:title, twitter:description, twitter:image, twitter:image:src, twitter:url

위 메타정보가 없는 웹문서의 경우 본문 첫번째 텍스트의 일부를 description으로 저장합니다.

이 정보가 필요할 때마다 웹사이트에 접속해서 데이터를 추출하는 방식으로 구현하면 해당 웹서비스에 불필요한 부하를 줄 수 있기 때문에 한 번 추출한 정보는 1시간 정도 캐시에 저장하고 있습니다. 카카오가 제공하는 서비스 중 스크랩 서버를 활용하고 있는 서비스는 다음 팁, 카페, 브런치 등이 있습니다.

카카오톡의 URL 미리보기 기능을 도식화하면 다음과 같습니다.

(1)(2) 이용자 A가 이용자 B에게 대화를 전송하면, (3) A와 B의 카톡 앱은 각각 서버로부터 받은 메시지에서 정규 표현식을 이용해서 URL을 포함하고 있는지 확인합니다. 메시지 안에 URL이 존재한다면 그 URL을 따로 떼어내 앞서 설명한 API 서버에 전송합니다.

API 서버에서 사전에 지정한 패턴으로 1차 필터링을 거치는데, 이 패턴은 대중적으로 사용하는 클라우드 / 노트 같은 개인의 데이터를 저장하는 서비스에서 생성한 URL들로 구성되어 있습니다. 패턴을 포함하는 URL이라면 카카오톡 앱으로 오류 메시지를 반환하고, 이 때 카카오톡 앱은 미리보기 말풍선을 그리지 않습니다.

특정 패턴의 URL은 말풍선을 그리지 않음

그리고 스팸 / 불법 / 악성 URL 데이터베이스로 2차 필터링을 수행, 해당할 경우에는 경고 이미지를 노출합니다. 이용자가 이 링크를 클릭했을 때는 '주의가 필요하다'는 경고 팝업을 띄우고 있습니다.

스팸 / 불법 / 악성 URL을 클릭하면 경고 팝업이 나타남

패턴을 이용한 1차 필터링, 스팸 정보를 이용한 2차 필터링을 통과한 URL이면, (4) API 서버는 스크랩 서버에 ADID와 URL을 parameter로 넘겨서 정보를 요청합니다. 스크랩 서버는 요청받은 URL의 대표 이미지와 제목, 요약 정보가 캐시에 저장되어 있는지 확인하고, 캐시에 있으면 그 데이터를, 그렇지 않으면 (5) 웹페이지에 직접 접속해서 데이터를 추출하고 캐시에 저장한 다음 반환합니다.

스크랩 서버가 제공한 요약 정보는 (6) 카카오톡 API 서버를 거쳐 카카오톡 앱으로 전달되고, 카카오톡 앱은 받은 정보를 바탕으로 말풍선을 그림으로써 URL 미리보기 기능을 완성합니다.

웹검색은 URL을 이렇게 활용했습니다

웹검색은 인터넷에 존재하는 웹문서를 수집하여 검색 결과를 제공하는 서비스입니다. 웹검색의 품질은 얼마나 많은 웹문서 URL을 빠르게 수집하느냐가 중요하며, 다음 웹검색은 웹문서 수집을 위해서 Daum, Daumoa 라는 2개의 크롤러(웹문서 수집 로봇 프로그램)를 사용하고 있습니다. 다음 웹검색 크롤러는 http://www.robotstxt.org에 명시된 로봇 규약을 준수하며, robots.txt 파일을 설정하여 웹문서 수집을 제한하는 사이트는 수집하지 않습니다. 다음 웹검색 크롤러의 User Agent는 아래와 같으며, 로봇 규약을 설정하여 크롤러의 수집을 제한할 수 있습니다.

Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daum 4.1
Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daumoa 4.1

크롤러가 인터넷을 돌아다니면서 웹문서를 수집하는것은 오랜 시간과 많은 노력이 필요합니다. 하지만 seed URL을 제공받을 수 있다면 이같은 시간을 단축할 수 있고, 더 많은 웹문서를 확보할 수 있어서 검색품질 향상에 도움이 됩니다. 카카오의 공통 플랫폼인 스크랩 서버는 양질의 URL을 많이 확보하고 있을거라는 점에 착안해서 스크랩 서버의 URL을 크롤러의 seed URL로 사용, 검색 품질을 높이기로 결정했습니다. 스크랩서버의 URL을 검색 결과에 반영하는 과정은 다음과 같습니다.

크롤러는 초기 seed URL의 링크를 탐색하며 웹문서를 수집하는 것이 일반적이지만, (1) 이용자가 직접 수집을 요청하거나 운영자들이 어드민 툴에서 등록한 URL의 웹문서를 처리하기도 합니다. 여기에 검색 품질을 향상시키기 위해 공통 플랫폼인 스크랩 서버를 URL 출처로 추가했습니다.

수집한 URL은 (2) 초기 필터링 과정을 거치는데, 이미 색인되어 있거나 / 성인 사이트이거나 / Youtube URL이거나 / 블로그, 다음 카페 URL 등일 경우 수집 대상에서 제외합니다. 그리고 검색 DB에 웹문서가 기준 건수 이하로 등록되어 있는 도메인은 검색 데이터로 가치있는 문서를 충분히 가지고 있지 못하다고 판단해서 역시 수집 대상에서 제외합니다. 두 가지 초기 필터링을 모두 통과한 URL은 (3) 크롤러가 수집할 웹문서 후보를 모아놓는 URL Farm에 저장합니다. 이후 크롤러는 (4) URL Farm에 저장된 URL을 로봇 규약을 준수하면서 수집할 수 있는 웹문서인지 판별하고 다음 웹검색 시스템을 통하여 검색 DB에 저장합니다. 이제 (5) 이용자가 다음에서 검색을 하면 검색 DB에서 적합한 문서들을 찾아 검색 결과를 보여주게 됩니다.

다시 한 번 사과드립니다

카카오톡은 URL 미리보기 기능을 제공하기 위해 스크랩 서버를 활용했고, 다음 웹검색은 검색 결과의 품질을 높이기 위해 스크랩 서버의 URL을 사용했습니다. 카카오톡과 검색을 직접 연동하지 않았고, 개인 정보 없이 URL 만을 이용했으며, 로봇 규약을 준수하면서 검색이 허용된 문서를 수집했기 때문에 문제가 없을 것이라고 판단했습니다. 그러나, 검색을 목적으로 추출한 정보가 아니기 때문에 공개를 의도하지 않은 웹문서의 URL이 포함될 가능성을 깊이 생각하지 못했습니다. 잘못 내린 결정이었고 많이 부족했습니다. 저희의 잘못을 인지한 즉시 스크랩 서버의 검색 연동을 중단하였으며, URL은 모두 검색에서 제외, 삭제했습니다.

앞으로도 이용자들께서 우려하실만한 부분은 없는지, 저희가 놓친 부분은 없는지 두 번 세 번 살피고 신중하게 판단하겠습니다. 안심하고 사용하실 수 있도록 더 노력하겠습니다. 죄송합니다.

댓글 갯수
지랄… 2016.06.02 10:28

하, 그래서 채팅방에 이것저것 덕지덕지 붙여놓고는 우린 프라이버시 지킨다 일개 기능 잘못이다! 하고 홍보한 거에요? 꼬리자르기 참 쉽다 그죠?
해결책 알려드릴게. 아무 부가기능 없고 채팅-이모티콘-연락처관리-PC연동만 되는 카카오톡을 내놓으세요.

쓰지마 2016.06.02 15:41

쓰지마

.. 2016.06.03 02:10

이건 진짜 그런 기능만 있는 메신저를 쓰시는게 답.
친구들이 다 이걸 쓴다고?

그렇다면 당신이 특이한게 답.

읍읍읍 2016.06.02 10:34

위엣분 공짜로 메신저 쓰면서 이거달라 저거달라 ㅋㅋㅋㅋ
잘못된거긴하지만 여기에 대고 수익모델 원천차단한 카톡을달라니... 회사는 공짜로 운영되나

진심 2016.06.02 11:07

진심 첫번째 덧글분은 그냥 양심이 없네요 공짜로 쓰는 주제에 유료화되면 돈주고 살것도 아니면서 ㅋㅋㅋ
여튼 해명 감사합니다 궁금증이 풀렸어요

ㅇㅇ 2016.06.02 11:12

블로그 글씨가 왜이래요?? 색깔도 회색에다가 폰트도 깨지고; 눈아파죽겠네

김씨 2016.06.02 14:07

결혼식 청첩장을 직접 만들고 있습니다.

KakaoTalk 채팅창에서
스크랩 된 내용은 URL과 추출된 meta tag정보는
얼마의 주기로 갱신되나요 ?

위의 내용을 참고하여
원하는 내용이 KakaoTalk 채팅창 '미리보기 기능'으로
표출될 수 있도록 확인 중인데,

갱신이 바로 바로 되진 않는 것 같고,
그렇다고 domain이나 url을 시시 때때로 변경하기도 애매하고 그러네요

서명석 2016.06.02 14:13

상세한 설명 감사합니다. 이제 조금 카카오의 입장이 이해가 됩니다.
아쉬운 점은 다음 검색 봇(Daumoa 인가요?) 이 조금만 더 성능이 좋았더라면 이런 일 자체가 아예 없었을 것 같은 점이 아쉽습니다. 또 앞으로 검색 봇 성능이 좋아진다면 좋겠습니다.
더하여 네이버나 구글같이 유저가 사이트의 에러나 수집 상황을 투명하게 파악할 수 있는 웹 마스터 도구 같은것도 제공 되면 좋겠습니다. (네이버도 이 부분은 구글 따라만든것 같긴 합니다) 특히 개인적으로 문제를 겪고 있는 부분은 https로 시작하는 주소는 아예 인식을 못하는 것 같던데, 사이트 등록 시에도 http:// 로만 무조건 받고 있는 것 같은부분도 조금 아쉽네요.

ㅎㅎ 2016.06.02 14:43

김씨 //
본문 내용에 1시간 정도 캐시된다고 써있잖아
애매한건 바로 너의 독해력

블루밍 2016.06.02 15:41

미리보기를 구현하기 위해서 스크랩서버에 등록을 했고, 스크랩서버에 크롤러의 소스URL로 사용했다..그래서 검색에 노출이 되었다 .. 머 이런 해명같은데요.. 그리고, 그러한 일련의 행위들이 개인정보침해라는것을 미처 인지 하지 못했다..
참 궁색한 변명으로 들리네요 .
카카오톡에 그많은 인재들은 다 뭐하고 있었나요?? 놀고 있었나요??
충분히 예측가능했고, 기술적인 부분을 구현할때 개발자들은 이미 이러한 부분을 알고 진행했을텐데
내부적으로도 문제에 대한 제기가 됐을거고, 그냥 밀어 붙이자식이지 않았나?? 사용자들이 눈치를 못첼테니까..

차라리 변명을 하지 말고 , 무조건 머리 숙여 사과했더라면, 조금더 설득력이 있었겠습니다.
국민메신저로써 조금은 신중히 판단하고, 이익에 급급하지 말고, 천천히 신뢰를 쌓아 나가기를 바랍니다.

웃기고있네 2016.06.02 20:22

당신들이 정한 약관을 위반했으면서 실수였다???
이건 무슨 개소리인가요
변명도 말이되는 소리를해야지 트위터로 이제안할께 미안 이짓거리 해놓구선 결국 기술설명글이 메인이고 사과글은 말도안되는 변명으로 깔짝?
이럼 중대한 사안을?? 진짜 노답이네

에휴 2016.06.02 22:07

상세하게 설명하고 사과하면 변명한다 뭐라하고
사과만 하면 불안하네, 감청이네, 근거 없는 소리나 점점 더 확장돼서 나돌고,
이 정도 설명하고 사과 했으면 되지 않았나.
어쩌라는건지 모르겠다. 대표가 어디 광장에 나가서 돌이라도 맞아야 하나..
이렇게 써봐야 어그로니 주주니 알바니 직원이니 따위 소리나 하겠지만
기사와 블로그에 달린 댓글들 보다가 답답해서 쓴다.
특히 저 첫 댓글 참...

2016.06.03 00:34

문제는 계약 위반이라니까?

왜그랬어~~ 2016.06.03 16:17

회사가 점점 커지고.. 여러 다양한 사람들이 입사하고... 부서간의 이해관계가 생기죠... 그러면 의사소통 부재가 생기고
보고할거 안할거 가리게 되고... 그러다 보니 이런일이 생기는 겁니다...
그리고... 변명이 길어지니 사과를 해도 가려지네요.....카카오 스탭분들 긴장하면서 일하세요...

다음 2016.07.06 21:53

다음블로그에는 미리보기 링크태그가 적용이 안되네요--;;

TOP