// DCKickAss script // based Imyejin-free user script from perky http://openlook.org/src/0704/imyejinfree.user.js // 본 스크립트는 BSD License에 따라 누구나 개인적인 목적이나 상업적인 목적으로 // 사용이 가능합니다. - 익명의 제작자 // http://www.opensource.org/licenses/bsd-license.html // // DCKickAss v0.05改 // // 2009. 6. 14. 프갤의 Rei@디씨 가 DCKickAss v0.05를 변경된 DC의 레이아웃에 맞추어 // 댓글 차단이 되도록 개량하였음. // // ==UserScript== // @name DCKickAss v0.05 改 // @namespace http://gall.dcinside.com/* // @description Eat troll's articles // @include http://gall.dcinside.com/* // @exclude // ==/UserScript== var dcka_who = [ "나광팔" ]; var dcka_subject = [ ]; var dcka_comment_who = [ "나광팔" ]; /* 디씨 페이지 레이아웃이 변경되어 더이상 IP 차단을 사용할 수 없습니다. var dcka_article_ip = [ ]; */ var atags = document.getElementsByTagName('TR'); for (var i = 0; i < atags.length; i++ ) { var tmp = atags[i]; var tmp2 = tmp.getElementsByTagName('TD'); for ( var j = 2; j < 3 && j < tmp2.length; j++ ) { var tmp3 = tmp2[j].getElementsByTagName('A'); if ( tmp3.length > 0 ) { var str = tmp3[0].textContent; for ( var k = 0; k < dcka_subject.length; ++k ) { if (str.match(dcka_subject[k]) ) { var tr = tmp; tr.innerHTML = "==== 제목에 [" + dcka_subject[k] + "]가 들어간 글을 차단했습니다"; break; } } } } var tmp = atags[i]; var tmp2 = tmp.getElementsByTagName('TD'); for ( var j = 3; j < 4 && j < tmp2.length; j++ ) { var tmp3 = tmp2[j].getElementsByTagName('SPAN'); if ( tmp3.length > 0 ) { var str = tmp3[0].textContent; for ( var k = 0; k < dcka_who.length; ++k ) { if (str.match(dcka_who[k]) ) { var tr = tmp; tr.innerHTML = "==== [" + dcka_who[k] + "]에 의해 [" + str + "]놈을 차단했습니다"; break; } } } } } /* IP 차단 제거 */ /* function kick_ip() { var dcka_ctb = document.getElementsByTagName("TABLE"); if ( dcka_ctb.length < 5 ) { return false; } var dcka_atc_table = dcka_ctb[4]; var dcka_atc_divs = dcka_atc_table.getElementsByTagName("DIV"); if ( dcka_atc_divs.length < 1 ) { return false; } var dcka_atc_div = dcka_atc_divs[dcka_atc_divs.length - 1]; var ip_str = dcka_atc_div.textContent; if ( !ip_str.match("IP Address :") ) { return false; } for ( var i = 0; i < dcka_article_ip.length; ++i ) { if ( ip_str.match(dcka_article_ip[i]) ) { dcka_atc_table.innerHTML = "
" + "[뒤로 돌아가기]
" + "IP " + dcka_article_ip[i] + "에 의해 글 본문이 차단되었습니다.
" + ip_str + "
"; break; } } return true; var dcka_atc_trs = dcka_atc_table.getElementsByTagName("TR"); //7, 6 - 이미지 if ( dcka_atc_trs.length < 8 ) { return false; } var dcka_atc_tr = dcka_atc_trs[7]; var dcka_atc_tds = dcka_atc_tr.getElementsByTagName('TD'); if ( dcka_atc_tds.length != 3 ) { return false; } var dcka_atc_td = dcka_atc_td[1]; var dcka_atc_divs = dcka_atc_td.getElementsByTagName('DIV'); alert("D"); if ( dcka_atc_divs.length < 1 ) { return false; } var dcka_atc_div = dcka_atc_divs[dcka_atc_divs.length - 1]; alert(dcka_atc_div.textContent); } */ //kick_ip(); var dcka_ctb = document.getElementsByTagName('TABLE'); //전체 테이블을 가져와서 for ( var i = 0; i < dcka_ctb.length; ++i ) { var tb = dcka_ctb[i]; if ( tb.id ) { var str = tb.id; if ( str.match("com_tab") ) //댓글 테이블이면 내용을 검사한다. { var dcka_trs = tb.getElementsByTagName('TR'); //하위의 열들을 가져온다. for ( var j = 0; j < dcka_trs.length; ++j ) { try{ var dcka_tr = dcka_trs[j]; //댓글이 있는 열 var dcka_tds = dcka_tr.getElementsByTagName('TD'); //열의 각 셀들 var dcka_td_childrens = dcka_tds[0].childNodes; for(var m = 0; m < dcka_td_childrens.length; ++m ) //반복 { if( dcka_td_childrens[m].title ) { //차단할 놈들 목록을 반복 for ( var l = 0; l < dcka_comment_who.length; ++l ) { //하위 태그의 title과 겹치면, 차단한다. if ( dcka_comment_who[l].match(dcka_td_childrens[m].title) ) { dcka_tr.innerHTML = "==== " + dcka_comment_who[l] + "놈을 차단했습니다."; break; } } } } }catch(excep){} } } } }