はてなハイクのスパムなどを消す

  • /**
     * @title はてなハイクのスパムなどを消す
     * @description スパムか判断できないロシアっぽい文字も消す。広告が上の方に来ると邪魔だからついでに消す(苦言を呈されても消す、というかそもそも消えているけど空白が邪魔だから消す)。
     * @include http://h.hatena.ne.jp/
     * @license public domain
     */
    
    (function(){
    	var f=(function(){
    		var N = document.querySelectorAll('div.tl-entry ,div#tl-ad-container');
    		var i = 0;
    		var I = (function(s){
    			var i=0;
    			s=s.replace(/\(\u7D9A\u304D\u3092\u8AAD\u3080\)/,"");
    			while(i<s.length){
    				var c=s.charCodeAt(i);
    				if(
    					  (0x000000<=c && c<=0x00007f) // ASCII
    					||(0x000400<=c && c<=0x0004ff) // Cyrillic
    					||(0x002014<=c && c<=0x002014) // EM DASH
    
    				){
    				}else{
    //console.log(i+":("+c.toString(16)+")"+s.charAt(i));
    					return false;
    				}
    				i++;
    			}
    			return true;
    		});
    
    		var a = (function(e){
    			var title = e.querySelectorAll('a.title-anchor')[0];
    			if(!title){return true;}
    			title=title.textContent;
    			if(title.length<6){return false;} 
    			if(!I(title))return false;
    
    			if(title.length<20){ 
    				var body=e.querySelectorAll('div.body')[0];
    				if(!body){return true;}
    				body=body.innerHTML;
    				if(!I(body)){
    //console.log(title);
    					return false;
    				}
    			}
    			return true;
    		});
    
    		while(i<N.length){
    			var e = N[i];
    			if(e.parentElement && a(e)){
    				e.parentElement.removeChild(e);
    			}
    			i++;
    		}
    
    	});
    	setInterval(f,3000);
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2016/08/12 03:33:18 - 2016-08-12