twitter.com to nitter

redirects and rewrites all twitter urls to nitter

  1. // ==UserScript==
  2. // @name twitter.com to nitter
  3. // @description redirects and rewrites all twitter urls to nitter
  4. // @namespace azzurite
  5. // @match *://*/*
  6. // @grant none
  7. // @version 1.0.0
  8. // @license GPLv3
  9. // @author -
  10. // @run-at document-start
  11. // ==/UserScript==
  12.  
  13. const NITTER_URL = 'nitter.privacydev.net'
  14. const TWITTER_URL = 'twitter.com'
  15.  
  16. function redirectToNitter () {
  17. document.querySelectorAll('a[href*="'+ TWITTER_URL +'"]').forEach((element) => {
  18. element.href = element.href.replace(TWITTER_URL, NITTER_URL)
  19. element.textContent = element.textContent.replace(TWITTER_URL, NITTER_URL)
  20. })
  21. }
  22.  
  23. if (location.hostname.includes(TWITTER_URL)) location.replace(`https://` + NITTER_URL + location.pathname);
  24.  
  25. document.addEventListener(`DOMContentLoaded`, () => {
  26. (new MutationObserver((mutations) => {
  27. let runCheck = false
  28. for (let mutation of mutations) {
  29. if (mutation.addedNodes.length || mutation.attributeName === 'href') {
  30. runCheck = true
  31. break
  32. }
  33. }
  34. if (runCheck) {
  35. redirectToNitter()
  36. }
  37. })).observe(document.querySelector('body'), {attributeFilter: ['href'], childList: true, subtree: true})
  38.  
  39. redirectToNitter();
  40. });