사이드바 영역으로 건너뛰기

그리즈몽키 활용

그리즈몽키(Greasemonkey)는 Firerox의 부가 기능 중 하나로서, 자바스크립트를 이용해 웹 페이지의 내용을 자유롭게 변경할수 있게 합니다. 이번에는 연습삼아 진보블로그 홈에 있는 새로 쓴 포스트와 참세상 트랙백에서 특정 사용자가 작성한 글을 감추는 기능을 만들어 보았습니다. 이 기능을 선택한 이유는 제가 처음으로 접한 그리즈몽키 활용 사례이기 때문입니다. KLDP에서 몇몇 사람들이 뭇 사람들의 눈살을 찌푸리게 하는 글을 여럿 쓴 일이 있는데, 그 때 그리즈몽키를 이용해서 불쾌한 내용을 읽지 않은 분들이 있었습니다.

이러한 방법이 있다는 정도로 읽어 주셨으면 합니다. 인터넷을 검색해 보시면 더 재미있는 활용 사례들도 찾으실 수 있습니다. 대답을 보장해 드리지는 못하지만, 문제가 있거나 의견이 있으시면 덧글이나 트랙백을 남겨 주세요.


1. Firefox 설치

http://www.mozilla.com/firefox/

2. Greasemonkey 설치

https://addons.mozilla.org/ko/firefox/addon/748

3. 새 스크립트 만들기

일단 진보 블로그 홈에 들어갑니다.
화면 오른쪽 아래에 있는 원숭이를 누른 다음, 새로운 유저 스크립트를 선택합니다.



그 다음에 다음과 같이 입력합니다. 동작할 페이지 빼고는 다르게 넣으셔도 됩니다.



그러면 다음과 같은 화면이 나타날 것입니다.



4. 편집

다음 내용을 복사해서 붙여 넣습니다. 메모장에 자동으로 들어가 있는 내용은 지우셔도 됩니다. @로 시작하는 줄들은 처음에 입력한 것에 맞추어 바꾸어 줍니다.


// ==UserScript==
// @name           Troll-Free Jinbo Blog
// @namespace      http://blog.jinbo.net/envia/
// @description    Troll-Free Jinbo Blog
// @include        http://blog.jinbo.net/
// ==/UserScript==

// Special thanks to KLDP!

// Enter the names of the trolls in the brackets.
// Examples:
// troll = ["troll"];
// troll = ["troll 1", "troll 2", "troll 3"];
troll = [];

var post = document.getElementsByTagName("dl")[0].childNodes;

for(var i in post)
  if (post[i].nodeType == 1 && post[i].nodeName.toLowerCase() == "dt")
    for (var j in troll)
      if (post[i].firstChild.firstChild.firstChild.nodeValue == troll[j])
        post[i].style.display = "none";

var cham = document.getElementById("chamtrb_list").childNodes;

for(var i in cham)
  if (cham[i].nodeType == 1)
    for (var j in troll)
      if (cham[i].firstChild.childNodes[5].childNodes[1].firstChild.nodeValue == troll[j])
        cham[i].style.display = "none";


이제 troll = [ ];의 [ ] 안에 특정 사용자의 별명을 따옴표로 감싸서 넣습니다. 여러 사람일 경우 쉼표로 구분해 줍니다.

5. 저장

편집한 파일을 그냥 저장하면 한글이 잘 처리되지 않습니다. 그래서 "다른 이름으로 저장"을 고르신 다음, 파일 형식을 "모든 파일"로, 인코딩을 "UTF-8"로 바꾸어서 다시 저장해 줍니다.



이제 진보 블로그 홈에 다시 들어오시면 그리즈몽키가 적용되어 특정 사용자의 글은 보이지 않을 것입니다.
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크