Greasy Fork

来自缓存

Greasy Fork is available in English.

Google 搜索结果屏蔽

根据网站、网址和关键字来屏蔽不想要的搜索结果

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Google 搜索结果屏蔽
// @name:en      Google Search Results Block
// @namespace    Cheez.Search
// @version      1.0
// @description  根据网站、网址和关键字来屏蔽不想要的搜索结果
// @description:en  Block Google bad results by sites, urls and keywords.
// @icon         https://www.google.co.jp/images/branding/product/ico/googleg_lodp.ico     
// @author       以茄之名
// @author:en    Cheez
// @include      https://www.google.*/search*
// @include      https://www.google.*.*/search*
// @require       https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_registerMenuCommand
// ==/UserScript==

(function() {
	'use strict';
	var $=jQuery,
		blacklist=GM_getValue('blacklist')&&JSON.parse(GM_getValue('blacklist'))||{
			host:[],
			url:[],
			word:[]
		}, 
		logs=[]; 
	if (GM_getValue('version')==''||GM_getValue('version')&&GM_getValue('version')<GM_info.script.version){
		var changes='';
		if(changes)alert(changes);
		GM_setValue('version',GM_info.script.version);
	}
	console.log(blacklist);
	$('[onmousedown]').attr('onmousedown','');
	$.each(jQuery('[href*=webcache]'),function(i,o){jQuery(o).attr('href',jQuery(o).attr('href').replace('p:','ps:'));});

	function hid(hosts,urls,words){
		$('.g:not(.hiden,.checked) .r>a').filter(function(i,o){

			if($.inArray(o.host,hosts)>-1){
				logs.push({'域名':o.host,'地址':o.href,'匹配类型':'域名'});
				return true;
			}
			var flag=false;
			$.each(urls,function(i,oo){
				if( (new RegExp(oo)).test(o.href) ){
					logs.push({'域名':o.host,'地址':o.href,'匹配类型':'地址','匹配':oo});
					flag=true; return false;
				}
			});
			$.each(words,function(i,oo){
				if(  o.textContent.indexOf(oo) >-1 ){
					logs.push({'域名':o.host,'地址':o.href,'匹配类型':'关键字','匹配':oo});
					flag=true; return false;
				}
			});


			if(!flag){ 
				var p=$(o).parents('.g').addClass('checked');
				var menu=$(p).find('.action-menu-panel>ol');
				var li=$('<li class="action-menu-item ab_dropdownitem" role="menuitem" aria-selected="false"><a class="fl" data-host="'+o.host+'" data-url="'+o.href+'" tabindex="-1">屏蔽该类网址</a></li>');
				if( menu.size() ){ 
					//'<li class="action-menu-item ab_dropdownitem" role="menuitem" aria-selected="false"><a class="fl block-site"  data-url="'+o.href+'" tabindex="-1">屏蔽该类网址</a></li>'+'<li class="action-menu-item ab_dropdownitem" role="menuitem" aria-selected="false"><a class="fl block"  data-host="'+o.host+'" tabindex="-1">屏蔽该网站</a></li>');
				}else{
					var text='<div class="action-menu ab_ctl"><a class="_Fmb ab_button" href="#"  aria-label="结果详情" aria-expanded="false" aria-haspopup="true" role="button" jsaction="m.tdd;keydown:m.hbke;keypress:m.mskpe" ><span class="mn-dwn-arw"></span></a><div class="action-menu-panel ab_dropdown" role="menu" tabindex="-1" jsaction="keydown:m.hdke;mouseover:m.hdhne;mouseout:m.hdhue"><ol> </ol></div></div>';
					menu=$(p).find('.kv').append(text ).find('.action-menu-panel>ol');
				}
				menu.filter(':not(:has(.block-site))').append(li.clone().find('a').addClass('block-site').end(),li.clone().find('a').addClass('block').text('屏蔽该网站').end()) ;

			}

			return flag;
		}).parents('.g').addClass('hiden').hide();
		if(logs.length){console.table(logs);logs=[];}

	}
	var aThing;
	$(document.body).on('DOMNodeInserted', function () {
		clearTimeout(aThing);
		aThing = setTimeout(function () {
			if($('.sp-separator').size()){$(document.body).trigger('aThing');}
		}, 50);
	});

	$(document.body).on('aThing', function () { //监听DOM树插入
		hid(blacklist.host,blacklist.url,blacklist.word);
		$('[onmousedown]').attr('onmousedown','');
		$.each(jQuery('[href*=webcache]'),function(i,o){jQuery(o).attr('href',jQuery(o).attr('href').replace('p:','ps:'));});
	});
	hid(blacklist.host,blacklist.url,blacklist.word);
	$('#rso').delegate('a.block','click',function(e){
		$(this).parents('.g').addClass('hiden').hide();
		blacklist.host.push($(this).data('host'));
		GM_setValue('blacklist',JSON.stringify(blacklist));
		hid([$(this).data('host')],[],[]);
	});
	$('#rso').delegate('a.block-site','click',function(e){
		var mch=prompt("请输入对应的匹配",$(this).data('url').replace(/(?!\\)([\$\(\)\*\+\.\[\]\?\^\{\}\|\\])/g,/\\$1/));
		if(mch){
			mch=str2reg(mch);
			$(this).parents('.g').addClass('hiden').hide();
			blacklist.url.push(mch);
			GM_setValue('blacklist',JSON.stringify(blacklist));
			hid([],[mch],[]);
		}
	});

	function addKeyword() { 
		var word=prompt("请输入要屏蔽的关键字(Input the keyword.)" );
		if(word){  
			blacklist.word.push(word);
			GM_setValue('blacklist',JSON.stringify(blacklist));
			hid([],[ ],[word]);
		}
	}

	GM_registerMenuCommand("增加屏蔽关键字(Add keyword)", addKeyword);

	$(window).on('close', function () {  GM_setValue('blacklist',JSON.stringify(blacklist));});

	function str2reg(str){
		return str.replace(/(?!\\)([\$\(\)\*\+\.\[\]\?\^\{\}\|\\])/g,/\\$1/);
	}

})();