Rev. 2.73

'갑자기 내 블로그의 RSS는 몇명이나 구독하고 있을까?'하는 의문이 생겨 구글링하다가 재미있는 사실을 발견 했습니다. 구글은 RSS를 크롤링 할 때 UA(User-Agent)에 다음과 같은 정보를 던집니다.

User-Agent: Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 4 subscribers; feed-id=1794595805790851116)

크롤러의 이름과 URL, 구독자 수, 그리고 피드ID를 알려 주는 것이죠. 여기서 피드ID는 블로그 운영 중에 RSS URI를 변경한 경우에 여러개가 생겨날 수 있는데 이를 구분하기 위한 것입니다. 아무튼, 혹시나 다른 RSS 크롤러들도 위 룰을 따르고 있는지 살펴보니, 구독자 수를 남기고 퍼가는 크롤러들이 상당수 있었습니다. Feedfetcher-Google(구글 리더), HanRSS, Bloglines, Fastladder 등이 subscribers 정보를 가지고 있더군요. 그래서 자동으로 갱신되는 구독자 수 모니터링 위젯을 만들어 보기로 마음먹었습니다. 막상 저지르고 보니 대부분 서버단 작업이여서 상당히 곤욕스러웠어요. 작업 내용을 요약하면 다음과 같습니다.

1. 종전의 rss로 접근 URI를 모두 rss.php로 포워드한다. 주의, 리다이렉트한 경우 UA값을 손실 함.
2. UA 정보를 가져오기 위해 파싱된 rss.xml 파일을 rss.php 파일에서 불러온다.
3. rss.php에서 가로챈 UA를 DB에 로깅한다. 하루동안의 데이터만 쌓이도록 쿼리.
4. MySQL에 새 테이블을 추가한다.(index, useragent, regdate 로 구성된 간단한 테이블)
5. Ajax로 접근할 subscribe.php파일을 생성하고 필요한 파일들을 include한다.
6. DB에서 긁어온 UA정보를 토대로 다양한 필터링을 통해 여러가지 통계자료를 산출 한다.
7. 산출한 자료를 JSON으로 파싱한다.
8. JSON을 불러와 아래와 같은 출력 결과물을 만든다.

AjaxSubscription

위 결과물은 하루간 쌓인 실제 데이터(약 3-4000행)를 산출한 것입니다. Ajax를 통해 호출하고 30초마다 자동 갱신됩니다. subscribers 정보를 제공하는 크롤러는 10여종이며, 나머지는 "알 수 없는 구독기"로 분류했습니다. 로봇을 제외하고도 자그마치 50여종이나 되는군요. 어쨋거나 완벽한 RSS 구독자 수를 알아내는 것은 불가능 하겠지만 매우 신빙성 있는 일부분을 한눈에 알아볼 수 있게 되었습니다. UA에 subscribers를 정보를 작성하는 것은 RFC에서 권고하고 있는 내용이라고 하네요. 국내 RSS서비스 중에는 HanRSS밖에 없습니다. 앞으로 이 권고를 따르는 RSS 리더 웹 서비스가 더욱 많아졌으면 하는 바램입니다.

덧, 여기저기 퍼다 쓴 것이 너무 많아 php소스를 공개하지 못하는 점 양해 바랍니다.

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar