TCode - 트랙백 스팸 방지 플러그인 - MT용 
무버븥타입용 트랙백스팸 방지 플럭인입니다. 세겹의 중첩된 방지책으로 구성되어 있습니다. 세가지의 방법을 그 각각 방지책으로 해도 큰 무리가 없는 방법들이지만, 만드는 김에 좀더 강화해서 만들게 되었습니다.
SCode같이 GD그래픽 라이브러리를 이용해 트랙백 아이디의 끝 네자리를 이미지화했습니다. 원래는 의도치 않았지만, 겸사겸사 그 아이디어를 도입해 봤습니다만, GD라이브러리나 펄 모듈설치로 여의치 않은 경우, 사용치 않아도 문제되지 않습니다. 2.661 버젼에서도 됩니다.
1. 설치
- 압축파일을 다운 받고 풀면 TCode.pl 파일과 mt-tcode.cgi 이 생깁니다.
- TCode.pl 은 mt/plgins 에 옮깁니다.
- mt-tcode.cgi는 mt/ 밑에 둡니다. 실행 퍼미션이 있나 확인 합니다.( chmod +x mt-tcode.cgi )
- 두 파일 모두 반드시 지정된 폴더 아래 두셔야 합니다.
2. 적용예
<MTEntryTrackbackLink> 가 디폴트로 트랙백주소를 표시하는 태그입니다.
이 태그는 엠티의 기본 태그입니다. 그냥 이 상태로(아마 현재 다 이렇게 표시하고 있을 겁니다.) 플럭인 설치 후, 리빌딩만 해주면 1번의 기본 사용이 됩니다. 가장 일반적인 케이스입니다. 단순히 화면에 트랙백 주소를 Obfuscator를 사용해 찍어주는 것입니다. 2번 이하의 사용은 옵션입니다. 복잡하게 생각되시면 1번의 사용을 권합니다.
예제 페이지입니다.(클립보드 복사루틴 대신 alert로 주소만 보여줍니다.)
1. 디폴트 태그 사용 <MTEntryTrackbackLink>
그냥 디폴트 상태로 사용하면, http : / /myblog.com/mt/mt-tb.cgi/12.909122345 처럼 트랙백 주소가 표시됩니다. 각 트랙백에 고유한 번호가 기존의 트랙백아이디(12) 뒤에 소숫점을 기점으로 붙은 모습입니다. 또 이 값은 자바스크립트로 된 Obfuscator에 의해, 쉽게 스팸봇이 알아내기 어려운 형태로 삽입됩니다.
고로, 그냥 플럭인 설치후에, 별다른 탬플릿 수정없이 리빌딩만 시키고 사용해도 무리없습니다. 그냥 이것저것 짱구굴리기 귀찮으신 분들은 그냥 플럭인만 설치 후, 리빌딩하고 바로 사용하시길 권합니다.
2. 트랙백주소를 클립보드로 복사해주는 식으로 사용하고 싶은 경우(실제 적용하는 분만 보십시요)
만약 자신이 이용하는 클립보드로 복사하는 자바스크립트의 함수명이 CopytoClipborad() 라면, 기존에는 이런 식이 었을 겁니다.
<MTEntryTrackbackLink><input type="button" value="복사" onClick="CopytoClipboard('<MTEntryTrackbackLink>');">
즉, 클립보드로 복사하는 함수의 인자로 문자열(주소)를 보내야 하기 때문인데, 그 주소를 단순한 문자열로 표시하는 기존의 방법대신, 이 플럭인은 이를 자바스크립트를 이용해 계산해서 document.write()로 찍는 방식이기 때문에, 위와 같은 방식으로 탬플릿을 구성할 수가 없어집니다.
이럴 경우에 아래처럼 하시면 됩니다.
<MTEntryTrackbackLink><input type="button" value="Copy URL" onClick="CopytoClipboard(__MTTBLINK__);">
<MTEntryTrackbackLink>는 자바스크립트 루틴을 찍고 나서, 그 값을 변수 __MTTBLINK__ 에 넣어줍니다. 물론 이값은 "자바스크립트내에서만" 사용할 수 있는 값입니다. 따라서 위처럼 복사하는 함수명 안에 해당 변수명을 적어주면, 버튼을 클릭시에 주소가 복사됩니다.
<MTEntryTrackbackLink hidden="1"><input type="button" value="Copy URL" onClick="CopytoClipboard(__MTTBLINK__);">
위와 같이 hidden="1"을 삽입하면, <MTEntryTrackbackLink>가 실제로 화면에 찍히지 않고 단지, __MTTBLINK__ 변수에 주소값만 대입합니다. 현재 제 블로그의 경우, 복사버튼만 있고 화면에 주소값을 나타내지 않는데, 바로 이 경우입니다.
당연하겠지만, 위 __MTTBLINK__ 변수의 사용은 <MTEntryTrackbackLink> 보다 뒤에 나와야 할 것입니다. 태그의 적용후에 변수에 값이 할당되기 때문입니다.
(* 클립보드로 복사해주는 자바스크립트 루틴은 별도로 자기가 사용하고 있는 루틴을 이용하는 것입니다. 이 플럭인 내에서 클립보드 복사 함수루틴까지 제공하진 않습니다. blog/archives/2004/06/Mozillar에서도_가능한_클립보드_복사_자바스크립트.php 이 루틴은 IE뿐만 아니라 파폭에서도 클립보드 복사를 제공해주는 자바스크립트니 관심있으시면...)
3. GD모듈을 이용한 네자리 숫자 이미지표시 방법으로 사용하기
당장 이 정도까지로 대응할 필요는 굳이 없다 보이지만, GD모듈이 사용가능 한 분들은 이용하실 수 있습니다. 이건 말그대로 옵션입니다.
<MTEntryTrackbackLink image="1" fg="ffffff" bg="ff0000">
위와 같이 image=값을 1로 적어주면, 트랙백주소 끝자리 4자가 이미지로 표현됩니다. 또한 fg/bg는 이미지의 글자색과 배경색을 16진수로 표현할 수 있는 옵션입니다. fg/bg는 적지 않을 경우 그냥 흰 바탕에 검정 글씨로 나타납니다.
실제 모든 엔트리에 적용이전에 나타나는 모습만 보고 싶을 경우, 괜히 리빌딩올 하지 마시고, 연습 엔트리를 하나 만드신 후에 그 엔트리만 저장하고 결과보고 태그 옵션 변경 후에 그 엔트리만 다시 저장하고 하는 방식으로 시간을 절약하십시요.
4. GD모듈을 이용해 끝 네자리를 표시한 상태에서, 클립보드 복사까지 원할 경우
참 욕심도 많군요.
이럴 경우도 당근 대비합니다. 끝 네자리를 이미지로 표현했기때문에, 클립보드 복사 버튼에 의해 저장되는 트랙백주소를 끝네자리까지 표함한 완전한 주소로 클립보드에 복사하면 의미가 없어집니다. 맞나요?
<MTEntryTrackbackLink image="1"><input type="button" value="Copy URL" onClick="CopytoClipboard(__MTTBLINK__+'****');"></p>
위처럼 사용해주시면 됩니다. 즉 <MTEntryTrackbackLink에 image=1 옵션이 붙을 경우, __MTTBLINK__ 변수에는 끝 네자리를 제거한 주소값만 대입됩니다. 고로 복사하는 버튼 등에서 적절한 안내문구 삽입으로, ****로 표시된 네자리는 트랙백주소 붙여넣기 시에, 직접 입력해달라고 공지하시면 됩니다.
복잡한가요? 전 더 죽을 맛이었습니다
.
5. 끝 네자리 이미지 표시를 복사버튼 등을 클릭했을 경우에만 나타내고자 할 때
GD모듈을 이용해 각 엔트리마다 다른 숫자를 직접 계산해서 이미지로 만들어 매 엔트리 표시시 마다 전송하는 일은, 상대적으로 고가(?)입니다.
즉, 트랙백 주소자체는 트랙백을 보내고자 하는 상대적으로 소수의 블로거들에게만 필요한 값입니다. 그런데 해당 엔트리를 보는 90% 이상의 원치 않는 방문객에게도, 그때마다 계산해서 이미지를 보내는 것은 일종의 낭비일 수 있습니다. 물론 서버 능력이 되고 또 약간의 멋도 부리는 의미에선 별문제이지만요.
어쨋든, 이와 같이 GD를 이용한 네자리의 이미지표시를 버튼 클릭(주로 복사버튼이 될것입니다)시에만 나타나게 하고자 할 경우입니다.
<MTEntryTrackbackLink image="-1" ><input type="button" value="Copy URL" onClick="__show4digits__();CopytoClipbaord(__MTTBLINK__+'****');"></p>
별거 없습니다. 그냥 image=-1 옵션을 주시면, 해당 트랙백 주소가 아래처럼 표시됩니다.
http: / /myblog.com/tb.cgi/12.23456****
이후 트랙백을 보내길 원하는 블로거가 복사버튼을 클릭하면, 끝 네자리를 뺀 주소가 클립보드에 복사됨과 동시에, 텍스트로 표시된 **** 부분에 계산된 숫자 이미지가 표시됩니다. 위에서 onClick 내에 나타는 __show4digits__()함수는 플럭인에서 제공하는 함수입니다.
3. 기타
5가지 사용예가 있어서 왠지 복잡해 보입니까? 그냥 플럭인 설치하시고, 개별엔트리 리빌딩올하셔서 사용하십시요. 그래도 충분합니다.
Comments
안녕하세요. tcode 잘 쓰고 있어요. 그런데 tcode 설치하기 전에, 모르고 귀찮아서 내버려둔 스팸트랙백이 무려 16000건; tcode 설치하면서 이미 받아버린 스팸트랙백을 지우려니, 무버블타입 관리자가 감당을 못하네요. junk 검색하고 어쩌구 하는데 1만건이 넘어가니까 버벅대면서 화면출력도 못하고 멈춰버립니다.
그래서 파일을 직접 건드려서 이미 받은 트랙백을 한방에 삭제하거나 하는 방법을 없을까 궁금해서 여쭤요.
Posted by dusl , 2005년 08월 30일 아침 8:34
오늘에서야 정보를 입수하여 TCode를 설치했습니다.
더이상 트랙백스팸에 농락당하는 일이 없어야 할텐데 말이지요. 고맙게 잘 사용하겠습니다.
Posted by nuncoo , 2005년 09월 11일 새벽 3:26
질문있는데요. 제 블로그 엔트리를 대상으로 트랙벡을 쏘면 에러가 나와서요. Activity Log 에 요렇게...
Ping 'http://dusl.x-y.net/cgi-bin/movabletype/mt-tb.cgi/46.8543193' failed: Invalid TrackBack ID '46'
Posted by dusl , 2005년 09월 16일 오후 5:33
근데 이전 엔트리 다음 엔트리를 비교해보면 46이 아니라 436 이거든요... 이것 하나만 이런게 아니라. 가끔 MTEntryTrackbackLink 에 나오는 숫자가 불규칙한게 가끔 튀어나와요. 430.xxxx 가 되야 되는 문서에 43.xxx 가 나오고.... 425가 25 이런식으로 몇개가 나와요 ㅠ.ㅠ
Posted by dusl , 2005년 09월 16일 오후 5:44

