Direct Google (modified by rickzabel)

Removes Google ad links, redirects and exposes "Cached" links.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Direct Google (modified by rickzabel)
// @namespace    https://greasyfork.org/en/scripts/14034-direct-google-modified-by-rickzabel
// @version      1.63
// @description  Removes Google ad links, redirects and exposes "Cached" links.
// @include      /^https?\:\/\/(www|news|maps|docs|cse|encrypted)\.google\./
// @author       rickzabel
// @license      GPL version 2 or any later version; http://www.gnu.org/licenses/gpl-2.0.txt
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.js
// @grant        GM_addStyle
// @run-at       document-end
// ==/UserScript==


//A modified version of "direct Google" by zanetu https://greasyfork.org/en/scripts/568-direct-google
//I added the ability to convert Google's ad link to normal links, I also change the ad text to 'Normalized by Zabel'

	var Version = GM_info.script.version;
	var ScriptName = GM_info.script.name;

	var UpdateMessage = "yes"; // yes alert the user, no has a silent update.
	var VersionUpdateNotes = ScriptName + " has been updated to v" + Version;
	//remove any lines >1 month old. dont leave \n on last line.
	VersionUpdateNotes = VersionUpdateNotes + "\n" +
	"Attempting to remove the tracking links from the shopping results that show up in searches. Changed normalized by zabel to -Ad";
	if (UpdateMessage === "yes") {
		var ScriptNameVersion = ScriptName.replace(/\s/g, "") + "Version"; //prepare the scripts name for
		if (localStorage.getItem(ScriptNameVersion) !== Version) {
			alert(VersionUpdateNotes);
			localStorage.setItem(ScriptNameVersion, Version);
		}
	}
	

//http://www.googleadservices.com/pagead/aclk?sa=L&ai=C_dPwZxM1V_CiA4_LhATlg50wuO7f0kTIwZPLmgOBnJUGCAAQASgEYMnO-Yfwo-wSoAGHupXLA8gBAaoEJE_QnDiOkILHWbMF85k_2W_yzLWmvPvDDGZ-usak9tehyXF1JIgGAYAHoO6gT4gHAZAHAqgHpr4b2AcB&ohost=www.google.com&cid=CAESIeD2gluQ0uPxBEhtEGTA5eX5OpXsU7okBiNyw0e7jXvEbg&sig=AOD64_3qJn56lwN6RGxZA-dPU0SzEGy7hg&clui=0&q=&ved=0ahUKEwjMxrb62dXMAhVB5CYKHW73AHcQ0QwIGg&adurl=http://tracker.marinsm.com/rd%3Fcid%3D901pdb6671%26mid%3D901n7v6848%26mkwid%3DsHbX3GEGS%26pcrid%3D110129574448%26pkw%3Dlaptops%26pmt%3De%26pdv%3Dc%26lp%3Dhttp://altfarm.mediaplex.com/ad/ck/12309-80731-2056-0%3FCID%3D290627%26LID%3D5569869%26st%3Dlaptops%26VEN1%3DsHbX3GEGS,110129574448,901n7v6848,c%26VEN2%3De,laptops%26DURL%3Dhttp%253A%252F%252Faltfarm.mediaplex.com%252Fad%252Fck%252F26965-198869-2056-1%253F


//http://www.googleadservices.com/pagead/aclk?sa=L&ai=CqisTZxM1V_CiA4_LhATlg50wuP6Oy0TSlIu5ngLahrn-lQQIBhABKAhgyc75h_Cj7BKgAY6z0csDyAEHqgQrT9CMUtORqsZZs03zMH89GQWV-6KwtnMTH9jnDzm-E_oDl5Iz0DZuLGtvCMAFBYgGAaAGJoAH2syuNIgHAZAHAqgHpr4b2AcB4BKCr4DBnrqB9pcB&ohost=www.google.com&cid=CAESIeD2gluQ0uPxBEhtEGTA5eX5OpXsU7okBiNyw0e7jXvEbg&sig=AOD64_1wfq1Ey0F6rJFnM2x3rwGHMt1l1A&ctype=5&clui=19&q=&ved=0ahUKEwjMxrb62dXMAhVB5CYKHW73AHcQuxcIyAE&adurl=http://clickserve.dartsearch.net/link/click%3Flid%3D92700008502620473%26ds_s_kwgid%3D58700000769771384%26ds_e_adid%3D76893776546%26ds_e_product_group_id%3D143341273946%26ds_e_product_id%3DASUS-Chromebook-flip-2gb%26ds_e_product_merchant_id%3D102760793%26ds_e_product_country%3DUS%26ds_e_product_language%3Den%26ds_e_product_channel%3Donline%26ds_e_product_store_id%3D%26ds_e_ad_type%3Dpla%26ds_s_inventory_feed_id%3D97700000001723538%26ds_url_v%3D2%26ds_dest_url%3Dhttps://store.google.com/product/asus_chromebook_flip%3Fsku%3D_asus_chromebook_flip_2gb%26utm_source%3Den-ha-na-us-sem%26utm_medium%3Ddesktop%26utm_content%3Dplas%26utm_campaign%3DAsusCB%26gl%3Dus

