개요 |
- 매크로가 정확히 어떤식으로 작동하는지 몰라 완벽할 순 없겠으나 페이지 로딩 후
일정시간 동안 댓글란을 잠그는 방법으로도 매크로 방어가 가능하다는 생각에서 시작되었음. - 페이지 로드되고 30초 후에 댓글란이 활성화되며 버튼 클릭으로 활성화 가능.
- 티스토리의 댓글 전송하는 함수를 초기화해서 댓글이 등록되는 것을 방지함.
- 이 부분을 정확히 알 수 없지만 아마도 그렇게 매크로가 돌아가는 것 같음. - 더 지켜봐야 확실해지겠지만, 이틀간의 테스트 결과 위 1번의 내용으로도 효과가 있음.
- 스패머에게 주는 선물..은 아래 스크립트 확인.
- 티스토리 이느므 시키들아 일 좀 해라!
Demo & Code |
먼저, 스킨 댓글란의 Submit 버튼 태그를 수정하고 아래의 스크립트 적용.
- ID 지정
- onclick 치환자 삭제
- Post 스킨 예시
<button type="submit" class="btn" onclick="[ ##_rp_onclick_submit_## ]">댓글달기</button>
↓
<button id="commSubmit" type="submit" class="btn">댓글달기</button>
아래 스크립트를 resetComment.js 파일로 저장.
// 사용자 설정 시작
// 매크로 스패머에게 빅엿을 선사하고 싶으면 아래의 설정값을 1로 변경할 것.
const sfys = 0;
// 빅엿 - 아래의 주소로 아래의 숫자만큼 새탭을 열어줌.
const fys = 200;
const fysTarget = 'www.google.com';
// 사용자 설정 끝
function _0x4aa8(_0x4334c9,_0xd532ed){const _0x542f5e=_0x542f();return _0x4aa8=function(_0x4aa839,_0xdd364e){_0x4aa839=_0x4aa839-0xd8;let _0x2ac4da=_0x542f5e[_0x4aa839];return _0x2ac4da;},_0x4aa8(_0x4334c9,_0xd532ed);}function _0x542f(){const _0x1bb5a9=['783580xViDzz','250481UGKAJj','value','https://','div[id*=\x22entry\x22]\x20textarea','2175876mVdagC','786eunGlr','1769388zNlVmK','18820zKDGgG','8645568tPrdsL','querySelector','681606DtVFNd'];_0x542f=function(){return _0x1bb5a9;};return _0x542f();}(function(_0x29d4e1,_0x3f61ea){const _0x2ac9a1=_0x4aa8,_0x33730e=_0x29d4e1();while(!![]){try{const _0x7c320b=parseInt(_0x2ac9a1(0xe1))/0x1+parseInt(_0x2ac9a1(0xdf))/0x2+parseInt(_0x2ac9a1(0xd9))/0x3+-parseInt(_0x2ac9a1(0xdb))/0x4+-parseInt(_0x2ac9a1(0xdc))/0x5*(-parseInt(_0x2ac9a1(0xda))/0x6)+parseInt(_0x2ac9a1(0xe0))/0x7+-parseInt(_0x2ac9a1(0xdd))/0x8;if(_0x7c320b===_0x3f61ea)break;else _0x33730e['push'](_0x33730e['shift']());}catch(_0x2713b8){_0x33730e['push'](_0x33730e['shift']());}}}(_0x542f,0x614dd));function addComment(){const _0x3b67e1=_0x4aa8;document[_0x3b67e1(0xde)](_0x3b67e1(0xd8))[_0x3b67e1(0xe2)]='';if(sfys==0x1)for(let _0x38853e=0x0;_0x38853e<fys;_0x38853e++){window['open'](_0x3b67e1(0xe3)+fysTarget);}}
resetComment.js 파일을 업로드 후,
아래의 스크립트는 '스킨편집 - HTML'에서 </body> 태그 윗 라인에 <script></script> 태그를 만들고 태그 사이에 삽입.
// Comment Macro Protection
function _0x38c0(_0x2ab611,_0x8129ee){var _0x4d676a=_0x4d67();return _0x38c0=function(_0x38c04e,_0x307b7f){_0x38c04e=_0x38c04e-0x141;var _0x5e7a38=_0x4d676a[_0x38c04e];return _0x5e7a38;},_0x38c0(_0x2ab611,_0x8129ee);}var _0x209e9c=_0x38c0;(function(_0x13c413,_0x16f69f){var _0x38ef84=_0x38c0,_0x4f316a=_0x13c413();while(!![]){try{var _0x57a2c1=-parseInt(_0x38ef84(0x16e))/0x1+parseInt(_0x38ef84(0x185))/0x2+-parseInt(_0x38ef84(0x155))/0x3+parseInt(_0x38ef84(0x144))/0x4*(-parseInt(_0x38ef84(0x16a))/0x5)+-parseInt(_0x38ef84(0x15a))/0x6*(-parseInt(_0x38ef84(0x162))/0x7)+parseInt(_0x38ef84(0x174))/0x8+parseInt(_0x38ef84(0x142))/0x9*(parseInt(_0x38ef84(0x154))/0xa);if(_0x57a2c1===_0x16f69f)break;else _0x4f316a['push'](_0x4f316a['shift']());}catch(_0xbc8c0b){_0x4f316a['push'](_0x4f316a['shift']());}}}(_0x4d67,0xe6f84),window[_0x209e9c(0x14f)](_0x209e9c(0x184),()=>{var _0x4642a7=_0x209e9c;window['T'][_0x4642a7(0x194)]!=null&&setTimeout(()=>{var _0x562670=_0x4642a7;document[_0x562670(0x186)]('div[id*=\x22entry\x22]\x20textarea')[_0x562670(0x18f)](_0x562670(0x165),_0x562670(0x15f));let _0x909f3b=document['querySelector'](_0x562670(0x148))['cloneNode'](!![]);document['querySelector'](_0x562670(0x148))[_0x562670(0x160)]();let _0x1e7d80=document[_0x562670(0x18a)](_0x562670(0x181));_0x1e7d80[_0x562670(0x17b)]=_0x562670(0x167)+window['T']['config'][_0x562670(0x161)]['id']+_0x562670(0x182)+new Date()[_0x562670(0x193)]()+(new Date()['getMonth']()+0x1)+new Date()['getHours']()+new Date()['getMinutes']()+new Date()[_0x562670(0x150)]();let _0x53b5b5=document[_0x562670(0x16f)]('script')[0x0];_0x53b5b5[_0x562670(0x192)][_0x562670(0x175)](_0x1e7d80,_0x53b5b5);function _0x221b2b(_0x24c542,_0xa784ae){(function(_0x518bb0){var _0x561ef5=_0x38c0,_0x1c91b2=0x3e8,_0x5f0328=findFormObject(_0x24c542),_0x20eb34=_0x5f0328[_0x561ef5(0x186)](_0x561ef5(0x18d));if(!_0x5f0328)return![];var _0x294bab={'key':_0x561ef5(0x14e)},_0x31abbe=_0x518bb0(_0x561ef5(0x190));if(_0x31abbe[_0x561ef5(0x145)]>0x0){if(!_0x31abbe[_0x561ef5(0x158)]())return alert(_0x561ef5(0x177)),![];_0x294bab['captcha']=_0x31abbe[_0x561ef5(0x158)]();}_0x5f0328[_0x561ef5(0x149)]&&(_0x294bab['name']=_0x5f0328[_0x561ef5(0x149)]['value']);if(_0x5f0328['password']){var _0x285577=_0x5f0328['password']['value']['trim']();if(_0x285577['length']==0x0)return alert('비밀번호를\x20입력해\x20주세요.'),![];var _0x4d6e8d=new jsSHA('SHA-256','TEXT');_0x4d6e8d['update'](md5(encodeURIComponent(_0x285577))),_0x294bab[_0x561ef5(0x171)]=_0x4d6e8d[_0x561ef5(0x15e)]('HEX');}_0x5f0328[_0x561ef5(0x151)]&&(_0x294bab[_0x561ef5(0x151)]=_0x5f0328[_0x561ef5(0x151)][_0x561ef5(0x173)]);_0x5f0328[_0x561ef5(0x18c)]&&_0x5f0328[_0x561ef5(0x18c)][_0x561ef5(0x16d)]&&(_0x294bab[_0x561ef5(0x18c)]=0x1);_0x5f0328['comment']&&(_0x294bab[_0x561ef5(0x191)]=_0x5f0328[_0x561ef5(0x191)][_0x561ef5(0x173)]);if(typeof _0x294bab[_0x561ef5(0x191)]==='string'&&_0x294bab[_0x561ef5(0x191)][_0x561ef5(0x145)]>_0x1c91b2){alert(_0x561ef5(0x18e)+_0x1c91b2+'자까지\x20입력할\x20수\x20있습니다.'),_0x20eb34&&_0x20eb34['focus']();return;}if(_0x294bab['secret']===0x1&&T[_0x561ef5(0x189)][_0x561ef5(0x164)]===_0x561ef5(0x170)){confirm(_0x561ef5(0x188))&&(window[_0x561ef5(0x178)][_0x561ef5(0x147)]=T[_0x561ef5(0x189)]['LOGIN_URL']);_0x20eb34&&_0x20eb34[_0x561ef5(0x163)]();return;}_0x24c542&&_0x24c542[_0x561ef5(0x14b)]&&_0x24c542[_0x561ef5(0x14b)]('disabled',!![]),_0x518bb0['ajax']({'url':_0x5f0328['action']+_0x561ef5(0x16b)+new Date()['getTime'](),'method':_0x561ef5(0x16c),'data':_0x294bab})[_0x561ef5(0x180)](function(_0x5bdf38){var _0x4bc4a2=_0x561ef5;if(_0xa784ae==0x0){window[_0x4bc4a2(0x178)]=addUriPrefix('/guestbook');return;}var _0x16cfb2=_0x5bdf38[_0x4bc4a2(0x153)],_0x4b2c03=_0x518bb0(_0x4bc4a2(0x17e)+_0xa784ae+_0x4bc4a2(0x15c)),_0x2f7eb6=_0x518bb0('#recentComments'),_0x2d167e=_0x518bb0(_0x4bc4a2(0x17a)+_0xa784ae);_0x4b2c03[_0x4bc4a2(0x157)](_0x16cfb2[_0x4bc4a2(0x14c)]),_0x2f7eb6[_0x4bc4a2(0x157)](_0x16cfb2[_0x4bc4a2(0x17f)]);for(var _0x8d8965=0x0;_0x518bb0(_0x4bc4a2(0x195)+_0xa784ae+'_'+_0x8d8965)[_0x4bc4a2(0x145)];_0x8d8965++){_0x518bb0(_0x4bc4a2(0x195)+_0xa784ae+'_'+_0x8d8965)['html'](_0x16cfb2[_0x4bc4a2(0x18b)]);}_0x2d167e[_0x4bc4a2(0x157)]('('+_0x16cfb2['commentCount']+')'),typeof window['needCommentCaptcha']!==_0x4bc4a2(0x187)&&captchaPlugin[_0x4bc4a2(0x183)](_0x4bc4a2(0x15b));})['fail'](function(_0x37c99d){var _0x2e181b=_0x561ef5;alert(_0x37c99d[_0x2e181b(0x152)][_0x2e181b(0x17d)]);})[_0x561ef5(0x17c)](function(){var _0xb809e6=_0x561ef5;_0x24c542&&_0x24c542[_0xb809e6(0x14b)]&&_0x24c542[_0xb809e6(0x14b)](_0xb809e6(0x15d),![]);});}(tjQuery));}let _0x149d02=0x0;document[_0x562670(0x186)](_0x562670(0x168))['style'][_0x562670(0x143)]='none',document[_0x562670(0x186)](_0x562670(0x168))[_0x562670(0x146)][_0x562670(0x166)]='0.5';let _0x103065=0x0,_0x2c3978=setInterval(()=>{var _0x2298d4=_0x562670;_0x103065++,document['querySelector']('#commChk\x20span')[_0x2298d4(0x172)]=0x1f-_0x103065,_0x103065>0x1e&&(clearInterval(_0x2c3978),document[_0x2298d4(0x186)](_0x2298d4(0x14a))[_0x2298d4(0x159)](_0x2298d4(0x165),_0x909f3b),document[_0x2298d4(0x186)](_0x2298d4(0x14a))['remove'](),_0x558b40());},0x3e8);document[_0x562670(0x186)](_0x562670(0x141))[_0x562670(0x14f)](_0x562670(0x176),()=>{setTimeout(()=>{var _0x1adc57=_0x38c0;document[_0x1adc57(0x186)]('div[id*=\x22entry\x22]\x20#commChk')[_0x1adc57(0x159)](_0x1adc57(0x165),_0x909f3b),document[_0x1adc57(0x186)](_0x1adc57(0x14a))['remove'](),clearInterval(_0x2c3978),document[_0x1adc57(0x186)]('div[id*=\x22entry\x22]\x20textarea')[_0x1adc57(0x163)](),_0x558b40(0x1);},0xfa,{'once':!![]});});function _0x558b40(_0x206b26){var _0x3b4bf5=_0x562670;document[_0x3b4bf5(0x186)](_0x3b4bf5(0x148))[_0x3b4bf5(0x14f)]('keyup',_0x3090f2=>{var _0x1021f2=_0x3b4bf5;_0x149d02++;var _0x17cf99=_0x3090f2[_0x1021f2(0x156)][_0x1021f2(0x173)][_0x1021f2(0x145)];_0x206b26==null?_0x103065>0x1e&&_0x17cf99>0xa?(document[_0x1021f2(0x186)](_0x1021f2(0x168))[_0x1021f2(0x146)]['pointerEvents']=_0x1021f2(0x14d),document[_0x1021f2(0x186)]('div[id*=\x22entry\x22]\x20#commSubmit')[_0x1021f2(0x146)][_0x1021f2(0x166)]='1'):(document['querySelector'](_0x1021f2(0x168))['style'][_0x1021f2(0x143)]=_0x1021f2(0x179),document[_0x1021f2(0x186)](_0x1021f2(0x168))[_0x1021f2(0x146)][_0x1021f2(0x166)]=_0x1021f2(0x169)):_0x17cf99>0xa?(document[_0x1021f2(0x186)](_0x1021f2(0x168))['style'][_0x1021f2(0x143)]=_0x1021f2(0x14d),document[_0x1021f2(0x186)]('div[id*=\x22entry\x22]\x20#commSubmit')[_0x1021f2(0x146)][_0x1021f2(0x166)]='1'):(document[_0x1021f2(0x186)](_0x1021f2(0x168))['style'][_0x1021f2(0x143)]=_0x1021f2(0x179),document[_0x1021f2(0x186)](_0x1021f2(0x168))[_0x1021f2(0x146)][_0x1021f2(0x166)]=_0x1021f2(0x169));}),document['querySelector'](_0x3b4bf5(0x168))[_0x3b4bf5(0x14f)](_0x3b4bf5(0x176),()=>{var _0x1da2b5=_0x3b4bf5;_0x221b2b(document[_0x1da2b5(0x186)](_0x1da2b5(0x148)),window['T'][_0x1da2b5(0x194)]['entryId']);});}},0x1f4,{'once':!![]});}));function _0x4d67(){var _0x950fb1=['tistory','addEventListener','getSeconds','homepage','responseJSON','data','217130QvAfpc','3062391sePCWC','target','html','val','insertAdjacentElement','6KnhuAf','complete','Comment','disabled','getHash','<div\x20id=\x22commChk\x22>스팸\x20필터\x20작동\x20중...<br><span></span>초\x20뒤에\x20댓글\x20작성이\x20가능합니다.<br><br><span\x20id=\x22rsb\x22>댓글\x20작성하기</span></div>','remove','BLOG','11182521AQYMpT','focus','ROLE','afterend','opacity','https://tistory1.daumcdn.net/tistory/','div[id*=\x22entry\x22]\x20#commSubmit','0.5','2093005dGAFuh','?__T__=','post','checked','1167246TtrMRj','getElementsByTagName','guest','password','innerText','value','4962648StPjKx','insertBefore','click','그림문자를\x20입력해\x20주세요.','location','none','#commentCountOnRecentEntries','src','always','message','#entry','recentCommentBlock','done','script','/skin/images/resetComment.js?ver=','init','load','2619196tBsZLK','querySelector','undefined','비로그인\x20댓글은\x20공개\x20작성만\x20가능합니다.\x20로그인\x20하시겠습니까?','config','createElement','commentCount','secret','[name=\x22comment\x22]','댓글은\x20','insertAdjacentHTML','#inputCaptcha','comment','parentNode','getFullYear','entryInfo','#commentCount','div[id*=\x22entry\x22]\x20#commChk\x20#rsb','531MTGvCE','pointerEvents','16TKbnld','length','style','href','div[id*=\x22entry\x22]\x20textarea','name','div[id*=\x22entry\x22]\x20#commChk','setAttribute','commentBlock','auto'];_0x4d67=function(){return _0x950fb1;};return _0x4d67();}
/* Comment Macro Protection */
#tt-body-page div[id*="entry"] #commChk { position: relative; width: 90%; height: fit-content; padding: 36px 12px; text-align: center; line-height: 30px; left: 5% }
#tt-body-page div[id*="entry"] #commChk #rsb { padding: 14px 20px; background-color: #b5b5b5; color: #151515; cursor: pointer }