Disable Google URL redirector (i.e. user data tracking) on Google Search result, including Google Custom Search Engine (CSE) which is used by many websites.
当前为
// ==UserScript==
// @name Disable Google Search Result URL Redirector
// @namespace DisableGoogleSearchResultURLRedirector
// @description Disable Google URL redirector (i.e. user data tracking) on Google Search result, including Google Custom Search Engine (CSE) which is used by many websites.
// @version 1.0.4
// @author jcunews
// @include *://*/*
// @grant unsafeWindow
// @run-at document-start
// ==/UserScript==
(function(createElement_, insertBefore_) {
//wait for CSE to finish its initialization
function waitCse() {
if (window.google && google.search && google.search.B && google.search.B.prototype.Fq) {
//disable redirector
google.search.B.prototype.Fq = function(){};
} else setTimeout(waitCse, 20);
}
//check if newly loaded script is CSE
function checkCse(ev) {
if (window.__gcse) {
document.createElement = orgCreateElement;
waitCse();
}
}
if ((/www\.google\.[a-z]+(\.[a-z]+)?/).test(location.hostname)) {
//Google website: disable URL redirector generator function
addEventListener("load", function check() {
unsafeWindow.rwt = function() { return true };
});
} else {
//other websites:
//monitor for any CSE initialization
createElement_ = Document.prototype.createElement;
Document.prototype.createElement = function(tag) {
var res = createElement_.apply(this, arguments);
if (tag.toLowerCase() === "script") res.addEventListener("load", checkCse);
return res;
};
//disable ads
insertBefore_ = Node.prototype.insertBefore;
Node.prototype.insertBefore = function(ele) {
if ((/:\/\/cse\.google\.com\/adsense\/search\/(async-)?ads\.js/).test(ele.src)) return ele;
return insertBefore_.apply(this, arguments);
};
}
})();