아이구 먼가 모를 치명적 오륜지... 가슴이 덜컹합니다..
저 혹시 TCode어떤 걸 쓰시는지 모르겟는데요, 이번에 3.2로 업데이트되면서, 제가 새로 3.2에 맞게 코드도 정리하고 해서 공개한게 있거든요. 조금 차이가 있는게요, 이전버전은 글 제목으로 TCode를 만들었는데, 3.2부턴 Basename이라는 항목이 하나 더 생겼는데, 이 값은 제목과 상관없이 항상 일정한 값이라, 3.2에서는 이걸 이용하도록 변경했습니다. 만약 이 버전이 아니시라면, 수고스러우시더라도 새 버전을 설치해보세요. 물론 원 트랙백 아이디 아닌 뒷 TCode는 같은 글에 대해서 다른 값으로 바뀔겁니다. 하지만 이것은 아시다시피 전혀 문제가 안됩니다. 어차피 트랙백 주소는 보낼 그 당시에만 의미가 있는것이므로요... 일단 이걸 설치해보시구요, 위와 같은 문제가 또 발생함 말씀해주세요... 아직 한글로된 엔트리를 작성하지 못했는데, alogblog.com/movabletype/plugins/ 에 가시면 TCode가 있습니다.
Posted by 알록블록 , 2005년 09월 17일 밤 11:08