var hostname = location.hostname;
var pathname = location.pathname;
var href = location.href;

String.prototype.contains = function(s) {
	return -1 !== this.indexOf(s);
};

String.prototype.startsWith = function(s) {
	return this.slice(0, s.length) == s;
};

function blockListeners(element, events) {
	function stopBubbling(event) {
		event.stopPropagation();
	}

	var eventList = events.split(' ');
	if(eventList) {
		var i, event;
		for(i = eventList.length - 1; i > -1; i--) {
			event = eventList[i].trim();
			if(event) {
				element.removeEventListener(event, stopBubbling, true);
				element.addEventListener(event, stopBubbling, true);
			}
		}
	}
}

function modifyGoogle() {
    var hostname = location.hostname;
	var pathname = location.pathname;
	var href = location.href;
	
/*	
	$('a[href^="http"]').each(function() {
			blockListeners(this, 'click contextmenu');
			//legacy
			console.log(this.href.contains('http://www.googleadservices.com'));
			if(this.href.contains('url?')) {
				var m = this.href.match(/(?:\&|\?)q\=(http.*?)(\&|$)/i);
				if(m && m[1]) {
					this.href = decodeURIComponent(m[1]);
				}
			}
		});
	*/
	
		
	
	$('a[href^="http"]').each(function() {
			
			if(this.href.contains('http://www.googleadservices.com')) {
		/*
	http://www.google.com%26cid%3Dcaesied2gluq0upxbehtegta5ex5opxsu7okbinyw0e7jxvebg%26sig%3Daod64_1wfq1ey0f6rjfnm2x3rwghmt1l1a%26ctype%3D5%26clui%3D19%26q%3D%26ved%3D0ahukewjmxrb62dxmahvb5cykhw73ahcquxciyae%26adurl%3Dhttp//clickserve.dartsearch.net/link/click?lid=92700008502620473&ds_s_kwgid=58700000769771384&ds_e_adid=76893776546&ds_e_product_group_id=143341273946&ds_e_product_id=ASUS-Chromebook-flip-2gb&ds_e_product_merchant_id=102760793&ds_e_product_country=US&ds_e_product_language=en&ds_e_product_channel=online&ds_e_product_store_id=&ds_e_ad_type=pla&ds_s_inventory_feed_id=97700000001723538&ds_url_v=2&ds_dest_url=https://store.google.com/product/asus_chromebook_flip?sku=_asus_chromebook_flip_2gb&utm_source=en-ha-na-us-sem&utm_medium=desktop&utm_content=plas&utm_campaign=AsusCB&gl=us
	http://www.googleadservices.com/pagead/aclk?sa=L&ai=CkN1J3DA1V_G8F8_LhAS69prYDe6w8vgFvobBp5oCruSL-N4CCAQQBSgFYMnO-Yfwo-wSoAG66b7dA8gBB6oEKU_QXN1xja42FXfXEH2R_VbzaLNtcAnU6Ayjofl7szadNDXN3bFFSCbaugUTCNqatob21cwCFUtLJgodG2kMUcAFBcoFAIgGAaAGJoAHrpbBIogHAZAHAqgHpr4b2AcB4BL0upmh5fPsnk0&ei=3DA1V9q8EsuWmQGb0rGIBQ&ohost=www.google.com&cid=CAESIeD2-hLO98-YFy5TC_5MC-rLmoFud9NJw4guftf5Gn0LoA&sig=AOD64_04yyOycji9jc0Sfusl3EeB5LEerQ&ctype=5&clui=11&q=&sqi=2&ved=0ahUKEwjamraG9tXMAhVLSyYKHRtpDFEQww8IQA&adurl=http://fasteddybearings.com/5x8x2-5-flanged-metal-shielded-bearing-mf85-zz/%3Futm_source%3Dgoogle%26utm_medium%3Dshopping%26utm_content%3D63%26utm_campaign%3DFastEddy%2520Bearings%26gdftrk%3DgdfV29274_a_7c2943_a_7c9328_a_7c63
	http://www.google.com%26cid%3Dcaesied2-hlo98-yfy5tc_5mc-rlmofud9njw4guftf5gn0loa%26sig%3Daod64_04yyoycji9jc0sfusl3eeb5leerq%26ctype%3D5%26clui%3D11%26q%3D%26sqi%3D2%26ved%3D0ahukewjamrag9txmahvlsyykhrtpdfeqvhciqg%26adurl%3Dhttp//fasteddybearings.com/5x8x2-5-flanged-metal-shielded-bearing-mf85-zz/?utm_source=google&utm_medium=shopping&utm_content=63&utm_campaign=FastEddy%20Bearings&gdftrk=gdfV29274_a_7c2943_a_7c9328_a_7c63
	
	*/
	//this.innerHTML='test';
				if(this.href.contains('https://store.google.com')) {
					var n = this.href.indexOf("https");
					//console.log(n);
					n = this.href.substring(n, this.href.length);
					//console.log(n);
					n = decodeURIComponent(n)
					this.href = n;

				} else if(this.href.contains('=http://')) {
					var n = this.href.lastIndexOf("http");
					//console.log(n);
					n = this.href.substring(n, this.href.length);
					//console.log(n);
					n = decodeURIComponent(n)
					this.href = n;
					
				} else {
					//console.log(this.href);
					var n = this.href.lastIndexOf("www");
					var n2 = this.href.substring(n, this.href.length);
					//console.log(n2);
					var n3 = decodeURIComponent(n2)
					var n3 = decodeURIComponent(n3)
					var n3 = decodeURIComponent(n3)
					console.log(n3);
					this.href = "http://" + n3;
					//console.log(n3);
					//console.log(" ");
				}
			}
		});
	
	
	
	
	
	
	
	
	
	
	
	//remove web/video search redirects
	$('a[onmousedown^="return rwt("]').removeAttr('onmousedown');

	//remove ads
	$('a[onmousedown^="return google.arwt("]').removeAttr('onmousedown');

	//change yellow ad alert text
	//$('._mB').html('Normalized by Zabel');
	$('._mB').html('-Ad');


	//remove custom search redirects
	$('.gsc-results a[href][data-cturl]').each(function() {
		blockListeners(this, 'mousedown');
	});
	//remove image search redirects
	$('a').filter('[class^="irc_"], [class*=" irc_"], [id^="irc_"]').each(function() {
		blockListeners(this, 'mousedown');
	});
	//remove news search redirects
	if(href.contains('tbm=nws') || hostname.startsWith('news.google.')) {
		$('a.article[href^="http"]').each(function() {
			blockListeners(this, 'click contextmenu mousedown mousemove');
		});
	} else if(href.contains('tbm=shop') || pathname.startsWith('/shopping/')) { //remove shopping search redirects
		$('a').filter('[href*="/aclk?"], [href*="/url?"]').each(function() {
			var m = this.href.match(/(?:\&adurl|\?q|\&url)\=(http.*?)(\&|$)/i);
			if(m && m[1]) {
				var link = decodeURIComponent(m[1]);
				link = link.replace('=http://clickserve.dartsearch.net/', '=');
				m = link.match(/\=(https?(\%3A\%2F\%2F|\:\/\/).*?)(\&|$)/i);
				if(m && m[1]) {
					link = decodeURIComponent(m[1]);
				}
				this.href = link;
			}
		});
	} else if(pathname.startsWith('/maps/') || '/maps' == pathname) { //remove map search redirects; does not remove redirects of advertisement
		$('a[href^="http"]').each(function() {
			blockListeners(this, 'click contextmenu');
			//legacy
			if(this.href.contains('url?')) {
				var m = this.href.match(/(?:\&|\?)q\=(http.*?)(\&|$)/i);
				if(m && m[1]) {
					this.href = decodeURIComponent(m[1]);
				}
			}
		});
	}
	//remove legacy search redirects and docs redirects
	//should be done last as shopping uses the same url pattern
	$('a[href*="/url?"]').each(function() {
		var m = this.href.match(/\/url\?(?:url|q)\=(http.*?)(\&|$)/i);
		console.log(m);
		if(m && m[1]) {
			this.href = decodeURIComponent(m[1]);
		}
	});
	//expose cached links
	$('div[role="menu"] ul li a[href^="http://webcache.googleusercontent."]').each(
		function() {
			this.style.display = 'inline';
			$(this).closest('div.action-menu.ab_ctl, div._nBb')
			.after(' <a href="https' + this.href.substring(4) + '">(https)</a> ')
			.after($(this));
		}
	);
}

//MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if(window.MutationObserver || window.WebKitMutationObserver) {
	var observer = new MutationObserver(function(mutations) {
		modifyGoogle();
	});
	//tiny delay needed for firefox
	setTimeout(function() {
		observer.observe(document.body, {
			childList: true,
			subtree: true
		});
		modifyGoogle();
	}, 10);
}
//for chrome v18-, firefox v14-, internet explorer v11-, opera v15- and safari v6-
else {
	setInterval(function() {
		modifyGoogle();
	}, 10);
}