독자적인 안티스팸 플러그인을 작동중입니다.

태터툴즈, 티스토리, 텍스트큐브 패밀리(?)의 EAS는 학습기능까지 갖춘 궁극의 안티 스팸시스템입니다만, 다른 서버에 접속해서 매번 확인을 해야 하기 때문에, 서버가 바쁘거나 네트워크가 느리면 댓글이나 트랙백 한번 다는데 오래 걸리는 문제가 있습니다.

그동안 이 문제에 짜증이 나 있다가, 그냥 혼자 안티 스팸 플러그인을 만들어 봤습니다. 아직 완성도가 30%정도밖에 안되는 알파테스트 버전이기 때문에, 스팸 댓글이 날라오면 숭숭 뚫릴거 같긴 합니다만, EAS에 비해 작동이 무척 빠른것은 확인되었습니다.

혹시라도 제 블로그에 정상적인 댓글이나 트랙백을 달려고 했는데 안되거나 차단되어 버린다면,
“draco 골뱅이 draco.pe.kr” 로 E메일이나 MSN이나 GoogleTalk로 피드백을 주시면 감사하겠습니다.

텍스트큐브 Draco 방문자목록 플러그인

1. 소개

현재까지 방문해서 댓글이나 방명록을 남긴 사람들의 리스트를 연도별로 정리해서 커버페이지에 표시해줍니다.

2. 특징

별거 없습니다….;; 커버페이지 안쓰시는 분들에게, 방문하신 분들을 기억해보는 장소로 활용하시라고 만들었습니다.

3. 미리보기

http://draco.pe.kr/cover

4. 다운로드

다운로드

최신버전은 1.01 입니다.

1.01 – 2008. 04. 08 – 블로그 주인의 아이디를 판독하는 루틴이 빠진것을 종횡무진님의 리포트로 발견. 추가완료.
1.00 – 2008. 04. 05 – guest_list.php에서 최초버전 컨버전.

본문이 비어있는 스팸 트랙백을 차단해버리기

오늘 무슨 날이군요. 알파벳으로만 되어 있는 영문 트랙백이 잔뜩 달렸습니다. 이상한 점은, 제가 영어중환자 플러그인을 설치하고 있었거든요. 그런데도 트랙백이 걸리더란 말입니다.

그래서 보니, 통과된 스팸 트랙백은 “본문이 없고 제목만 있다”는 점을 발견했습니다.
영어중환자 플러그인을 보니 이렇게 되어 있더군요.

function EnglishPatient_AddingTrackback($target, $mother) {
    return !preg_match('/^[\x{00}-\x{7F}]+$/u', $mother['excerpt']);
}

붉은 글자 부분이 패턴(정규식)입니다. 즉, 트랙백의 본문글에서 전부 영문인지 체크해서, True가 되면 전부 영어니까, 그걸 !로 뒤집어서 반환하는 것입니다. 알고리즘은 훌륭하지만 비어있으면 False로 처리되니까 !로 뒤집혀서 True. 트랙백이 통과되어 버리는 단점이 있죠.

제 취향대로 고쳐버렸습니다.

function EnglishPatient_AddingTrackback($target, $mother) {
    return preg_match('/[xA1-xFE][xA1-xFE]/', $mother['excerpt']);
}

preg_match 앞에 !를 떼어버리고, 정규식을 한글이 들어있는지 체크하는걸로 바꿨습니다.

이걸로 해결될려나요.

ps.

휴지통에 들어간 스팸 트랙백수. 계속 증가중…

ps.

좀더 정교한 한글 매칭 정규식
/[x{1100}-x{11ff}x{3130}-x{318f}x{ac00}-x{d7af}]+/u
다만 유니코드에서만 적용됨.

리퍼러기록을 보면 페이지를 이동시켜버리는 리퍼러 스팸

최근 블로그툴의 “리퍼러 기록”을 보면 자동으로 광고페이지로 이동시켜 버리는 리퍼러 스팸이 활동하고 있습니다.


리퍼러 로그 페이지를 보면, 저렇게 깨지는 화면이 나옵니다.


그 다음 순간 약장사 페이지로 이동됩니다.

원리를 보자면, 리퍼러주소에 iframe 태그를 삽입하는 방법을 씁니다.


해당 스팸의 리퍼러 기록

예를 들어 저 광고의 경우

http://스팸광고사이트/search/results.html?query=Buy%20viagra%20for%20lowest%20prices
%20Buy%20viagra%20Online%20Now%20%3CIFRAME%20src%3D%2F%2Fmy-dom.info%2Fm.php
%3E&search.x=34&search.y=10&search=search

그림과 같이 리퍼러 주소가 마치 ‘검색엔진을 통해 검색해서 들어온것’처럼 구조가 꾸며져 있고, 검색어 부분에 iframe태그를 삽입해 놓았습니다. 그래서 리퍼러로그정리(RefererURLBeautifier) 플러그인 같은것으로 검색어를 표시하는 플러그인을 쓸경우 iframe에 삽입된 자바스크립트에 의해 리다이렉션을 당하게 됩니다.

