Removes Google ad links, redirects and exposes "Cached" links.
当前为
// ==UserScript==
// @name Direct Google (modified by rickzabel)
// @namespace https://greasyfork.org/en/scripts/14034-direct-google-modified-by-rickzabel
// @version 1.62
// @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 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() {
console.log('test');
//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');
//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');
});
}
//remove shopping search redirects
else if(href.contains('tbm=shop') || pathname.startsWith('/shopping/')) {
$('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;
}
});
}
//remove map search redirects; does not remove redirects of advertisement
else if(pathname.startsWith('/maps/') || '/maps' == pathname) {
$('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);
//alert(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();
}, 2000);
}
//for chrome v18-, firefox v14-, internet explorer v11-, opera v15- and safari v6-
else {
setInterval(function() {
modifyGoogle();
}, 2000);
}