- // ==UserScript==
- // @name Privacy Redirector
- // @name:bg Пренасочване на поверителността
- // @name:br Rediretor de privacidade
- // @name:cs Přesměrování soukromí
- // @name:de Datenschutz Umleiter
- // @name:da Omdirigeringsenhed for privatlivets fred
- // @name:et Privaatsuse ümbersuunaja
- // @name:es Redirección de privacidad
- // @name:fi Yksityisyydensuojan uudelleenohjaus
- // @name:fr Redirecteur de confidentialité
- // @name:el Επανακατευθυντής απορρήτου
- // @name:hu Adatvédelmi átirányító
- // @name:id Pengarah Privasi
- // @name:it Reindirizzatore di privacy
- // @name:ja プライバシーリダイレクト
- // @name:lt Privatumo nukreipiklis
- // @name:lv Konfidencialitātes pāradresētājs
- // @name:nl Privacy-omleiding
- // @name:pl Przekierownik prywatności
- // @name:pt Redirector de Privacidade
- // @name:ro Redirector de confidențialitate
- // @name:ru Перенаправление конфиденциальности
- // @name:sv Omdirigering av sekretess
- // @name:sl Preusmerjevalnik zasebnosti
- // @name:sk Presmerovanie súkromia
- // @name:tr Gizlilik Yönlendiricisi
- // @name:uk Редиректор конфіденційності
- // @name:zh 隐私重定向器
- // @name:zh-CN 隐私重定向器
- // @description Redirect social media platforms to their privacy respecting frontends
- // @description:bg Пренасочване на платформите за социални медии към заглавните им страници, съобразени с поверителността
- // @description:br Redirecionando as plataformas de mídia social para suas primeiras páginas de privacidade
- // @description:cs Přesměrování platforem sociálních médií na jejich titulní stránky šetrné k soukromí
- // @description:de Leitet von Social-Media-Plattformen auf deren jeweilige datenschutzfreundlicheren Frontends
- // @description:da Omdirigering af sociale medieplatforme til deres privatlivsvenlige forsider
- // @description:et Sotsiaalmeediaplatvormide ümbersuunamine nende privaatsussõbralikele esilehtedele
- // @description:es Redirigir las plataformas de medios sociales a sus portadas respetuosas con la privacidad
- // @description:fi Sosiaalisen median alustojen ohjaaminen yksityisyyden suojaa edistäville etusivuille.
- // @description:fr Rediriger les plateformes de médias sociaux vers leurs pages d'accueil respectueuses de la vie privée
- // @description:el Αναπροσανατολισμός των πλατφορμών κοινωνικής δικτύωσης στις μπροστινές σελίδες τους που είναι φιλικές προς το απόρρητο
- // @description:hu A közösségi médiaplatformok átirányítása az adatvédelem-barát kezdőlapokra
- // @description:id Mengarahkan platform media sosial ke halaman depan yang ramah privasi
- // @description:it Reindirizzare le piattaforme di social media verso le loro pagine frontali che rispettano la privacy
- // @description:ja ソーシャルメディアプラットフォームをプライバシーに配慮したフロントページにリダイレクトする
- // @description:lt Socialinės žiniasklaidos platformų nukreipimas į privatumą užtikrinančius pirmuosius puslapius
- // @description:lv Sociālo plašsaziņas līdzekļu platformu pāradresēšana uz to privātumam draudzīgajām pirmajām lapām.
- // @description:nl Sociale-mediaplatforms omleiden naar hun privacyvriendelijke voorpagina's
- // @description:pl Przekierowanie platform mediów społecznościowych na ich przyjazne dla prywatności strony tytułowe
- // @description:pt Redireccionar as plataformas de redes sociais para as suas primeiras páginas amigas da privacidade
- // @description:ro Redirecționarea platformelor de socializare către paginile lor de început care respectă viața privată
- // @description:ru Перенаправление платформ социальных сетей на их главные страницы, дружественные к конфиденциальности
- // @description:sv Omdirigera sociala medieplattformar till deras integritetsvänliga förstasidor.
- // @description:sl preusmeritev platform družabnih medijev na njihove naslovne strani, ki so prijazne do zasebnosti.
- // @description:sk Presmerovanie platforiem sociálnych médií na ich úvodné stránky, ktoré chránia súkromie
- // @description:tr Sosyal medya platformlarını, gizliliğe saygı duyan önyüzlerine yönlendirir
- // @description:uk Перенаправлення соціальних медіа-платформ на їхні головні сторінки, дружні до приватності
- // @description:zh 将社交媒体平台重定向到其隐私友好的首页
- // @description:zh-CN 将社交媒体平台重定向到其隐私友好的首页
- // @namespace https://github.com/dybdeskarphet/privacy-redirector
- // @author Ahmet Arda Kavakcı
- // @license GPLv3
- // @version 1.3.3
- // @supportURL https://github.com/dybdeskarphet/privacy-redirector
- // @run-at document-start
- // @match *://*.fandom.com/*
- // @match *://*.imdb.com/*
- // @match *://*.imgur.com/*
- // @match *://*.instagram.com/*
- // @match *://*.medium.com/*
- // @match *://*.quora.com/*
- // @match *://*.reddit.com/*
- // @match *://*.reuters.com/*
- // @match *://*.tiktok.com/*
- // @match *://*.twitter.com/*
- // @match *://*.wikipedia.org/*
- // @match *://*.youtube.com/*
- // @match *://imgur.com/*
- // @match *://instagram.com/*
- // @match *://medium.com/*
- // @match *://news.ycombinator.com/*
- // @match *://reddit.com/*
- // @match *://translate.google.com/*
- // @match *://twitter.com/*
- // @match *://youtube.com/*
- // ==/UserScript==
-
- /*
- ___ _ _ ___ _____ _____
- / _ \| \ | | / _ \| ___| ___|
- | | | | \| |_____| | | | |_ | |_
- | |_| | |\ |_____| |_| | _| | _|
- \___/|_| \_| \___/|_| |_|
-
- CHANGE THE RELEVANT VALUE TO "false" TO
- DISABLE THE REDIRECTION/FARSIDE FOR THAT
- PARTICULAR PLATFORM */
-
- // REDIRECTON / FARSIDE
- let fandom = [true, true];
- let gtranslate = [true, true];
- let hackernews = [true, true];
- let imdb = [true, true];
- let imgur = [true, true];
- let instagram = [false, true];
- let medium = [true, true];
- let quora = [true, true];
- let reddit = [true, true];
- let reuters = [true, true];
- let tiktok = [true, true];
- let twitter = [true, true];
- let wikipedia = [true, true];
- let youtube = [true, true];
-
- // // // // // // // // // // // // //
-
- /*
- ___ _
- |_ _|_ __ ___| |_ __ _ _ __ ___ ___ ___
- | || '_ \/ __| __/ _` | '_ \ / __/ _ \/ __|
- | || | | \__ \ || (_| | | | | (_| __/\__ \
- |___|_| |_|___/\__\__,_|_| |_|\___\___||___/
-
- LIST OF INSTANCES TO USE IF FARSIDE IS NOT ENABLED
- */
-
- let bibliogramInstances = [
- "bibliogram.1d4.us",
- "ig.tokhmi.xyz"
- ];
-
- let breezewikiInstances = [
- "breezewiki.com",
- "breezewiki.pussthecat.org",
- "breezewiki.esmailelbob.xyz",
- "bw.vern.cc",
- ];
-
- let invidiousInstances = [
- "invidious.snopyta.org",
- "yewtu.be",
- "vid.puffyan.us",
- "invidious.namazso.eu",
- ];
-
- let libredditInstances = [
- "libreddit.spike.codes",
- "libreddit.org",
- "libreddit.kavin.rocks",
- "reddit.invak.id",
- ];
-
- let libremdbInstances = [
- "libremdb.iket.me",
- "libremdb.pussthecat.org",
- "libremdbeu.herokuapp.com",
- "lmdb.tokhmi.xyz",
- ];
-
- let lingvaInstances = [
- "lingva.ml",
- "translate.igna.wtf",
- "translate.plausibility.cloud",
- "translate.projectsegfau.lt",
- ];
-
- let nitterInstances = [
- "nitter.net",
- "nitter.pussthecat.org",
- "nitter.fdn.fr",
- "nitter.1d4.us",
- ];
-
- let proxitokInstances = [
- "proxitok.pabloferreiro.es",
- "proxitok.pussthecat.org",
- "tok.habedieeh.re",
- "proxitok.esmailelbob.xyz",
- ];
-
- let quetreInstances = [
- "quetre.iket.me",
- "quora.vern.cc",
- "quetre.pussthecat.org",
- "quetre.tokhmi.xyz",
- ];
-
- let rimgoInstances = [
- "i.bcow.xyz",
- "rimgo.pussthecat.org",
- "rimgo.totaldarkness.net",
- "rimgo.bus-hit.me",
- ];
-
- let scribeInstances = [
- "scribe.rip",
- "scribe.nixnet.services",
- "scribe.citizen4.eu",
- "scribe.bus-hit.me",
- ];
-
- let tedditInstances = [
- "teddit.pussthecat.org",
- "teddit.ggc-project.de",
- "teddit.domain.glass",
- "teddit.zaggy.nl",
- ];
-
- let wikilessInstances = [
- "wikiless.org",
- "wikiless.sethforprivacy.com",
- "wiki.604kph.xyz",
- "wikiless.lunar.icu",
- ];
-
- let farsideInstance = "farside.link";
-
- // // // // // // // // // // // // //
-
- var debug_mode = false;
-
- if (debug_mode == true) {
- alert(
- "Hostname: " +
- window.location.hostname +
- "\nPath: " +
- window.location.pathname +
- "\nQuery: " +
- window.location.search +
- "\nHash: " +
- window.location.hash
- );
- }
-
- function redirectInstagram() {
- if (instagram[0] == false) {
- return;
- }
-
- window.stop();
-
- alert("Bibliogram is discontinued, you may want to disable the redirection.");
-
- var selectedInstance = "";
-
- if (instagram[1] == false) {
- selectedInstance =
- bibliogramInstances[
- Math.floor(Math.random() * bibliogramInstances.length)
- ];
- } else {
- selectedInstance = farsideInstance + "/bibliogram";
- }
-
- if (window.location.pathname.startsWith("/accounts/login/")) {
- if (window.location.search.indexOf("/reel/") != -1) {
- // reels
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname.replace("/accounts/login/", "/") +
- window.location.search.replace("?next=/reel", "p") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (window.location.search.indexOf("/p/") == -1) {
- // user pages - it will crash if it's not the second last block
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname.replace("/accounts/login/", "/") +
- window.location.search.replace("?next=", "u") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else {
- // probably a post
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname.replace("/accounts/login/", "") +
- window.location.search.replace("?next=", "") +
- window.location.hash;
-
- window.location.replace(newURL);
- }
- } else {
- if (window.location.pathname == "/") {
- // home page
- location.hostname = selectedInstance;
- } else if (window.location.pathname.startsWith("/reel/")) {
- // reel
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname.replace("/reel", "/p") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (!window.location.pathname.startsWith("/p/")) {
- // user page - it will crash if it's not the second last block
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- "/u" +
- window.location.pathname +
- window.location.search +
- indow.location.hash;
-
- window.location.replace(newURL);
- } else {
- // probably a post
- location.hostname = selectedInstance;
- }
- }
- }
-
- function redirectTwitter() {
- if (twitter[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (twitter[1] == false) {
- selectedInstance =
- nitterInstances[Math.floor(Math.random() * nitterInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/nitter";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
-
- function redirectReddit() {
- if (reddit[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedTeddit = "";
- var selectedLibreddit = "";
-
- if (reddit[1] == false) {
- selectedTeddit =
- tedditInstances[Math.floor(Math.random() * tedditInstances.length)];
- selectedLibreddit =
- libredditInstances[Math.floor(Math.random() * libredditInstances.length)];
- } else {
- selectedTeddit = farsideInstance + "/teddit";
- selectedLibreddit = farsideInstance + "/libreddit";
- }
-
- if (window.location.hostname == "old.reddit.com") {
- let newURL =
- window.location.protocol +
- "//" +
- selectedTeddit +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- } else {
- let newURL =
- window.location.protocol +
- "//" +
- selectedLibreddit +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
- }
-
- function redirectYoutube() {
- if (youtube[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (youtube[1] == false) {
- selectedInstance =
- invidiousInstances[Math.floor(Math.random() * invidiousInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/invidious";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
-
- function redirectTiktok() {
- if (tiktok[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (tiktok[1] == false) {
- selectedInstance =
- proxitokInstances[Math.floor(Math.random() * proxitokInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/proxitok";
- }
-
- if (window.location.pathname.startsWith("/discover")) {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname.replace("discover", "tag") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (window.location.pathname.search(/[a-z][a-z]\-[A-Z][A-Z]/g) != -1) {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- } else {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
- }
-
- function redirectImgur() {
- if (imgur[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (imgur[1] == false) {
- selectedInstance =
- rimgoInstances[Math.floor(Math.random() * rimgoInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/rimgo";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
-
- function redirectMedium() {
- if (medium[0] == false || window.location.pathname == "/") {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (medium[1] == false) {
- selectedInstance =
- scribeInstances[Math.floor(Math.random() * scribeInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/scribe";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
-
- function redirectYoutubeMusic() {
- if (youtube[0] == false) {
- return;
- }
-
- window.stop();
-
- if (window.location.pathname.startsWith("/playlist")) {
- let newURL =
- window.location.protocol +
- "//" +
- "beatbump.ml" +
- window.location.pathname +
- window.location.search.replace("?list=", "/VL") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (window.location.pathname.startsWith("/channel")) {
- let newURL =
- window.location.protocol +
- "//" +
- "beatbump.ml" +
- window.location.pathname.replace("/channel", "/artist") +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (window.location.pathname.startsWith("/explore")) {
- let newURL =
- window.location.protocol +
- "//" +
- "beatbump.ml" +
- window.location.pathname.replace("/explore", "/trending") +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- } else if (window.location.pathname.startsWith("/moods_and_genres")) {
- let newURL =
- window.location.protocol +
- "//" +
- "beatbump.ml" +
- window.location.pathname.replace("/moods_and_genres", "/explore") +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- } else {
- location.hostname = "beatbump.ml";
- }
- }
-
- function redirectHackerNews() {
- if (hackernews[0] == false) {
- return;
- }
-
- window.stop();
- let newURL = window.location.protocol + "//" + "hn.algolia.com";
- window.location.replace(newURL);
- }
-
- function redirectGTranslate() {
- if (gtranslate[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (gtranslate[1] == false) {
- selectedInstance =
- lingvaInstances[Math.floor(Math.random() * lingvaInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/lingva";
- }
-
- if (window.location.search != "") {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search
- .replace(/\?hl=tr/, "")
- .replace(/.sl=/, "")
- .replace("&tl=", "/")
- .replace("&text=", "/")
- .replace("&op=translate", "") +
- window.location.hash;
-
- window.location.replace(newURL);
- } else {
- let newURL = window.location.protocol + "//" + selectedInstance;
- window.location.replace(newURL);
- }
- }
-
- function redirectReuters() {
- if (reuters[0] == false) {
- return;
- }
-
- window.stop();
- location.hostname = "neuters.de";
- }
-
- function redirectWikipedia() {
- if (wikipedia[0] == false) {
- return;
- }
-
- window.stop();
-
- let langCodeIndex = window.location.hostname.search(/^[a-z][a-z]\./);
- var selectedInstance = "";
-
- if (wikipedia[1] == false) {
- selectedInstance =
- wikilessInstances[Math.floor(Math.random() * wikilessInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/wikiless";
- }
-
- if (langCodeIndex != -1) {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- "?lang=" +
- window.location.hostname[langCodeIndex] +
- window.location.hostname[langCodeIndex + 1] +
- window.location.hash;
- window.location.replace(newURL);
- } else {
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- "?lang=en" +
- window.location.hash;
- window.location.replace(newURL);
- }
- }
-
- function redirectImdb() {
- if (imdb[0] == false) {
- return;
- }
-
- if (window.location.pathname.startsWith("/title/")) {
- window.stop();
-
- var selectedInstance = "";
-
- if (imdb[1] == false) {
- selectedInstance =
- libremdbInstances[Math.floor(Math.random() * libremdbInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/libremdb";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
- window.location.replace(newURL);
- }
- }
-
- function redirectQuora() {
- if (quora[0] == false) {
- return;
- }
-
- window.stop();
-
- var selectedInstance = "";
-
- if (quora[1] == false) {
- selectedInstance =
- quetreInstances[Math.floor(Math.random() * quetreInstances.length)];
- } else {
- selectedInstance = farsideInstance + "/quetre";
- }
-
- let newURL =
- window.location.protocol +
- "//" +
- selectedInstance +
- window.location.pathname +
- window.location.search +
- window.location.hash;
-
- window.location.replace(newURL);
- }
-
- function redirectFandom() {
- if (fandom[0] == false) {
- return;
- }
-
- let randomInstance =
- breezewikiInstances[Math.floor(Math.random() * breezewikiInstances.length)];
- let fandomName = window.location.hostname.replace(/\..*/, "");
- let newURL = "";
-
- window.stop();
-
- if (fandomName !== "www") {
- newURL =
- window.location.protocol +
- "//" +
- randomInstance +
- `/${fandomName}` +
- window.location.pathname +
- window.location.search +
- window.location.hash;
- } else {
- newURL = window.location.protocol + "//" + randomInstance;
- }
-
- window.location.replace(newURL);
- }
-
- let urlHostname = window.location.hostname;
-
- switch (urlHostname) {
- case "www.instagram.com":
- redirectInstagram();
- break;
-
- case "twitter.com":
- case "mobile.twitter.com":
- redirectTwitter();
- break;
-
- case "www.reddit.com":
- case "old.reddit.com":
- redirectReddit();
- break;
-
- case "www.youtube.com":
- case "m.youtube.com":
- redirectYoutube();
- break;
-
- case "www.tiktok.com":
- redirectTiktok();
- break;
-
- case "music.youtube.com":
- redirectYoutubeMusic();
- break;
-
- case "news.ycombinator.com":
- redirectHackerNews();
- break;
-
- case "translate.google.com":
- redirectGTranslate();
- break;
-
- case "www.reuters.com":
- redirectReuters();
- break;
-
- case "www.imdb.com":
- redirectImdb();
- break;
-
- case "www.quora.com":
- redirectQuora();
- break;
- }
-
- if (urlHostname.includes("medium.com")) {
- redirectMedium();
- } else if (urlHostname.includes("imgur.com")) {
- redirectImgur();
- } else if (urlHostname.includes("wikipedia.org")) {
- redirectWikipedia();
- } else if (urlHostname.includes("fandom.com")) {
- redirectFandom();
- }