Greasy Fork is available in English.

Google disable safesearch

Set off google safesearch

// ==UserScript==
// @name         Google disable safesearch
// @namespace    http://tampermonkey.net/
// @version      0.1.3
// @description  Set off google safesearch
// @author       You
// @include      /^https\:\/\/[a-z]*\.(google)\.[a-z]*/search\?/
// @icon         https://www.google.com/s2/favicons?domain=google.com
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';
    var count = 0;
    window.addEventListener("load",function(){
        run();
    });

    function disableSafesearch() {
        var safeui = document.querySelector("g-menu-item a[aria-label][href*='setprefs?sig']");
        // new ui about may 2024
        var newsafeuiImage = document.querySelector("[data-sbu^='/setprefs']");
        var newsafeuiSearch = document.querySelector("div:has(>[href^='/safesearch']) div");

        if(safeui != null){
            if(safeui.href.match(/safeui=off$/) == null){
                window.location = safeui.href.replace(/safeui=(on|images)$/,"safeui=off");
                console.log("Google disable safesearch: done!");
            } else {
                console.log("Google disable safesearch: nothing to do!");
            }
        } else if (newsafeuiImage != null){
            if(newsafeuiImage.querySelector("[data-key='off'][selected='true']") == null) {
                if(newsafeuiImage.querySelector("[data-key='off']") != null){
                    //window.location = document.querySelector("[data-sbu^='/setprefs']").getAttribute("data-sbu") + "&safeui=off"
                    // document.querySelector("div:has(>[href^='/safesearch']) div").querySelector("span:last-child").innerText != "Off"
                    newsafeuiImage.querySelector("[data-key='off']").click();
                    console.log("Google disable safesearch: done!");
                }
            } else {
                console.log("Google disable safesearch: nothing to do!");
            }
        } else if (newsafeuiSearch != null) { // data-setprefs-off-url
            if (document.querySelector("div:has(>[href^='/safesearch']) div").querySelector("span:last-child").innerText != "Off") {
                var xhr = new XMLHttpRequest();
                xhr.open("GET", "https://www.google.com/safesearch");
                xhr.send();
                xhr.responseType = "text"
                //xhr.responseType = "document";
                //xhr.overrideMimeType = "text/xml";
                xhr.onload = () => {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        xhr.open("GET", xhr.responseText.match("data-setprefs-off-url=\"([^\"]*)\"")[1].replaceAll("amp;",""));
                        xhr.send();
                        xhr.responseType = "html";
                        xhr.onload = () => {
                            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 204)) {
                                window.location = window.location;
                                console.log("Google disable safesearch: done!");
                            } else {
                                console.log(`Google disable safesearch: Failed error ${xhr.status}`);
                            }
                        };
                    } else {
                        console.log(`Google disable safesearch: Failed error ${xhr.status}`);
                    }
                };
            } else {
                console.log("Google disable safesearch: nothing to do!");
            }
        } else {
            safeui = document.querySelector("g-menu-item a[href*='setprefs?sig'][href$='safeui=off']");
            if(safeui != null) {
                window.location = safeui.href;
                console.log("Google disable safesearch: done!");
            } else {
                if(document.querySelector("g-menu-item a[href*='setprefs?sig'][href$='safeui=on']") != null){
                    console.log("Google disable safesearch: nothing to do!");
                } else {
                    console.log(document.querySelector("g-menu-item a[href*='setprefs?sig']"));
                    console.log("Google disable safesearch: failed!");
                }
            }
        }
    }

    function run(){
        //only few pages have safesearch settings menu
        if(document.URL.includes("tbm") == false || document.URL.match(/tbm=(isch|vid|nws)/) != null){
            if(document.querySelector("g-menu-item a[href*='setprefs?sig']") == null &&
               // new ui may 2024
               document.querySelector("[data-sbu^='/setprefs']") == null && document.querySelector("div:has(>[href^='/safesearch']) div") == null){
                //wait until safesearch settings menu exist
                window.setTimeout(function (){
                    run();
                },50);
                count += 1;
                if(count > 10){
                    console.log("Google disable safesearch: too fast!");
                    count = 0;
                }
            } else {
                disableSafesearch();
            }
        } else {
            console.log("Google disable safesearch: no safesearch page!");
        }
    }

})();