해결법

RefererURLBeautifier 플러그인을 1.04이상으로 업데이트 합니다. 링크 1.04에서는 htmlspecialchars()함수로 키워드를 변환시켜서 iframe태그가 사실상 무력화 됩니다.

만약 버전업을 하지 못할 이유가 있거나 더 확실히 하고 싶다면 RefererURLBeautifier 플러그인의 index.php 파일을 열어

return ($keyword) ? ‘<span style=”font-weight: bold; color: #594″>[‘.$keyword.’]</span> ‘ . UTF8::lessenAsEm($url, 70 – UTF8::lengthAsEm($keyword)) : UTF8::lessenAsEm($url, 70);

위와 같은 return 이 이루어지는 바로 위에 strip_tags()함수로 html을 제거해줍니다.

$keyword = strip_tags($keyword);
return ($keyword) ? ‘<span style=”font-weight: bold; color:
#594″>[‘.$keyword.’]</span> ‘ . UTF8::lessenAsEm($url, 70 –
UTF8::lengthAsEm($keyword)) : UTF8::lessenAsEm($url, 70);

ps.
“리퍼러 기록”뿐 아니라 “키워드 통계”에서도 리다이렉션이 작동합니다.
이것도 응급조치로 refererkeyword 플러그인의 index.php를 열어서 147줄에       

document.write(unescape(“<?php echo $keywordkey;?>”));

document.write(unescape(“<?php $keywordkey = strip_tags($keywordkey); echo $keywordkey;?>”));

로 고쳐주면 해결됩니다.

추가

텍스트큐브용 공식 패치가 발표되었습니다.

Draco Counter 3.02 with Google Chart API

1. 소개

Draco Counter는 태터툴스와 텍스트큐브의 방문자 숫자 기록을 바탕으로 그래프를 그려주며, 그래프에 마우스 포인터를 가져가 해당 날짜의 방문자 숫자를 확인할수 있고, 클릭하여 해당 날짜의 포스트를 검색할수도 있는 플러그인 입니다.

2. 특징

  • Google Chart API를 통해 그래프를 그리며, 플래시 플래이어나 GD라이브러리를 사용하지 않기 때문에 웹서버의 지원이나 브라우저의 플러그인 상황과 관계가 없이 작동합니다.
  • 그래프의 모양,색상,크기,표시 방법등을 설정할 수 있습니다.
  • 특정 날짜에 마우스 포인터를 가져가 해당 날짜의 글 수와 자세한 방문자 수를 볼 수 있습니다.
  • 그래프를 클릭하면 해당 날짜에 포스팅된 글을 검색해줍니다

3. 미리보기 & 설정 테스트 해보기

http://draco.pe.kr/draco_counter_preview/draco_counter3.php

4. 다운로드

최신버전 3.02 변경점

  • 디버그 모드에서의 경고 메시지 해결 (보고해주신 Charley Lim님께 감사드립니다.)
  • 플러그인 관리자 화면에서의 로고 개선

기타 자세한 사항은 zip파일에 포함된 ReadMe를 참고해주십시오.

Draco 카운터 “피크 잘라내기 기능” 설명

어제 Draco Counter 3.0 with Google Chart API 를 공개 했습니다. 그래프가 이뻐졌다고 하는 분이 있어서 다행이네요.

그런데 친구와 대화를 하다가 보니 “피크 잘라내기”기능이 이해가 안된다고 하더군요. 말로 설명을 해주려니…좀 애매했습니다. 그래서 이 글을 쓰고 있습니다.

블로그를 쓰시는 분들중에는, 단기간에 방문자가 치솟는 분들이 있을겁니다. 다음 블로거뉴스에서 대박났다든가, 올블로그 인기글에 올랐다든가 말이지요. 그러면 그래프는 이런식이 됩니다.

“피크 잘라내기 OFF”

다른 날도 수백명씩 방문자가 있었음에도, 그래프상으로는 ‘바닥’에서 기고 있는 것처럼 보이지요. 하루동안 너무 대박을 쳐서 비례로 그래프를 그리니까 그렇습니다. 이때 Draco 카운터의 “피크 잘라내기”를 켜면

“피크 잘라내기 ON”

방문자 수의 평균을 계산해서, 지나치게 벗어난 ‘피크’를 가지 쳐 버립니다. 그래서 전체적으로 그래프가 충실해 보이지요. 왼쪽 중간의 수치표시가 1933에서 694로 바뀌었는데, 1933은 최대치(3866)의 중간값이고, 694는 평균값입니다. 평균값을 근거로하는 “피크 잘라내기”기능을 켰다는 구분점이죠.

그리고 방문자 숫자가 일정한 분들은 “피크 잘라내기” 기능을 켜나 끄나 차이가 별로 없게 되어 있습니다.

