🏠 返回首頁 

Greasy Fork is available in English.

Google disable safesearch

Set off google safesearch

  1. // ==UserScript==
  2. // @name Google disable safesearch
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.3
  5. // @description Set off google safesearch
  6. // @author You
  7. // @include /^https\:\/\/[a-z]*\.(google)\.[a-z]*/search\?/
  8. // @icon https://www.google.com/s2/favicons?domain=google.com
  9. // @grant none
  10. // @run-at document-start
  11. // ==/UserScript==
  12. (function() {
  13. 'use strict';
  14. var count = 0;
  15. window.addEventListener("load",function(){
  16. run();
  17. });
  18. function disableSafesearch() {
  19. var safeui = document.querySelector("g-menu-item a[aria-label][href*='setprefs?sig']");
  20. // new ui about may 2024
  21. var newsafeuiImage = document.querySelector("[data-sbu^='/setprefs']");
  22. var newsafeuiSearch = document.querySelector("div:has(>[href^='/safesearch']) div");
  23. if(safeui != null){
  24. if(safeui.href.match(/safeui=off$/) == null){
  25. window.location = safeui.href.replace(/safeui=(on|images)$/,"safeui=off");
  26. console.log("Google disable safesearch: done!");
  27. } else {
  28. console.log("Google disable safesearch: nothing to do!");
  29. }
  30. } else if (newsafeuiImage != null){
  31. if(newsafeuiImage.querySelector("[data-key='off'][selected='true']") == null) {
  32. if(newsafeuiImage.querySelector("[data-key='off']") != null){
  33. //window.location = document.querySelector("[data-sbu^='/setprefs']").getAttribute("data-sbu") + "&safeui=off"
  34. // document.querySelector("div:has(>[href^='/safesearch']) div").querySelector("span:last-child").innerText != "Off"
  35. newsafeuiImage.querySelector("[data-key='off']").click();
  36. console.log("Google disable safesearch: done!");
  37. }
  38. } else {
  39. console.log("Google disable safesearch: nothing to do!");
  40. }
  41. } else if (newsafeuiSearch != null) { // data-setprefs-off-url
  42. if (document.querySelector("div:has(>[href^='/safesearch']) div").querySelector("span:last-child").innerText != "Off") {
  43. var xhr = new XMLHttpRequest();
  44. xhr.open("GET", "https://www.google.com/safesearch");
  45. xhr.send();
  46. xhr.responseType = "text"
  47. //xhr.responseType = "document";
  48. //xhr.overrideMimeType = "text/xml";
  49. xhr.onload = () => {
  50. if (xhr.readyState == 4 && xhr.status == 200) {
  51. xhr.open("GET", xhr.responseText.match("data-setprefs-off-url=\"([^\"]*)\"")[1].replaceAll("amp;",""));
  52. xhr.send();
  53. xhr.responseType = "html";
  54. xhr.onload = () => {
  55. if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 204)) {
  56. window.location = window.location;
  57. console.log("Google disable safesearch: done!");
  58. } else {
  59. console.log(`Google disable safesearch: Failed error ${xhr.status}`);
  60. }
  61. };
  62. } else {
  63. console.log(`Google disable safesearch: Failed error ${xhr.status}`);
  64. }
  65. };
  66. } else {
  67. console.log("Google disable safesearch: nothing to do!");
  68. }
  69. } else {
  70. safeui = document.querySelector("g-menu-item a[href*='setprefs?sig'][href$='safeui=off']");
  71. if(safeui != null) {
  72. window.location = safeui.href;
  73. console.log("Google disable safesearch: done!");
  74. } else {
  75. if(document.querySelector("g-menu-item a[href*='setprefs?sig'][href$='safeui=on']") != null){
  76. console.log("Google disable safesearch: nothing to do!");
  77. } else {
  78. console.log(document.querySelector("g-menu-item a[href*='setprefs?sig']"));
  79. console.log("Google disable safesearch: failed!");
  80. }
  81. }
  82. }
  83. }
  84. function run(){
  85. //only few pages have safesearch settings menu
  86. if(document.URL.includes("tbm") == false || document.URL.match(/tbm=(isch|vid|nws)/) != null){
  87. if(document.querySelector("g-menu-item a[href*='setprefs?sig']") == null &&
  88. // new ui may 2024
  89. document.querySelector("[data-sbu^='/setprefs']") == null && document.querySelector("div:has(>[href^='/safesearch']) div") == null){
  90. //wait until safesearch settings menu exist
  91. window.setTimeout(function (){
  92. run();
  93. },50);
  94. count += 1;
  95. if(count > 10){
  96. console.log("Google disable safesearch: too fast!");
  97. count = 0;
  98. }
  99. } else {
  100. disableSafesearch();
  101. }
  102. } else {
  103. console.log("Google disable safesearch: no safesearch page!");
  104. }
  105. }
  106. })();