about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-20 19:00:12 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-20 19:00:12 +0300
commit1a1e0c988cf6ada5e7c420c721fb54858cd0481c (patch)
treebaa4170b3d50e0ab75709491583925e87bd272dc /src
parentupdate instances (diff)
downloadlibredirect-1a1e0c988cf6ada5e7c420c721fb54858cd0481c.zip
Completing on supporting tor #32
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/search.js5
-rw-r--r--src/assets/javascripts/helpers/twitter.js2
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js179
-rw-r--r--src/instances/data.json332
-rw-r--r--src/instances/get_instances.py194
-rw-r--r--src/pages/background/background.js10
6 files changed, 616 insertions, 106 deletions
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 01c47178..39bcdcba 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-  /https?:\/\/(www\.|maps\.|search\.|)google\.com(\/search\?q=..*|\/$)/,
+  /https?:\/\/(www\.|maps\.|search\.|)google\.com(\/search\?..*|\/$)/,
 ];
 let redirects = {
   "searx": {
@@ -132,7 +132,8 @@ let redirects = {
       "https://whooglesearch.net",
       "https://www.whooglesearch.ml",
       "https://whoogle.dcs0.hu"
-    ]
+    ],
+    "tor": []
   },
 };
 const getRedirects = () => redirects;
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index f3511bf7..979ae0b9 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -96,7 +96,7 @@ function setRedirects(val) {
   redirects.nitter = val;
   browser.storage.sync.set({ twitterRedirects: redirects })
   console.log("twitterRedirects:", val)
-  for (const item of nitterRedirectsChecks)
+  for (const item of nitterNormalRedirectsChecks)
     if (!redirects.nitter.normal.includes(item)) {
       var index = nitterRedirectsChecks.indexOf(item);
       if (index !== -1) nitterRedirectsChecks.splice(index, 1);
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 6077124d..d5dfb032 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -18,29 +18,8 @@ const targets = [
 ];
 let redirects = {
   "invidious": {
-    "normal": [
-      "https://yewtu.be",
-      "https://invidious.snopyta.org",
-      "https://vid.puffyan.us",
-      "https://invidious.kavin.rocks",
-      "https://invidio.xamh.de",
-      "https://inv.riverside.rocks",
-      "https://invidious-us.kavin.rocks",
-      "https://invidious.osi.kr",
-      "https://inv.cthd.icu",
-      "https://yt.artemislena.eu",
-      "https://youtube.076.ne.jp",
-      "https://invidious.namazso.eu"
-    ],
-    "tor": [
-      "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
-      "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
-      "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
-      "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion",
-      "http://hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid.onion",
-      "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion",
-      "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion"
-    ]
+    "normal": [],
+    "tor": []
   },
   "piped": {
     "normal": [
@@ -55,7 +34,7 @@ let redirects = {
 
 const getRedirects = () => redirects;
 
-const getCustomRedirects = function () {
+function getCustomRedirects() {
   return {
     "invidious": {
       "normal": [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects],
@@ -141,9 +120,6 @@ function setPipedTorCustomRedirects(val) {
   console.log("pipedTorCustomRedirects: ", val)
 }
 
-
-
-
 function setPipedRedirects(val) {
   redirects.piped = val;
   browser.storage.sync.set({ youtubeRedirects: redirects })
@@ -418,8 +394,9 @@ function addUrlParams(url) {
       ...redirects.invidious.normal,
       ...redirects.invidious.tor,
       ...invidiousNormalCustomRedirects,
-      ...invidiousTorCustomRedirects,
-    ].includes(protocolHost)) {
+      ...invidiousTorCustomRedirects
+    ].includes(protocolHost)
+  ) {
     if (!url.searchParams.has("dark_mode") && theme != "DEFAULT") {
       url.searchParams.append("dark_mode", theme);
       isChanged = true;
@@ -461,7 +438,8 @@ function addUrlParams(url) {
       ...redirects.piped.tor,
       ...pipedNormalCustomRedirects,
       ...pipedTorCustomRedirects,
-    ].includes(protocolHost)) {
+    ].includes(protocolHost)
+  ) {
 
     if (!url.searchParams.has("theme") && theme != "DEFAULT") {
       url.searchParams.append("theme", theme);
@@ -493,76 +471,81 @@ function invidiousInitCookies(tabId) {
   );
 }
 
+
 async function init() {
   return new Promise((resolve) => {
-    browser.storage.sync.get(
-      [
-        "invidiousAlwaysProxy",
-        "invidiousVideoQuality",
-        "youtubeTheme",
-        "persistInvidiousPrefs",
-        "disableYoutube",
-        "OnlyEmbeddedVideo",
-        "youtubeVolume",
-        "invidiousPlayerStyle",
-        "invidiousSubtitles",
-        "youtubeAutoplay",
-        "youtubeRedirects",
-        "youtubeFrontend",
-
-        "invidiousNormalRedirectsChecks",
-        "invidiousNormalCustomRedirects",
-
-        "invidiousTorRedirectsChecks",
-        "invidiousTorCustomRedirects",
-
-        "pipedNormalRedirectsChecks",
-        "pipedNormalCustomRedirects",
-
-        "pipedTorRedirectsChecks",
-        "pipedTorCustomRedirects",
-        "alwaysusePreferred",
-        "freetubeFrontend",
-
-        "youtubeProtocol",
-      ],
-      (result) => {
-        if (result.youtubeRedirects) redirects = result.youtubeRedirects;
-
-        disable = result.disableYoutube ?? false;
-        protocol = result.youtubeProtocol ?? 'normal';
-        frontend = result.youtubeFrontend ?? 'piped';
-        freetubeFrontend = result.freetubeFrontend ?? 'invidious';
-
-        theme = result.youtubeTheme ?? 'DEFAULT';
-        volume = result.youtubeVolume ?? '--';
-        autoplay = result.youtubeAutoplay ?? 'DEFAULT';
-
-        invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
-        OnlyEmbeddedVideo = result.OnlyEmbeddedVideo ?? 'both';
-        invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
-        invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'DEFAULT';
-        invidiousSubtitles = result.invidiousSubtitles || '';
-
-        invidiousNormalRedirectsChecks = result.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
-        invidiousNormalCustomRedirects = result.invidiousNormalCustomRedirects ?? [];
-
-        invidiousTorRedirectsChecks = result.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
-        invidiousTorCustomRedirects = result.invidiousTorCustomRedirects ?? [];
-
-        pipedNormalRedirectsChecks = result.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
-        pipedNormalCustomRedirects = result.pipedNormalCustomRedirects ?? [];
-
-        pipedTorRedirectsChecks = result.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
-        pipedTorCustomRedirects = result.pipedTorCustomRedirects ?? [];
-
-        persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
-
-        alwaysusePreferred = result.alwaysusePreferred ?? true;
-
-        resolve();
-      });
-
+    fetch('/instances/data.json').then(response => response.text()).then(data => {
+      let dataJson = JSON.parse(data);
+      browser.storage.sync.get(
+        [
+          "invidiousAlwaysProxy",
+          "invidiousVideoQuality",
+          "youtubeTheme",
+          "persistInvidiousPrefs",
+          "disableYoutube",
+          "OnlyEmbeddedVideo",
+          "youtubeVolume",
+          "invidiousPlayerStyle",
+          "invidiousSubtitles",
+          "youtubeAutoplay",
+          "youtubeRedirects",
+          "youtubeFrontend",
+
+          "invidiousNormalRedirectsChecks",
+          "invidiousNormalCustomRedirects",
+
+          "invidiousTorRedirectsChecks",
+          "invidiousTorCustomRedirects",
+
+          "pipedNormalRedirectsChecks",
+          "pipedNormalCustomRedirects",
+
+          "pipedTorRedirectsChecks",
+          "pipedTorCustomRedirects",
+          "alwaysusePreferred",
+          "freetubeFrontend",
+
+          "youtubeProtocol",
+        ],
+        (result) => {
+          redirects.invidious = dataJson.invidious;
+          if (result.youtubeRedirects) redirects = result.youtubeRedirects;
+
+
+          disable = result.disableYoutube ?? false;
+          protocol = result.youtubeProtocol ?? 'normal';
+          frontend = result.youtubeFrontend ?? 'piped';
+          freetubeFrontend = result.freetubeFrontend ?? 'invidious';
+
+          theme = result.youtubeTheme ?? 'DEFAULT';
+          volume = result.youtubeVolume ?? '--';
+          autoplay = result.youtubeAutoplay ?? 'DEFAULT';
+
+          invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
+          OnlyEmbeddedVideo = result.OnlyEmbeddedVideo ?? 'both';
+          invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
+          invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'DEFAULT';
+          invidiousSubtitles = result.invidiousSubtitles || '';
+
+          invidiousNormalRedirectsChecks = result.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
+          invidiousNormalCustomRedirects = result.invidiousNormalCustomRedirects ?? [];
+
+          invidiousTorRedirectsChecks = result.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
+          invidiousTorCustomRedirects = result.invidiousTorCustomRedirects ?? [];
+
+          pipedNormalRedirectsChecks = result.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
+          pipedNormalCustomRedirects = result.pipedNormalCustomRedirects ?? [];
+
+          pipedTorRedirectsChecks = result.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
+          pipedTorCustomRedirects = result.pipedTorCustomRedirects ?? [];
+
+          persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
+
+          alwaysusePreferred = result.alwaysusePreferred ?? true;
+
+          resolve();
+        });
+    });
   })
 }
 
diff --git a/src/instances/data.json b/src/instances/data.json
new file mode 100644
index 00000000..abaf2488
--- /dev/null
+++ b/src/instances/data.json
@@ -0,0 +1,332 @@
+{
+  "invidious": {
+    "normal": [
+      "https://yewtu.be",
+      "https://invidious.snopyta.org",
+      "https://vid.puffyan.us",
+      "https://invidious.kavin.rocks",
+      "https://invidio.xamh.de",
+      "https://inv.riverside.rocks",
+      "https://invidious-us.kavin.rocks",
+      "https://invidious.osi.kr",
+      "https://tube.cthd.icu",
+      "https://invidious.flokinet.to",
+      "https://yt.artemislena.eu",
+      "https://invidious.privacy.gd",
+      "https://youtube.076.ne.jp",
+      "https://invidious.namazso.eu"
+    ],
+    "tor": [
+      "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
+      "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
+      "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
+      "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion",
+      "http://hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid.onion",
+      "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion",
+      "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion",
+      "http://2rorw2w54tr7jkasn53l5swbjnbvz3ubebhswscnc54yac6gmkxaeeqd.onion"
+    ]
+  },
+  "nitter": {
+    "normal": [
+      "https://nitter.net",
+      "https://nitter.42l.fr",
+      "https://nitter.pussthecat.org",
+      "https://nitter.nixnet.services",
+      "https://nitter.fdn.fr",
+      "https://nitter.1d4.us",
+      "https://nitter.kavin.rocks",
+      "https://nitter.unixfox.eu",
+      "https://nitter.domain.glass",
+      "https://nitter.eu",
+      "https://nitter.namazso.eu",
+      "https://nitter.actionsack.com",
+      "https://birdsite.xanny.family",
+      "https://nitter.hu",
+      "https://twitr.gq",
+      "https://nitter.moomoo.me",
+      "https://nittereu.moomoo.me",
+      "https://bird.trom.tf",
+      "https://nitter.it",
+      "https://twitter.censors.us",
+      "https://nitter.grimneko.de",
+      "https://nitter.alefvanoon.xyz",
+      "https://n.hyperborea.cloud",
+      "https://nitter.ca",
+      "https://twitter.076.ne.jp",
+      "https://nitter.mstdn.social",
+      "https://nitter.fly.dev",
+      "https://notabird.site",
+      "https://nitter.weiler.rocks",
+      "https://nitter.silkky.cloud",
+      "https://nitter.sethforprivacy.com",
+      "https://nttr.stream",
+      "https://nitter.cutelab.space",
+      "https://nitter.nl",
+      "https://nitter.mint.lgbt",
+      "https://nitter.tokhmi.xyz",
+      "https://nitter.bus-hit.me",
+      "https://fuckthesacklers.network",
+      "https://nitter.govt.land",
+      "https://nitter.datatunnel.xyz",
+      "https://nitter.esmailelbob.xyz",
+      "https://tw.artemislena.eu",
+      "https://de.nttr.stream",
+      "https://nitter.winscloud.net",
+      "https://nitter.tiekoetter.com"
+    ],
+    "tor": [
+      "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion",
+      "http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion",
+      "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion",
+      "http://npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid.onion",
+      "http://nitter.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd.onion",
+      "http://i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad.onion",
+      "http://26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onion",
+      "http://vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad.onion",
+      "http://iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd.onion",
+      "http://erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad.onion",
+      "http://ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd.onion",
+      "http://jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid.onion",
+      "http://nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad.onion",
+      "http://nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd.onion",
+      "http://nitter.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion",
+      "http://ibsboeui2im5o7dxnik3s5yghufumgy5abevtij5nbizequfpu4qi4ad.onion"
+    ]
+  },
+  "bibliogram": {
+    "normal": [
+      "https://bibliogram.art",
+      "https://bibliogram.snopyta.org",
+      "https://bibliogram.pussthecat.org",
+      "https://bibliogram.1d4.us",
+      "https://insta.trom.tf",
+      "https://bib.riverside.rocks",
+      "https://bibliogram.esmailelbob.xyz",
+      "https://bib.actionsack.com",
+      "https://biblio.alefvanoon.xyz"
+    ]
+  },
+  "teddit": {
+    "normal": [
+      "https://teddit.net",
+      "https://teddit.ggc-project.de",
+      "https://teddit.kavin.rocks",
+      "https://teddit.zaggy.nl",
+      "https://teddit.namazso.eu",
+      "https://teddit.nautolan.racing",
+      "https://teddit.tinfoil-hat.net",
+      "https://teddit.domain.glass",
+      "https://snoo.ioens.is",
+      "https://teddit.httpjames.space",
+      "https://teddit.alefvanoon.xyz",
+      "https://incogsnoo.com",
+      "https://teddit.pussthecat.org",
+      "https://reddit.lol",
+      "https://teddit.sethforprivacy.com",
+      "https://teddit.totaldarkness.net",
+      "https://teddit.adminforge.de",
+      "https://teddit.bus-hit.me"
+    ],
+    "tor": [
+      "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion",
+      "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion",
+      "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion",
+      "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion",
+      "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion",
+      "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion"
+    ]
+  },
+  "wikiless": {
+    "normal": [
+      "https://wikiless.org",
+      "https://wikiless.alefvanoon.xyz",
+      "https://wikiless.sethforprivacy.com",
+      "https://wiki.604kph.xyz"
+    ],
+    "tor": [
+      "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion"
+    ]
+  },
+  "scribe": {
+    "normal": [
+      "https://scribe.rip",
+      "https://scribe.nixnet.services",
+      "https://scribe.citizen4.eu",
+      "https://scribe.bus-hit.me"
+    ]
+  },
+  "simplyTranslate": {
+    "normal": [
+      "https://simplytranslate.org",
+      "https://st.alefvanoon.xyz",
+      "https://translate.josias.dev",
+      "https://translate.namazso.eu",
+      "https://translate.riverside.rocks",
+      "https://manerakai.asuscomm.com:447",
+      "https://translate.bus-hit.me",
+      "https://simplytranslate.pussthecat.org",
+      "https://translate.northboot.xyz",
+      "https://translate.tiekoetter.com"
+    ],
+    "tor": [
+      "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion",
+      "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion"
+    ]
+  },
+  "lingva": {
+    "normal": [
+      "https://lingva.ml",
+      "https://translate.alefvanoon.xyz",
+      "https://translate.igna.rocks",
+      "https://lingva.pussthecat.org",
+      "https://translate.datatunnel.xyz",
+      "https://lingva.esmailelbob.xyz"
+    ]
+  },
+  "searx": {
+    "normal": [
+      "https://anon.sx",
+      "https://darmarit.org/searx",
+      "https://dynabyte.ca",
+      "https://engo.mint.lgbt",
+      "https://jsearch.pw",
+      "https://metasearch.nl",
+      "https://nibblehole.com",
+      "https://northboot.xyz",
+      "https://paulgo.io",
+      "https://procurx.pt",
+      "https://s.zhaocloud.net",
+      "https://search.antonkling.se",
+      "https://search.asynchronousexchange.com",
+      "https://search.biboumail.fr",
+      "https://search.bus-hit.me",
+      "https://search.disroot.org",
+      "https://search.ethibox.fr",
+      "https://search.jpope.org",
+      "https://search.mdosch.de",
+      "https://search.neet.works",
+      "https://search.ononoki.org",
+      "https://search.snopyta.org",
+      "https://search.st8.at",
+      "https://search.stinpriza.org",
+      "https://search.trom.tf",
+      "https://search.zdechov.net",
+      "https://search.zzls.xyz",
+      "https://searx-private-search.de",
+      "https://searx.bar",
+      "https://searx.be",
+      "https://searx.bissisoft.com",
+      "https://searx.divided-by-zero.eu",
+      "https://searx.dresden.network",
+      "https://searx.ebnar.xyz",
+      "https://searx.esmailelbob.xyz",
+      "https://searx.everdot.org",
+      "https://searx.fmac.xyz",
+      "https://searx.fossencdi.org",
+      "https://searx.gnous.eu",
+      "https://searx.gnu.style",
+      "https://searx.hardwired.link",
+      "https://searx.lavatech.top",
+      "https://searx.mastodontech.de",
+      "https://searx.mha.fi",
+      "https://searx.mxchange.org",
+      "https://searx.nakhan.net",
+      "https://searx.netzspielplatz.de",
+      "https://searx.nevrlands.de",
+      "https://searx.ninja",
+      "https://searx.nixnet.services",
+      "https://searx.openhoofd.nl",
+      "https://searx.operationtulip.com",
+      "https://searx.org",
+      "https://searx.prvcy.eu",
+      "https://searx.pwoss.org",
+      "https://searx.rasp.fr",
+      "https://searx.roughs.ru",
+      "https://searx.ru",
+      "https://searx.run",
+      "https://searx.sadblog.xyz",
+      "https://searx.semipvt.com",
+      "https://searx.slash-dev.de",
+      "https://searx.solusar.de",
+      "https://searx.sp-codes.de",
+      "https://searx.stuehieyr.com",
+      "https://searx.theanonymouse.xyz",
+      "https://searx.thegreenwebfoundation.org",
+      "https://searx.tiekoetter.com",
+      "https://searx.tk",
+      "https://searx.tux.land",
+      "https://searx.tuxcloud.net",
+      "https://searx.tyil.nl",
+      "https://searx.vitanetworks.link",
+      "https://searx.webheberg.info",
+      "https://searx.xkek.net",
+      "https://searx.xyz",
+      "https://searx.zackptg5.com",
+      "https://searx.zapashcanon.fr",
+      "https://searx.zecircle.xyz",
+      "https://serx.cf",
+      "https://spot.ecloud.global",
+      "https://suche.dasnetzundich.de",
+      "https://suche.uferwerk.org",
+      "https://swag.pw",
+      "https://sx.catgirl.cloud",
+      "https://sx.fedi.tech",
+      "https://timdor.noip.me/searx",
+      "https://trovu.komun.org",
+      "https://www.gruble.de",
+      "https://www.webrats.xyz",
+      "https://xeek.com",
+      "https://searx.roflcopter.fr"
+    ],
+    "tor": [
+      "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
+      "http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion",
+      "http://suche.xyzco456vwisukfg.onion",
+      "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion",
+      "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion",
+      "http://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion",
+      "http://search.4bkxscubgtxwvhpe.onion",
+      "http://juy4e6eicawzdrz7.onion",
+      "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
+      "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
+      "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion",
+      "http://searx.cwuzdtzlubq5uual.onion",
+      "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
+      "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion",
+      "http://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion"
+    ],
+    "i2p": [
+      "http://ransack.i2p",
+      "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
+    ]
+  },
+  "whoogle": {
+    "normal": [
+      "https://gowogle.voring.me",
+      "https://s.alefvanoon.xyz",
+      "https://search.albony.xyz",
+      "https://search.garudalinux.org",
+      "https://search.sethforprivacy.com",
+      "https://whoogle.fossho.st",
+      "https://whooglesearch.net",
+      "https://www.whooglesearch.ml",
+      "https://whoogle.dcs0.hu",
+      "https://whoogle.esmailelbob.xyz"
+    ]
+  },
+  "rimgo": {
+    "normal": [
+      "https://i.bcow.xyz",
+      "https://rimgo.bcow.xyz",
+      "https://rimgo.pussthecat.org",
+      "https://img.riverside.rocks",
+      "https://rimgo.totaldarkness.net",
+      "https://rimgo.bus-hit.me"
+    ],
+    "tor": [
+      "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion",
+      "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py
new file mode 100644
index 00000000..0929bd22
--- /dev/null
+++ b/src/instances/get_instances.py
@@ -0,0 +1,194 @@
+# Note: Run this script from the root of the repo
+
+import requests
+import json
+from urllib.parse import urlparse
+from bs4 import BeautifulSoup
+
+mightyList = {}
+
+
+def get_host_name(link):
+    url = urlparse(link)
+    return url.netloc
+
+
+# Invidious
+r = requests.get('https://api.invidious.io/instances.json')
+rJson = json.loads(r.text)
+invidiousList = {}
+invidiousList['normal'] = []
+invidiousList['tor'] = []
+for instance in rJson:
+    if instance[1]['type'] == 'https':
+        invidiousList['normal'].append(instance[1]['uri'])
+    elif instance[1]['type'] == 'tor':
+        invidiousList['tor'].append(instance[1]['uri'])
+mightyList['invidious'] = invidiousList
+print('fetched Invidious')
+
+
+# Nitter
+r = requests.get('https://github.com/zedeus/nitter/wiki/Instances')
+soup = BeautifulSoup(r.text, 'html.parser')
+markdownBody = soup.find(class_='markdown-body')
+tables = markdownBody.find_all('table')
+tables.pop(3)
+tables.pop(3)
+nitterList = {}
+nitterList['normal'] = []
+nitterList['tor'] = []
+for table in tables:
+    tbody = table.find('tbody')
+    trs = tbody.find_all('tr')
+    for tr in trs:
+        td = tr.find('td')
+        a = td.find('a')
+        url = a.contents[0]
+        if url.endswith('.onion'):
+            url = 'http://' + url
+            nitterList['tor'].append(url)
+        else:
+            url = 'https://' + url
+            nitterList['normal'].append(url)
+mightyList['nitter'] = nitterList
+print('fetched Nitter')
+
+# Bibliogram
+r = requests.get('https://bibliogram.art/api/instances')
+rJson = json.loads(r.text)
+bibliogramList = {}
+bibliogramList['normal'] = []
+for item in rJson['data']:
+    bibliogramList['normal'].append(item['address'])
+mightyList['bibliogram'] = bibliogramList
+print('fetched Bibliogram')
+
+
+# Teddit
+r = requests.get(
+    'https://codeberg.org/teddit/teddit/raw/branch/main/instances.json')
+rJson = json.loads(r.text)
+tedditList = {}
+tedditList['normal'] = []
+tedditList['tor'] = []
+for item in rJson:
+    url = item['url']
+    if url != '':
+        tedditList['normal'].append(url)
+    if 'tor' in item:
+        onion = item['tor']
+        if onion != '':
+            tedditList['tor'].append(onion)
+
+mightyList['teddit'] = tedditList
+print('fetched Teddit')
+
+
+# Wikiless
+r = requests.get('https://wikiless.org/instances.json')
+rJson = json.loads(r.text)
+wikilessList = {}
+wikilessList['normal'] = []
+wikilessList['tor'] = []
+for item in rJson:
+    if item.endswith('.onion'):
+        wikilessList['tor'].append('http://' + item)
+    else:
+        wikilessList['normal'].append('https://' + item)
+mightyList['wikiless'] = wikilessList
+print('fetched Wikiless')
+
+# Scribe
+r = requests.get(
+    'https://git.sr.ht/~edwardloveall/scribe/blob/main/docs/instances.json')
+rJson = json.loads(r.text)
+scribeList = {}
+scribeList['normal'] = []
+for item in rJson:
+    scribeList['normal'].append(item)
+mightyList['scribe'] = scribeList
+print('fetched Scribe')
+
+
+# SimplyTranslate
+r = requests.get('https://simple-web.org/instances/simplytranslate')
+simplyTranslateList = {}
+simplyTranslateList['normal'] = []
+for item in r.text.strip().split('\n'):
+    simplyTranslateList['normal'].append('https://' + item)
+
+r = requests.get('https://simple-web.org/instances/simplytranslate_onion')
+simplyTranslateList['tor'] = []
+for item in r.text.strip().split('\n'):
+    simplyTranslateList['tor'].append('http://' + item)
+
+mightyList['simplyTranslate'] = simplyTranslateList
+print('fetched SimplyTranslate')
+
+# LinvgaTranslate
+r = requests.get(
+    'https://raw.githubusercontent.com/TheDavidDelta/lingva-translate/main/instances.json')
+rJson = json.loads(r.text)
+lingvaList = {}
+lingvaList['normal'] = []
+for item in rJson:
+    lingvaList['normal'].append(item)
+mightyList['lingva'] = lingvaList
+print('fetched LinvgaTranslate')
+
+
+# SearX
+r = requests.get('https://searx.space/data/instances.json')
+rJson = json.loads(r.text)
+searxList = {}
+searxList['normal'] = []
+searxList['tor'] = []
+searxList['i2p'] = []
+for item in rJson['instances'].keys():
+    item = item[:-1]
+    if item.endswith('.onion'):
+        searxList['tor'].append(item)
+    elif item.endswith('.i2p'):
+        searxList['i2p'].append(item)
+    else:
+        searxList['normal'].append(item)
+mightyList['searx'] = searxList
+print('fetched SearX')
+
+
+# Whoogle
+r = requests.get(
+    'https://raw.githubusercontent.com/benbusby/whoogle-search/main/misc/instances.txt')
+tmpList = r.text.strip().split('\n')
+whoogleList = {}
+whoogleList['normal'] = []
+for item in tmpList:
+    whoogleList['normal'].append(item)
+mightyList['whoogle'] = whoogleList
+print('fetched Whoogle')
+
+
+# Rimgo
+r = requests.get(
+    'https://codeberg.org/video-prize-ranch/rimgo/raw/branch/main/instances.json')
+rJson = json.loads(r.text)
+rimgoList = {}
+rimgoList['normal'] = []
+rimgoList['tor'] = []
+
+for item in rJson:
+    if item.endswith('.onion'):
+        rimgoList['tor'].append('http://' + item)
+    else:
+        rimgoList['normal'].append('https://' + item)
+mightyList['rimgo'] = rimgoList
+print('fetched Rimgo')
+
+
+# Writing to file
+json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
+with open('src/instances/data.json', 'w') as outfile:
+    outfile.write(json_object)
+# print(json_object)
+print('wrote instances/data.json')
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 69d027bb..d8351d5e 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -15,21 +15,21 @@ import exceptionsHelper from "../../assets/javascripts/helpers/exceptions.js";
 
 window.browser = window.browser || window.chrome;
 
-function wholeInit() {
+async function wholeInit() {
+  youtubeHelper.init()
+  twitterHelper.init()
+  instagramHelper.init()
   mapsHelper.init()
   searchHelper.init()
   translateHelper.init()
-  instagramHelper.init()
   mediumHelper.init()
   redditHelper.init()
-  twitterHelper.init()
   wikipediaHelper.init()
-  youtubeHelper.init()
   imgurHelper.init()
   tiktokHelper.init()
   exceptionsHelper.init()
-}
 
+}
 wholeInit();
 
 browser.storage.onChanged.addListener(wholeInit);