이 기능을 끈 경우와 켠 경우는 각각 장단점이 있습니다. 기능을 끄는 것이 더 정확한 그래프를 그리는 것이며, 방문자 폭발이라는 멋진날(?)을 기념할수도 있지요. 하지만 나중에 방문자 몇명 들어오는게 구분이 안되서 그래프 구경하는 재미가 없어지면 기능을 켜시면 되는겁니다.

참고로 “피크 잘라내기” 기능은 2.2부터 추가되었습니다.

Draco 카운터 2.5

카운터스샷

소개

Draco 카운터는 블로그 방문자 기록을 그래프로 그려주며 해당일로 클릭해서 포스팅된 글을 검색할 수 있는 플러그인 입니다.


특징

  • GD라이브러리나 플래시 등을 사용하지 않고 테이블 두개를 사용해 그래프를 그리므로, 서버에서 GD를 지원하지 않거나 브라우저에서 플래시 프로그램이 없더라도 표시됩니다.
  • 표시 날짜, 가로폭, 색상 등 디자인을 바꿀수 있습니다.
  • 특정 날짜에 마우스 커서를 데고 자세한 방문자 수를 볼 수 있습니다.
  • 원하는 그래프를 클릭하면 해당 날짜에 포스팅된 글을 검색해줍니다
  • 미리보기 & 설정 테스트 해보기

    http://draco.pe.kr/draco_counter_preview/draco_counter25.php (지금은 작동 안함)

    다운로드

    다운로드

    테스트된 실행환경

    • 태터툴즈 1.1x, 텍스트큐브 1.5 (당연히 티스토리에서는 사용이 안됩니다.)
    • 텍스트큐브 내장 기본스킨들, Tiskin에서 만든 스킨 등 약 13가지 스킨 (테스트 되지 않은 스킨에서는 그래프가 일부 깨질수 있으며, 문의해주시면 수정하겠습니다)
    • 인터넷 익스플로러 6, 7, 파이어폭스 2, 오페라 9.2x

    설치 방법

    • 다운 받아 압축을 푼다.
    • 태터툴즈 plugins 디렉토리에 올린다.
    • 태터툴즈의 관리자 메뉴의 플러그인으로 가서 사용중으로 바꾸고 필요한 설정을 한다
    • 태터툴즈의 관리자 메뉴의 스킨의 사이드바에서 블로그의 원하는 위치에 설정한다.
    • 사이드바 외에 사용하거나 사이드바 기능이 없을경우 치환자 [ ##_DracoCounter_## ]를 사용한다. (치환자는 빈칸 없이 입력합니다)
  • 변경점

    ver 2.5 변경점

    • 마우스를 가져갔을때 표시 정보를 보기 좋게 정렬
    • 배경 이미지 7가지 추가
    • X축과 Y축의 글자 색상 설정 가능
    • 텍스트큐브에서 실행가능하게 수정

    ver 2.41 변경점

    • DB 식별자를 tt_로 안쓰는 사람에게 일어나는 오류 고침
    • 글자수를 체크할 때 비공개 글도 카운트 하는 오류 고침

    ver 2.4 변경점

    • 마우스 가져갔을때 표시되는 정보에 해당 날짜에 쓴 글 수를 표시.
    • 글을 안쓴 날은 눌러서 검색되지 않도록 변경.
    • 막대 넓이, 막대 간격, 배경색, 하이라이트색 등이 변경 가능하도록 변경.
    • 왼쪽이나 아래쪽 정보표시를 숨기기가 가능하도록 변경.

    ver 2.23 변경점

    • 치환자 사용 안되는 점 수정
    • 파이어폭스에서 마우스 커서를 그래프에 올려놔도 모양이 바뀌지 않는 점 수정

    ver 2.22 변경점

    • 피크인날 그래프를 잘라내는 기능 개선

    ver 2.21 변경점

    • 해당 날짜 포스팅 된 글 검색하는 기능의 URL 오류 수정

    ver 2.2 변경점

    • 그래프 막대 배경과 폭을 바꿀수 있음.
    • 피크인 날을 조절해 그래프에 지나친 빈공간이 생기지 않도록 하는 기능 추가.
    • 태터툴즈 1.1용으로 업그레이드

    ver 2.0, 1.0, 1.5 정보 생략.

  • 태터 클래식때의 사진을 위해 Random Photo Viewer 개조

    Random Photo Viewer 플러그인을 설치했으나, 두가지 문제점을 발견했다.

    1. 비공개나 예약 공개로 설정된 사진도 보여진다. 이것은 mySQL 쿼리에 and visibility != 1 를 넣어줌으로써 해결했다.

    2. 태터 클래식때 업로드했다가 마이그래이션한 사진은 Attach 디렉토리도 틀리고 DB에 있지 않아서 보여지지 않았다. 이 부분은 예전 Attach 디렉토리와 그 하부 디렉토리를 전부 검색하고 예전 DB를 검색하는 코드를 추가해서 해결했다.

    그래서 현재 클래식때의 사진 2장과 최근 사진 2장을 보여주도록 개조 완료.

    개조 완료한건 좋은데….나중에 태터툴스 1.1 나오면 어쩌지…;; 또 개조해야하나..;;