From a69798f5253d1a3042863a2277fe767f8d6414e9 Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Sun, 8 Nov 2020 23:50:55 +0900 Subject: [PATCH 1/8] Update background.js --- background.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/background.js b/background.js index 1e23622..6489526 100644 --- a/background.js +++ b/background.js @@ -129,12 +129,25 @@ const layers = { traffic: "S", // not implemented on OSM, default to standard. bicycling: "C", }; +const notPrivateSearchEngine = [ + "google.com", + "google.co.jp", + "www.google.com", + "www.google.co.jp", +]; +const privateSearchEngine = [ + { link: "https://duckduckgo.com", q: "/" }, + { link: "https://startpage.com", q: "/search/" }, + { link: "https://www.qwant.com", q: "/" }, + { link: "https://www.mojeek.com", q: "/search" }, +]; let disableNitter; let disableInvidious; let disableBibliogram; let disableOsm; let disableOldReddit; +let disableSearchEngine; let nitterInstance; let invidiousInstance; let bibliogramInstance; @@ -172,6 +185,7 @@ browser.storage.sync.get( "disableBibliogram", "disableOsm", "disableOldReddit", + "disableSearchEngine", "alwaysProxy", "onlyEmbeddedVideo", "videoQuality", @@ -192,6 +206,7 @@ browser.storage.sync.get( disableBibliogram = result.disableBibliogram; disableOsm = result.disableOsm; disableOldReddit = result.disableOldReddit; + disableSearchEngine = result.disableSearchEngine; nitterInstance = result.nitterInstance; invidiousInstance = result.invidiousInstance; bibliogramInstance = result.bibliogramInstance; @@ -254,6 +269,9 @@ browser.storage.onChanged.addListener((changes) => { if ("disableOldReddit" in changes) { disableOldReddit = changes.disableOldReddit.newValue; } + if ("disableSearchEngine" in changes) { + disableSearchEngine = changes.disableSearchEngine.newValue; + } if ("alwaysProxy" in changes) { alwaysProxy = changes.alwaysProxy.newValue; } @@ -569,6 +587,28 @@ function redirectReddit(url, initiator, type) { return `${oldRedditView}${url.pathname}${url.search}`; } +function redirectSearchEngine(url, initiator) { + if (disableSearchEngine || isException(url, initiator)) { + return null; + } + if (url.pathname.includes("/home")) { + return null; + } + if (url.pathname.includes("search")) { + searchEngine = + searchEngineInstance || getRandomInstance(privateSearchEngine); + search = ""; + url.search + .slice(1) + .split("&") + .forEach(function (input) { + if (input.startsWith("q=")) search = input; + }); + console.log("search: ", search); + return `${searchEngine.link}${searchEngine.q}?${search}`; + } +} + browser.webRequest.onBeforeRequest.addListener( (details) => { const url = new URL(details.url); @@ -602,6 +642,10 @@ browser.webRequest.onBeforeRequest.addListener( redirect = { redirectUrl: redirectReddit(url, initiator, details.type), }; + } else if (notPrivateSearchEngine.includes(url.host)) { + redirect = { + redirectUrl: redirectSearchEngine(url, initiator), + }; } if (redirect && redirect.redirectUrl) { console.info( From 612d359279eaa4e56b380cf0fa65a43d64b07d5b Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Sun, 8 Nov 2020 23:52:55 +0900 Subject: [PATCH 2/8] Update popup.html --- pages/popup/popup.html | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pages/popup/popup.html b/pages/popup/popup.html index faf0deb..af44b23 100644 --- a/pages/popup/popup.html +++ b/pages/popup/popup.html @@ -138,6 +138,27 @@ + +
+ + + + + + + +
+

Search Engine Redirects

+
+   + +
+
From 1d4c61f4afd8a78d08a0a0504a1b799f6abb73ce Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Sun, 8 Nov 2020 23:58:22 +0900 Subject: [PATCH 3/8] Update popup.js --- pages/popup/popup.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pages/popup/popup.js b/pages/popup/popup.js index 3425370..6d4c3ff 100644 --- a/pages/popup/popup.js +++ b/pages/popup/popup.js @@ -5,6 +5,7 @@ let disableInvidious = document.querySelector("#disable-invidious"); let disableBibliogram = document.querySelector("#disable-bibliogram"); let disableOsm = document.querySelector("#disable-osm"); let disableOldReddit = document.querySelector("#disable-old-reddit"); +let disableSearchEngine = document.querySelector("#disable-searchEngine"); let version = document.querySelector("#version"); window.browser = window.browser || window.chrome; @@ -16,6 +17,7 @@ browser.storage.sync.get( "disableBibliogram", "disableOsm", "disableOldReddit", + "disableSearchEngine", "theme", ], (result) => { @@ -25,6 +27,7 @@ browser.storage.sync.get( disableBibliogram.checked = !result.disableBibliogram; disableOsm.checked = !result.disableOsm; disableOldReddit.checked = !result.disableOldReddit; + disableSearchEngine.checked = !result.disableSearchEngine; } ); @@ -50,6 +53,10 @@ disableOldReddit.addEventListener("change", (event) => { browser.storage.sync.set({ disableOldReddit: !event.target.checked }); }); +disableSearchEngine.addEventListener("change", (event) => { + browser.storage.sync.set({ disableSearchEngine: !event.target.checked }); +}); + document.querySelector("#more-options").addEventListener("click", () => { browser.runtime.openOptionsPage(); }); From 7f18b0a4a981ac31385d58ca6e929d50bc57301b Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Mon, 9 Nov 2020 00:01:41 +0900 Subject: [PATCH 4/8] Update options.html --- pages/options/options.html | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pages/options/options.html b/pages/options/options.html index c33dbb4..bd7cee7 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -141,6 +141,28 @@ + +
+ + + + + + + +
+

+ Search Engine Redirects +

+
+   + +

Nitter Instance

From deab58f01511cec66579c3dc1dfd9455418efb48 Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Mon, 9 Nov 2020 00:03:45 +0900 Subject: [PATCH 5/8] Update options.js --- pages/options/options.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pages/options/options.js b/pages/options/options.js index f0e5f0a..3292567 100644 --- a/pages/options/options.js +++ b/pages/options/options.js @@ -70,6 +70,7 @@ let disableInvidious = document.getElementById("disable-invidious"); let disableBibliogram = document.getElementById("disable-bibliogram"); let disableOsm = document.getElementById("disable-osm"); let disableOldReddit = document.getElementById("disable-old-reddit"); +let disableSearchEngine = document.getElementById("disable-searchEngine"); let alwaysProxy = document.getElementById("always-proxy"); let onlyEmbeddedVideo = document.getElementById("only-embed"); let videoQuality = document.getElementById("video-quality"); @@ -127,6 +128,7 @@ browser.storage.sync.get( "disableBibliogram", "disableOsm", "disableOldReddit", + "disableSearchEngine", "alwaysProxy", "onlyEmbeddedVideo", "videoQuality", @@ -157,6 +159,7 @@ browser.storage.sync.get( disableBibliogram.checked = !result.disableBibliogram; disableOsm.checked = !result.disableOsm; disableOldReddit.checked = !result.disableOldReddit; + disableSearchEngine.checked = !result.disableSearchEngine; alwaysProxy.checked = result.alwaysProxy; onlyEmbeddedVideo.checked = result.onlyEmbeddedVideo; videoQuality.value = result.videoQuality || ""; @@ -335,6 +338,10 @@ disableOldReddit.addEventListener("change", (event) => { browser.storage.sync.set({ disableOldReddit: !event.target.checked }); }); +disableSearchEngine.addEventListener("change", (event) => { + browser.storage.sync.set({ disableSearchEngine: !event.target.checked }); +}); + alwaysProxy.addEventListener("change", (event) => { browser.storage.sync.set({ alwaysProxy: event.target.checked }); }); From f483faad4a2bdec435cef4b781aa2bb9218867e5 Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Mon, 9 Nov 2020 00:13:17 +0900 Subject: [PATCH 6/8] Update README.md --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e42d1e8..820daeb 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ [![Edge Extension](assets/images/badge-ms.png)](https://microsoftedge.microsoft.com/addons/detail/privacy-redirect/elnabkhcgpajchapppkhiaifkgikgihj) ## About -A web extension that redirects *Twitter, YouTube, Instagram & Google Maps* requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/iv-org/invidious), [FreeTube](https://github.com/FreeTubeApp/FreeTube), [Bibliogram](https://sr.ht/~cadence/bibliogram/) & [OpenStreetMap](https://www.openstreetmap.org/). +A web extension that redirects *Twitter, YouTube, Instagram, Google Maps & Non-Private Searches* requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/iv-org/invidious), [FreeTube](https://github.com/FreeTubeApp/FreeTube), [Bibliogram](https://sr.ht/~cadence/bibliogram/), [OpenStreetMap](https://www.openstreetmap.org/) & Private Search Engines like [DuckDuckGo](https://duckduckgo.com) and [Startpage](https://startpage.com). -It's possible to toggle all redirects on and off. The extension will default to using random instances if none are selected. If these instances are not working, you can try and set a custom instance from the list below. +It's possible to toggle all redirects on and off. The extension will default to using random instances if none are selected. If these instances are not working, you can try and set a custom instance from the list below. \*Instance for Search Engine redirect cannot be chosen at the moment. ### Custom instances Privacy Redirect allows setting custom instances, instances can be found here: @@ -20,6 +20,11 @@ Privacy Redirect allows setting custom instances, instances can be found here: - [Invidious instances](https://github.com/iv-org/invidious/wiki/Invidious-Instances) - [Bibliogram instances](https://git.sr.ht/~cadence/bibliogram-docs/tree/master/docs/Instances.md) - [OpenStreetMap tile servers](https://wiki.openstreetmap.org/wiki/Tile_servers) +- Private Search Engine list + - [DuckDuckGo](https://duckduckgo.com) + - [Startpage](https://startpage.com) + - [Qwant](https://www.qwant.com) + - [Mojeek](https://www.mojeek.com) ## Build From 27736105d577f63f4a3d3e2410ad2ce37206273f Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Wed, 11 Nov 2020 09:01:33 +0900 Subject: [PATCH 7/8] Update background.js --- background.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/background.js b/background.js index 6489526..cba476f 100644 --- a/background.js +++ b/background.js @@ -129,12 +129,7 @@ const layers = { traffic: "S", // not implemented on OSM, default to standard. bicycling: "C", }; -const notPrivateSearchEngine = [ - "google.com", - "google.co.jp", - "www.google.com", - "www.google.co.jp", -]; +const googleSearchRegex = /https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/; const privateSearchEngine = [ { link: "https://duckduckgo.com", q: "/" }, { link: "https://startpage.com", q: "/search/" }, @@ -642,7 +637,7 @@ browser.webRequest.onBeforeRequest.addListener( redirect = { redirectUrl: redirectReddit(url, initiator, details.type), }; - } else if (notPrivateSearchEngine.includes(url.host)) { + } else if (url.href.match(googleSearchRegex)) { redirect = { redirectUrl: redirectSearchEngine(url, initiator), }; From 9c3ca12b650ac068842a1b766fc80fefccbc6303 Mon Sep 17 00:00:00 2001 From: aapl-yumi Date: Sun, 22 Nov 2020 16:41:43 +0900 Subject: [PATCH 8/8] Updated background.js --- background.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/background.js b/background.js index cba476f..aa0c279 100644 --- a/background.js +++ b/background.js @@ -586,22 +586,17 @@ function redirectSearchEngine(url, initiator) { if (disableSearchEngine || isException(url, initiator)) { return null; } - if (url.pathname.includes("/home")) { - return null; - } - if (url.pathname.includes("search")) { - searchEngine = - searchEngineInstance || getRandomInstance(privateSearchEngine); - search = ""; - url.search - .slice(1) - .split("&") - .forEach(function (input) { - if (input.startsWith("q=")) search = input; - }); - console.log("search: ", search); - return `${searchEngine.link}${searchEngine.q}?${search}`; - } + + let searchEngine = getRandomInstance(privateSearchEngine); + let search = ""; + url.search + .slice(1) + .split("&") + .forEach(function (input) { + if (input.startsWith("q=")) search = input; + }); + console.log("search: ", search); + return `${searchEngine.link}${searchEngine.q}?${search}`; } browser.webRequest.onBeforeRequest.addListener(