// ==UserScript==
// @name Libre Frontend Redirect
// @namespace https://kolektiva.social/@helios97
// @version 1.3
// @description Gives buttom to redirect from a Libre Frontend instance to another instance to counter rate-limiting. (Currently Supported: Reddit, Quora. Planned: Youtube, github, etc)
// @author Helios97
// @license GNU GPLv3
// @match https://safereddit.com/*
// @match https://libreddit.kavin.rocks/*
// @match https://libreddit.privacy.com.de/*
// @match https://reddit.baby/*
// @match https://libreddit.domain.glass/*
// @match https://libreddit.northboot.xyz/*
// @match https://libreddit.privacydev.net/*
// @match https://l.opnxng.com/*
// @match https://rd.funami.tech/*
// @match https://libreddit.oxymagnesium.com/*
// @match https://libreddit.freedit.eu/*
// @match https://lr.4201337.xyz/*
// @match https://lr.artemislena.eu/*
// @match https://lr.aeong.one/*
// @match https://reddit.smnz.de/*
// @match https://libreddit.bus-hit.me/*
// @match https://reddit.leptons.xyz/*
// @match https://libreddit.lunar.icu/*
// @match https://reddit.moe.ngo/*
// @match https://r.darklab.sh/*
// @match https://snoo.habedieeh.re/*
// @match https://libreddit.kutay.dev/*
// @match https://libreddit.tux.pizza/*
// @match https://quetre.iket.me/*
// @match https://quora.vern.cc/*
// @match https://quetre.pussthecat.org/*
// @match https://quetre.tokhmi.xyz/*
// @match https://quetre.projectsegfau.lt/*
// @match https://quetre.odyssey346.dev/*
// @match https://quetre.privacydev.net/*
// @match https://ask.habedieeh.re/*
// @match https://quetre.blackdrgn.nl/*
// @match https://quetre.lunar.icu/*
// @match https://que.wilbvr.me/*
// @match https://quora.femboy.hu/*
// @match https://questions.whateveritworks.org/*
// @match https://quetre.fascinated.cc/*
// @match https://quetre.frontendfriendly.xyz/*
// @grant none
// @run-at document-end
// ==/UserScript==
// Credit to https://greasyfork.org/en/scripts/469587-reddit-to-libreddit-redirect
// Refactored for general purpose redirect logic, cosmetic changes for mobile friendliness.
(function() {
'use strict';
// List of Libreddit instances
var libredditInstances = [
'safereddit.com',
'libreddit.kavin.rocks',
'libreddit.privacy.com.de',
'reddit.baby',
'libreddit.domain.glass',
'libreddit.northboot.xyz',
'libreddit.privacydev.net',
'l.opnxng.com',
'rd.funami.tech',
'libreddit.oxymagnesium.com',
'libreddit.freedit.eu',
'lr.4201337.xyz',
'lr.artemislena.eu',
'lr.aeong.one',
'reddit.smnz.de',
'libreddit.bus-hit.me',
'reddit.leptons.xyz',
'libreddit.lunar.icu',
'reddit.moe.ngo',
'r.darklab.sh',
'snoo.habedieeh.re',
'libreddit.kutay.dev',
'libreddit.tux.pizza'
];
// List of Quetre instances
var quetreInstances = [
'quetre.iket.me',
'quora.vern.cc',
'quetre.pussthecat.org',
'quetre.tokhmi.xyz',
'quetre.projectsegfau.lt',
'quetre.odyssey346.dev',
'quetre.privacydev.net',
'ask.habedieeh.re',
'quetre.blackdrgn.nl',
'quetre.lunar.icu',
'que.wilbvr.me',
'quora.femboy.hu',
'questions.whateveritworks.org',
'quetre.fascinated.cc',
'quetre.frontendfriendly.xyz'
];
// Get the current instance
var currentInstance = window.location.hostname;
// Check for kind of instance
let instances;
if (libredditInstances.includes(currentInstance)) {
instances = libredditInstances;
} else if (quetreInstances.includes(currentInstance)) {
instances = quetreInstances;
}
// Create the reload button
var reloadButton = document.createElement('button');
reloadButton.textContent = '⇄';
reloadButton.style.position = 'fixed';
reloadButton.style.bottom = '20px';
reloadButton.style.right = '20px';
reloadButton.style.zIndex = '9999';
reloadButton.style.padding = '8px 12px';
reloadButton.style.fontSize = '20px';
reloadButton.style.fontWeight = 'bold';
reloadButton.style.color = '#fff';
reloadButton.style.backgroundColor = '#0079d3';
reloadButton.style.border = 'none';
reloadButton.style.borderRadius = '4px';
reloadButton.style.cursor = 'pointer';
// Add event listener to reload button
reloadButton.addEventListener('click', function() {
// Redirect to a random instance
var randomInstance = instances[Math.floor(Math.random() * instances.length)];
window.location.href = 'https://' + randomInstance + window.location.pathname + window.location.search + window.location.hash;
});
// Append the reload button to the document body
document.body.appendChild(reloadButton);
})();