Greasy Fork

Greasy Fork is available in English.

Google disable safesearch

Set off google safesearch

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==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!");
        }
    }

})();