Greasy Fork is available in English.

Google Search Better Privacy

Delete unnecessary params and add useful params on Google Search.

// ==UserScript==
// @name           Google Search Better Privacy
// @description    Delete unnecessary params and add useful params on Google Search.
// @version        0.0.4
// @include        http://*.google.*/search*
// @include        http://*.google.*/imgres*
// @include        https://*.google.*/search*
// @include        https://*.google.*/imgres*
// @exclude        http://play.google.com/*
// @exclude        http://mail.google.com/*
// @exclude        https://play.google.com/*
// @exclude        https://mail.google.com/*
// @author         nodaguti
// @license        MIT License
// @run-at         document-start
// @namespace https://greasyfork.org/users/1453
// ==/UserScript==

(function(){

//--- Config ---
//For more information about parameters, please see
//http://www.blueglass.com/blog/google-search-url-parameters-query-string-anatomy/ or
//http://www.seomoz.org/ugc/the-ultimate-guide-to-the-google-search-parameters
var addParams = [
    'safe=off',       //Disable safe search
    'newwindow=1',    //Open links in new tab
    'pws=0',          //Disable personalized search
    'complete=0',     //Disable instant search
//    'as_qdr=y15',     //Display when sites released
//    'adtest=on',    //Turn off AdWords database connection
                      //See https://developers.google.com/custom-search-ads/docs/reference#adtest for detail
];

var deleteParams = [
    //--- Tracking Params ---
    //Thx: http://www.blueglass.com/blog/google-search-url-parameters-query-string-anatomy/

    'client',         //Browser Name
    'sclient',        //Browser Name
    'sourceid',       //Source of the query
    'source',         //Source of the query
    'oq',             //What you typed before you made a selection
                      //from the suggestions
    'aq',             //Google Suggest Tracking (Shows which suggestion you choose)
    'pq',             //Previous Query
    'sa',             //Google SERPs navigation behavior tracking
    'swrnum',         //The number of results the initial query returned
    'as_q',           //When searching within results, the query is added as_q
    'oi',             //Universal search: Group name
    'resnum',         //Universal search: Number of a result within the group

    //--- Maybe Tracking Params, but details unknown ---
    'gs_l',           //Location?
    'bav',
    'bvm',
    'bpcl',
    'biw',            //Client display width?
    'bih',            //Client display height?
    'w',
    'h',
    'tbnh',
    'tbnw',
    'fp',
    'ei',
    'usg',
    'sig2',
    'tbs',
    'ved',

    //--- Appearance Setting Params (default: Disabled) ---
    // If you want to delete these params, please reveal the comment out.
//   'tbo',            //tbo=1: Display search toolbar
//   'prmdo',          //prmdo=1: Expand 'services' in toolbar
//   'sout',           //sout=1: Change UI of Google Image Search to old version
//   'esrch',          //esrch=instantpreviews: Enable instant preview
//   'filter',         //filter=1: Filter similar pages
//   'hl',             //Interface language
//   'lr',             //Search target language
//   'ie',             //Query encoding
//   'oe',             //Search result encoding
//   'noj',            //noj=1: No JavaScript

    //--- Unknown Params ---
    'pdx',
    'ech',
    'psi',
    'emsg',
    'facrc',
    'imgdii',
    'iact',
    'ndsp',
    'tx',
    'ty',
];
// --- /Config ---


var delParamReg = new RegExp('&(?:' + deleteParams.join('=[^&#]*|') + '=[^&#]*)', 'g');
var overwriteParamReg = new RegExp('&(?:' + addParams.map(function(i){return i.split('=')[0];}).join('=[^&#]*|') + '=[^&#]*)', 'g');


//Delete and add params
function urlFix(url){
    var _url = url;

    //delete params
    _url = url.replace(delParamReg, '');

    //overwrite and add params
    _url = _url.replace(overwriteParamReg, '').replace(/&$/, '');
    _url += '&' + addParams.join('&') + '&urlfixed=1';

    return _url;
}

//Reload page when hash is changed (when search from textbox on result page)
function hashChange(){
    //Exclude Image Search
    if(location.search.indexOf('tbm=isch') !== -1) return;

    var newURL = ('https://' +
               location.host + '/search' +
               location.search + '&' +
               location.hash.substr(1));

    newURL = urlFix(newURL);

    location.replace(newURL);
}


if(location.href.indexOf('urlfixed=1') === -1){
    location.replace(urlFix(location.href));
}

window.addEventListener('hashchange', hashChange, false);

})();