Proxy Redirect

Redirect to privacy respecting proxy frontends

目前為 2023-10-17 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Proxy Redirect
  3. // @author Schimon Jehudah, Adv.
  4. // @homepageURL https://greasyfork.org/scripts/465936-proxy-redirect
  5. // @supportURL https://greasyfork.org/scripts/465936-proxy-redirect/feedback
  6. // @copyright 2023, Schimon Jehudah (http://schimon.i2p)
  7. // @license AGPL-3.0-only; https://www.gnu.org/licenses/agpl-3.0.en.html
  8. // @namespace i2p.schimon.proxy-redirect
  9. // @description Redirect to privacy respecting proxy frontends
  10. // @run-at document-start
  11. // @version 23.10.17
  12. // @grant GM_xmlhttpRequest
  13. // @grant GM.xmlHttpRequest
  14. // @exclude *#noredirect
  15. // @match *://bandcamp.com/*
  16. // @match *://*.bandcamp.com/*
  17. // @match *://bilibili.com/*
  18. // @match *://*.bilibili.com/*
  19. // @match *://bing.com/maps*
  20. // @match *://www.bing.com/maps*
  21. // @match *://bing.com/search*
  22. // @match *://www.bing.com/search*
  23. // @match *://bt4g.org/magnet/*
  24. // @match *://*.bt4g.org/magnet/*
  25. // @match *://*.fandom.com/wiki/*
  26. // @match *://gist.github.com/*
  27. // @match *://github.com/*
  28. // @match *://*.github.com/*
  29. // @exclude *://github.com/*/*/*
  30. // @exclude *://github.com/events
  31. // @exclude *://github.com/events/*
  32. // @exclude *://github.com/login*
  33. // @exclude *://github.com/notifications*
  34. // @exclude *://github.com/sessions*
  35. // @exclude *://github.com/signup*
  36. // @exclude *://github.com/topics
  37. // @exclude *://github.com/topics/*
  38. // @exclude *://documentcloud.github.com/*
  39. // @match *://gitlab.com/*
  40. // @match *://goodreads.com/*
  41. // @match *://*.goodreads.com/*
  42. // @match /^(https?:\/\/)?(www\.)?google\.[^\/]+\/maps/i
  43. // @match /^(https?:\/\/)?(www\.)?google\.[^\/]+\/search/i
  44. // @match *://google.com/search*
  45. // @match *://www.google.com/search*
  46. // @match *://google.com/sorry*
  47. // @match *://consent.google.com/*
  48. // @match *://www.google.com/sorry*
  49. // @match *://translate.google.com/*
  50. // @match *://imdb.com/*
  51. // @match *://www.imdb.com/*
  52. // @exclude *://imdb.com/*/*/reviews/*
  53. // @exclude *://www.imdb.com/*/*/reviews/*
  54. // @match *://imgur.com/*
  55. // @match *://i.imgur.com/*
  56. // @match *://instagram.com/*
  57. // @match *://www.instagram.com/*
  58. // @match *://invidious-invidious.invidious.svc.cluster.local:3000/*
  59. // @match *://medium.com/*
  60. // @match *://*.medium.com/*
  61. // @exclude */v2/*
  62. // @exclude */c/*
  63. // @exclude */fit/*
  64. // @exclude */resize:fit:*
  65. // @exclude */format:*
  66. // @match *://moovitapp.com/*
  67. // @match *://*.moovitapp.com/*
  68. // @match *://odysee.com/*
  69. // @match *://*.odysee.com/*
  70. // @match *://quora.com/*
  71. // @match *://*.quora.com/*
  72. // @match *://reuters.com/*
  73. // @match *://*.reuters.com/*
  74. // @match *://tiktok.com/*
  75. // @match *://*.tiktok.com/*
  76. // @match *://reddit.com/*
  77. // @match *://*.reddit.com/*
  78. // @match *://stackoverflow.com/questions/*
  79. // @exclude *://stackoverflow.com/questions/tagged/*
  80. // @match *://www.torrentdownload.info/*
  81. // @exclude *://www.torrentdownload.info/feed_latest
  82. // @exclude *://www.torrentdownload.info/search?q=*
  83. // @match *://torrentz.eu/*
  84. // @exclude *://torrentz.eu/search?f=*
  85. // @match *://*.torrentz.eu/*
  86. // @exclude *://*.torrentz.eu/search?f=*
  87. // @match *://torrentz.me/*
  88. // @exclude *://torrentz.me/search?f=*
  89. // @match *://*.torrentz.me/*
  90. // @exclude *://*.torrentz.me/search?f=*
  91. // @match *://torrentz2.eu/*
  92. // @exclude *://torrentz2.eu/search?f=*
  93. // @match *://torrentz2.is/*
  94. // @exclude *://torrentz.is/search?f=*
  95. // @match *://*.torrentz2.is/*
  96. // @exclude *://*.torrentz.is/search?f=*
  97. // @match *://twitter.com/*
  98. // @exclude *://twitter.com/intent/*
  99. // @match *://*.twitter.com/*
  100. // @exclude *://*.twitter.com/intent/*
  101. // @match *://urbandictionary.com/*
  102. // @match *://*.urbandictionary.com/*
  103. // @match *://userscripts.org/*
  104. // @match *://*.userscripts.org/*
  105. // @match *://waze.com/live-map*
  106. // @match *://*.waze.com/live-map*
  107. // @match *://waze.com/ul*
  108. // @match *://*.waze.com/ul*
  109. // @match *://ul.waze.com/ul*
  110. // @match *://wikimap.toolforge.org/*
  111. // @match *://wikipedia.org/*
  112. // @match *://*.wikipedia.org/*
  113. // @match *://x.com/*
  114. // @exclude *://x.com/intent/*
  115. // @match *://*.x.com/*
  116. // @exclude *://*.x.com/intent/*
  117. // @match *://yahoo.com/search*
  118. // @match *://www.yahoo.com/search*
  119. // @match *://search.yahoo.co.jp/search?p=*
  120. // @match *://search.yahoo.com/?q=*
  121. // @match *://yandex.com/search*
  122. // @match *://www.yandex.com/search*
  123. // @match *://yandex.com/maps/*
  124. // @match *://www.yandex.com/maps/*
  125. // @match *://yandex.ru/search*
  126. // @match *://www.yandex.ru/search*
  127. // @match *://translate.yandex.com/*
  128. // @match *://youtu.be/*
  129. // @match *://youtube.com/*
  130. // @match *://*.youtube.com/*
  131. // @match *://youtube-nocookie.com/*
  132. // @match *://*.youtube-nocookie.com/*
  133. // @connect 0011.lt
  134. // @connect 076.ne.jp
  135. // @connect 1d4.us
  136. // @connect 2syis2nnyytz6jnusnjurva4swlaizlnleiks5mjp46phuwjbdjqwgqd.onion
  137. // @connect 40two.app
  138. // @connect 42l.fr
  139. // @connect 777.tf
  140. // @connect actionsack.com
  141. // @connect adminforge.de
  142. // @connect albony.xyz
  143. // @connect alefvanoon.xyz
  144. // @connect artemislena.eu
  145. // @connect asynchronousexchange.com
  146. // @connect batsense.net
  147. // @connect bibliogram.art
  148. // @connect biblioreads.ga
  149. // @connect biblioreads.ml
  150. // @connect bloatcat.tk
  151. // @connect btdig.i2p
  152. // @connect btdig.com
  153. // @connect btdigggink2pdqzqrik3blmqemsbntpzwxottujilcdjfz56jumzfsyd.onion
  154. // @connect bus-hit.me
  155. // @connect cadence.moe
  156. // @connect catfluori.de
  157. // @connect cblgh.org
  158. // @connect censors.us
  159. // @connect chauvet.pro
  160. // @connect citizen4.eu
  161. // @connect cowfee.moe
  162. // @connect creller.net
  163. // @connect crewz.me
  164. // @connect cn.i2p
  165. // @connect cthd.icu
  166. // @connect datatunnel.xyz
  167. // @connect dcs0.hu
  168. // @connect domain.glass
  169. // @connect duckdns.org
  170. // @connect dynabyte.ca
  171. // @connect ebnar.xyz
  172. // @connect esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion
  173. // @connect esmailelbob.xyz
  174. // @connect etsi.me
  175. // @connect exarius.org
  176. // @connect farside.link
  177. // @connect fdn.fr
  178. // @connect flokinet.to
  179. // @connect flux.industries
  180. // @connect fmac.xyz
  181. // @connect foss.wtf
  182. // @connect froth.zone
  183. // @connect ggc-project.de
  184. // @connect ggtyler.dev
  185. // @connect gnu.style
  186. // @connect go.metastem.su
  187. // @connect grimneko.de
  188. // @connect hostux.net
  189. // @connect hxvy0.gq
  190. // @connect hyperborea.cloud
  191. // @connect iket.me
  192. // @connect il.ax
  193. // @connect incogsnoo.com
  194. // @connect invak.id
  195. // @connect jamiethalacker.dev
  196. // @connect jeikobu.net
  197. // @connect jewtube.i2p
  198. // @connect josias.dev
  199. // @connect jpope.org
  200. // @connect k62ptris7p72aborr4zoanee7xai6wguucveptwgxs5vbgt7qzpq.b32.i2p
  201. // @connect kavin.rocks
  202. // @connect kylrth.com
  203. // @connect ledditqo2mxfvlgobxnlhrkq4dh34jss6evfkdkb2thlvy6dn4f4gpyd.onion
  204. // @connect libredd.it
  205. // @connect libreddit.de
  206. // @connect libreddit.eu.org
  207. // @connect libreddit.hu
  208. // @connect libreddit.nl
  209. // @connect lingva.ml
  210. // @connect lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion
  211. // @connect lunar.icu
  212. // @connect melmac.space
  213. // @connect mint.lgbt
  214. // @connect moeyy.cn
  215. // @connect mutahar.rocks
  216. // @connect moomoo.me
  217. // @connect mywire.org
  218. // @connect namazso.eu
  219. // @connect mdosch.de
  220. // @connect monocles.de
  221. // @connect neet.works
  222. // @connect neuters.de
  223. // @connect netlify.app
  224. // @connect nitter.ca
  225. // @connect nitter.hu
  226. // @connect nitter.it
  227. // @connect nitter.net
  228. // @connect nitter.one
  229. // @connect nixnet.services
  230. // @connect no-logs.com
  231. // @connect northboot.xyz
  232. // @connect nttr.stream
  233. // @connect odyssey346.dev
  234. // @connect ononoki.org
  235. // @connect ooguy.com
  236. // @connect openstreetmap.org
  237. // @connect osi.kr
  238. // @connect oversold.host
  239. // @connect owacon.moe
  240. // @connect pabloferreiro.es
  241. // @connect paulgo.io
  242. // @connect pavot.ca
  243. // @connect phreedom.club
  244. // @connect piped.video
  245. // @connect poketube.fun
  246. // @connect priv.au
  247. // @connect privacy.com.de
  248. // @connect private.coffee
  249. // @connect projectsegfau.lt
  250. // @connect procurx.pt
  251. // @connect prvcy.eu
  252. // @connect puffyan.us
  253. // @connect pussthecat.org
  254. // @connect qwikxx2erhx6qrymued6ox2qkf2yeogjwypqvzoif4fqkljixasr6oid.onion
  255. // @connect r.nf
  256. // @connect rabbit-company.com
  257. // @connect rasp.fr
  258. // @connect resrv.org
  259. // @connect riverside.rocks
  260. // @connect rtrace.io
  261. // @connect scribe.rip
  262. // @connect searx.be
  263. // @connect searx.ninja
  264. // @connect searx.ru
  265. // @connect sethforprivacy.com
  266. // @connect simplytranslate.org
  267. // @connect slipfox.xyz
  268. // @connect smnz.de
  269. // @connect snopyta.org
  270. // @connect sny.sh
  271. // @connect some-things.org
  272. // @connect sp-codes.de
  273. // @connect spike.codes
  274. // @connect spjmllawtheisznfs7uryhxumin26ssv2draj7oope3ok3wuhy43eoyd.onion
  275. // @connect strongthany.cc
  276. // @connect stuehieyr.com
  277. // @connect sugoma.tk
  278. // @connect syncpundit.com
  279. // @connect teddit.i2p
  280. // @connect teddit.net
  281. // @connect tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion
  282. // @connect theanonymouse.xyz
  283. // @connect tinfoil-hat.net
  284. // @connect tiekoetter.com
  285. // @connect tm4rwkeysv3zz3q5yacyr4rlmca2c4etkdobfvuqzt6vsfsu4weq.b32.i2p
  286. // @connect tokhmi.xyz
  287. // @connect totaldarkness.net
  288. // @connect trom.tf
  289. // @connect tromdienste.de
  290. // @connect tux.land
  291. // @connect tuxcloud.net
  292. // @connect tyil.nl
  293. // @connect unixfox.eu
  294. // @connect unofficialbird.com
  295. // @connect userscripts-mirror.org
  296. // @connect vernapl3lpo3huqdx3pjzxqgdgavxjlmdskbvejh2gfqgmjuyvxq.b32.i2p
  297. // @connect vernaqj2qr2pijpgvf3od6ssc3ulz3nv52gwr3hba5l6humuzmgq.b32.i2p
  298. // @connect vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p
  299. // @connect vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion
  300. // @connect vern.cc
  301. // @connect vern.i2p
  302. // @connect voidnet.tech
  303. // @connect vojkovic.xyz
  304. // @connect voring.me
  305. // @connect walkx.org
  306. // @connect webheberg.info
  307. // @connect weblibre.org
  308. // @connect whatever.social
  309. // @connect whatevertinfoil.de
  310. // @connect wikiless.i2p
  311. // @connect wikiless.org
  312. // @connect winscloud.net
  313. // @connect xn--17b.net
  314. // @connect yewtu.be
  315. // @connect yonalee.eu
  316. // @connect ytmous.i2p
  317. // @connect xanny.family
  318. // @connect yacy.iko.soy
  319. // @connect zackptg5.com
  320. // @connect zaggy.nl
  321. // @connect zhaocloud.net
  322. // @connect zzls.i2p
  323. // @connect zzls.xyz
  324. // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjRtbSIgaGVpZ2h0PSI2NG1tIiB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRleHQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTkycHg7bGluZS1oZWlnaHQ6MDt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwO3dyaXRpbmctbW9kZTpsci10YjtkaXJlY3Rpb246bHRyO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7ZG9taW5hbnQtYmFzZWxpbmU6YXV0bztiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtvcGFjaXR5OjE7ZmlsbDojMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjI3OTgyO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO3N0b3AtY29sb3I6IzAwMDtzdG9wLW9wYWNpdHk6MSIgeD0iMTcuMDA1MjQ1IiB5PSIzMS42NTg0MDUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00LjQzNjg1NjQgNDAuODk0OTQpIHNjYWxlKC4yNjQ1OCkiPjx0c3BhbiB4PSIxNy4wMDUyNDUiIHk9IjMxLjY1ODQwNSIgc3R5bGU9ImZvbnQtc2l6ZToxOTJweCI+8J+luDwvdHNwYW4+PC90ZXh0Pjwvc3ZnPgo=
  325. // ==/UserScript==
  326.  
  327. //TODO
  328. //Rebrand: Open Redirect, Proxy Redirect
  329. //Rebrand: Freelink, LibreProxy, Libreproxy, Open Link, Proxy Direct, Proxy Link, Proxy Redirect
  330.  
  331. /*
  332.  
  333. <!-- **Read:** Appeal to [Falkon (QupZilla) Web Browser](#-help-enhancing-userscript-support-for-falkon-web-browser) - Part of the KDE Project -->
  334.  
  335. ## 🕶️ Proxy Redirect <!-- 😎➿⏭️🔁➰ -->
  336. ### _Redirection userscript for privacy-oriented and open-source proxy frontends._
  337.  
  338. Proxy Redirect automatically redirects to instances of privacy-oriented frontends, such as Scribe, Nitter, Libreddit, etc.
  339.  
  340. This allows more reliable access to available public instances per service, while also helping to distribute traffic more evenly across all instances and avoid performance bottlenecks and rate-limiting.
  341.  
  342. ---
  343.  
  344. #### Recommended Userscripts
  345.  
  346. #### ⛓️ [Proxify Links](https://openuserjs.org/scripts/sjehuda/Proxify_Links)
  347. Correct links to privacy respecting proxy frontends.
  348.  
  349. ---
  350.  
  351. #### Please visit our counterparts
  352.  
  353. #### Userscript
  354.  
  355. #### [GreaseMonkey-Redirect](https://codeberg.org/zortazert/GreaseMonkey-Redirect)
  356. Collection of user created GreaseMonkey scripts that will convert privacy disrespecting websites to FOSS/Libre alternatives.
  357.  
  358. #### [Search Engine Jumper](https://openuserjs.org/scripts/sycom/Search_Engine_Jumper) (Search Engine Kangaroo)
  359. When using some search engines the script creates links to a long list of alternative search engines. Don't be a search engine prisoner
  360.  
  361. #### Web Extension
  362.  
  363. #### [Privacy-Redirect](https://github.com/SimonBrazell/privacy-redirect#get)
  364. Simple web extension that redirects requests to privacy friendly counterparts.
  365.  
  366. #### [LibRedirect](https://libredirect.github.io/)
  367. ##### Based on [Privacy-Redirect](#privacy-redirect)
  368. Web extension that redirects requests to privacy friendly frontends and backends.
  369.  
  370. #### [Invidition](https://codeberg.org/Booteille/invidition#downloads)
  371. ##### Deprecated in favor of [Privacy-Redirect](#privacy-redirect)
  372. Invidition is an extension allowing you to redirect requests to their counterparts before loading them.
  373.  
  374. #### Mobile App
  375.  
  376. #### [UntrackMe](https://framagit.org/tom79/nitterizeme#download)
  377. A small application that allows to handle requests and redirect them to their Nitter or Invidious URLs and open them with the appropriate app.
  378.  
  379. #### Server
  380.  
  381. #### [Farside](https://farside.link/)
  382. Redirecting service for FOSS frontends.
  383.  
  384. ---
  385.  
  386. #### <!-- img src="https://raw.githubusercontent.com/KDE/falkon/master/logo.png" height="30" alt="Falkon" title="Download Falkon Browser"/ --> Help enhancing userscript support for <span style='color:MediumPurple'>Falkon web browser</span>
  387. C++ developers, please help [Falkon](https://falkon.org/) web browser‬ to bring [better support](https://bugs.kde.org/show_bug.cgi?id=466533) for [GM.xmlHttpRequest](https://sourceforge.net/p/greasemonkey/wiki/GM_xmlhttpRequest/).
  388.  
  389. If you find this program useful, please help Falkon so we would also be able to enjoy this program. Web browsers that respect our privacy are rare. That's why Falkon is important.
  390.  
  391. ##### Disclosure: This program was made particularly for people who use Falkon, Jumanji, Opera, Otter, Pale Moon, Surf, Uzbl and other web browsers with Userscript support, to which non has a redirector extension like [Privacy-Redirect](#privacy-redirect).
  392.  
  393. _Sincerely,
  394. Schimon Jehudah, Adv._
  395.  
  396. */
  397.  
  398. /*
  399.  
  400. NOTE
  401. This program was inspired by Farside project from Ben Busby
  402. For more information: https://farside.link
  403.  
  404. TODO Brand
  405. FreeDirector, Free Direct, FreeDirect.js
  406. Open Redirector, Open Redirect, Open Direct, OpenDirect.js
  407. Redirect.js, Redirect.user.js, Redirector.js
  408. UserDirect, UserRedirect
  409.  
  410. FIXME
  411. // @match *://*.imgur.com/*
  412. // @exclude *://i.*.imgur.com/*
  413.  
  414. FIXME RegEx
  415. // @exclude /*.medium\.com\/*\/(c|fit|v2)\/.*$/
  416.  
  417. */
  418.  
  419. // https://github.com/makyen
  420. // https://github.com/greasemonkey/greasemonkey/issues/3160#issuecomment-1456758080
  421. const gmXmlhttpRequest = typeof GM_xmlhttpRequest === 'function' ? GM_xmlhttpRequest : GM.xmlHttpRequest;
  422.  
  423. var
  424. loop, attemptCounter = 0,
  425. hostname, pathname,
  426. inst, addr, brand, code, cord, hash, lang, name, para, paras,
  427. farside, partedURL, path, proxyArray, urlArray, instance, modURL, newURL;
  428.  
  429. //const url = location.href;
  430.  
  431. const proxy = {
  432. 'anonymousoverflow' : [
  433. 'http://anonymousoverflow.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  434. 'http://ao.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  435. 'http://vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p',
  436. 'https://anonymousoverflow.esmailelbob.xyz',
  437. 'https://anonymousoverflow.vern.cc',
  438. 'https://ao.bloatcat.tk',
  439. //'https://ao.foss.wtf',
  440. //'https://ao.vern.cc',
  441. 'https://code.whatever.social',
  442. 'https://stackoverflow.vern.cc',
  443. //'https://overflow.777.tf',
  444. 'https://overflow.adminforge.de',
  445. 'https://overflow.hostux.net',
  446. 'https://overflow.lunar.icu',
  447. 'https://overflow.smnz.de'
  448. ], // AnonymousOverflow
  449. 'bibliogram' : [
  450. 'http://qsuiaf4jio2yaxdbj6ljte3jmr6m7g333rujoilbtipjeawnou26frad.onion',
  451. 'https://bib.actionsack.com',
  452. 'https://bib.riverside.rocks',
  453. 'https://biblio.alefvanoon.xyz',
  454. 'https://bibliogram.1d4.us',
  455. 'https://bibliogram.art',
  456. 'https://bibliogram.domain.glass',
  457. 'https://bibliogram.esmailelbob.xyz',
  458. 'https://bibliogram.froth.zone',
  459. 'https://bibliogram.pussthecat.org',
  460. 'https://bibliogram.snopyta.org',
  461. 'https://farside.link/bibliogram',
  462. 'https://insta.trom.tf',
  463. 'https://insta.tromdienste.de'
  464. ], // Bibliogram
  465. 'biblioreads' : [
  466. 'http://biblioreads.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  467. 'http://bl.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  468. 'http://vernapl3lpo3huqdx3pjzxqgdgavxjlmdskbvejh2gfqgmjuyvxq.b32.i2p',
  469. 'https://biblioreads.ga',
  470. 'https://biblioreads.ml',
  471. 'https://biblioreads.esmailelbob.xyz',
  472. 'https://biblioreads.lunar.icu',
  473. 'https://biblioreads.netlify.app',
  474. 'https://bl.vern.cc'
  475. ], // BiblioReads
  476. 'btdigg' : [
  477. 'https://btdig.com',
  478. 'http://btdigggink2pdqzqrik3blmqemsbntpzwxottujilcdjfz56jumzfsyd.onion',
  479. 'http://btdig.i2p'
  480. ], // BTDigg
  481. 'breezewiki' : [
  482. 'https://antifandom.com',
  483. //'https://breeze.777.tf',
  484. 'https://breeze.hostux.net',
  485. //'https://breezewiki.com',
  486. 'https://breezewiki.pussthecat.org',
  487. 'https://bw.artemislena.eu',
  488. 'https://bw.projectsegfau.lt'
  489. ], // BreezeWiki
  490. 'cloudtube' : [
  491. 'https://tube.cadence.moe'
  492. ], // CloudTube
  493. 'gothub' : [
  494. //'https://dev.gh.akisblack.dev',
  495. //'https://gh.777.tf',
  496. //'https://gh.akisblack.dev',
  497. 'https://gh.bloatcat.tk',
  498. //'https://gh.creller.net',
  499. //'https://gh.fascinated.cc',
  500. //'https://gh.odyssey346.dev',
  501. 'https://gh.phreedom.club',
  502. //'https://gh.riverside.rocks',
  503. //'https://gh.vern.cc',
  504. 'https://gothub.dev.projectsegfau.lt',
  505. 'https://gothub.esmailelbob.xyz',
  506. 'https://gothub.lunar.icu',
  507. 'https://gothub.no-logs.com',
  508. 'https://gothub.private.coffee',
  509. 'https://gothub.projectsegfau.lt',
  510. //'https://gothub.xbdm.fun',
  511. ], // GotHub
  512. 'imgin' : [
  513. 'https://farside.link/imgin',
  514. 'https://imgin.voidnet.tech'
  515. ], // imgin
  516. 'invidious' : [
  517. 'http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion',
  518. 'http://euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd.onion',
  519. 'http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion',
  520. 'http://inv.cn.i2p',
  521. 'http://inv.vern.i2p',
  522. 'http://jewtube.i2p',
  523. 'http://ytmous.i2p',
  524. 'http://inv.zzls.i2p',
  525. 'http://invidious.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  526. 'http://invidious.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  527. 'http://iv.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd.onion',
  528. 'http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion',
  529. 'http://ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid.onion',
  530. 'http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion',
  531. 'http://pa7eextqat4wg35onzs4cnlhqa3gvzen243bcbrng67zyla4fqya.b32.i2p',
  532. 'http://qwikxxt6jvggxzxe2v2fuzro5j7ibgphxmblmri6wkj5vpicdbo2kwad.onion',
  533. 'http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion',
  534. 'http://verni6dr4qxjgjumnvesxerh5rvhv6oy5ddeibaqy5d7tgbiiyfa.b32.i2p',
  535. 'http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion',
  536. 'https://farside.link/invidious',
  537. 'https://inv.bp.projectsegfau.lt',
  538. 'https://inv.creller.net',
  539. 'https://inv.odyssey346.dev',
  540. 'https://inv.riverside.rocks',
  541. 'https://inv.vern.cc',
  542. 'https://inv.zzls.xyz',
  543. 'https://invidious.0011.lt',
  544. 'https://invidious.baczek.me',
  545. 'https://invidious.domain.glass',
  546. 'https://invidious.esmailelbob.xyz',
  547. 'https://invidious.flokinet.to',
  548. 'https://invidious.garudalinux.org',
  549. 'https://invidious.kavin.rocks',
  550. 'https://invidious.lunar.icu',
  551. 'https://invidious.mutahar.rocks',
  552. 'https://invidious.namazso.eu',
  553. 'https://invidious.nerdvpn.de',
  554. 'https://invidious.no-logs.com',
  555. //'https://invidious.osi.kr',
  556. 'https://invidious.pavot.ca',
  557. 'https://invidious.privacydev.net',
  558. 'https://invidious.projectsegfau.lt',
  559. 'https://invidious.sethforprivacy.com',
  560. 'https://invidious.slipfox.xyz',
  561. 'https://invidious.snopyta.org',
  562. 'https://invidious.qwik.space',
  563. 'https://invidious.tiekoetter.com',
  564. 'https://invidious.tinfoil-hat.net',
  565. //'https://invidious.weblibre.org',
  566. 'https://invidious-us.kavin.rocks',
  567. 'https://iv.ggtyler.dev',
  568. 'https://iv.melmac.space',
  569. 'https://par1.iv.ggtyler.dev',
  570. //'https://tube.cthd.icu',
  571. 'https://y.com.sb',
  572. 'https://yewtu.be',
  573. 'https://yt.artemislena.eu',
  574. 'https://yt.funami.tech',
  575. 'https://yt.oelrichsgarcia.de',
  576. 'https://vid.priv.au',
  577. 'https://vid.puffyan.us',
  578. 'https://watch.thekitty.zone',
  579. //'https://youtube.076.ne.jp',
  580. 'https://youtube.owacon.moe',
  581. 'https://yt.artemislena.eu'
  582. ], // Invidious
  583. 'laboratory' : [
  584. //'https://lab.bloatcat.tk'
  585. ], // Laboratory
  586. 'libmedium' : [
  587. 'http://md.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  588. 'http://vernaqj2qr2pijpgvf3od6ssc3ulz3nv52gwr3hba5l6humuzmgq.b32.i2p',
  589. 'https://libmedium.batsense.net',
  590. 'https://md.vern.cc',
  591. 'https://medium.hostux.net'
  592. ], // LibMedium
  593. 'libreddit' : [
  594. 'http://ecue64ybzvn6vjzl37kcsnwt4ycmbsyf74nbttyg7rkc3t3qwnj7mcyd.onion',
  595. 'http://fwhhsbrbltmrct5hshrnqlqygqvcgmnek3cnka55zj4y7nuus5muwyyd.onion',
  596. 'http://inytumdgnri7xsqtvpntjevaelxtgbjqkuqhtf6txxhwbll2fwqtakqd.onion',
  597. 'http://kphht2jcflojtqte4b4kyx7p2ahagv4debjj32nre67dxz7y57seqwyd.onion',
  598. 'http://kzhfp3nvb4qp575vy23ccbrgfocezjtl5dx66uthgrhu7nscu6rcwjyd.onion',
  599. 'http://lbrdtjaj7567ptdd4rv74lv27qhxfkraabnyphgcvptl64ijx2tijwid.onion',
  600. 'http://ledditqo2mxfvlgobxnlhrkq4dh34jss6evfkdkb2thlvy6dn4f4gpyd.onion',
  601. 'http://libreddit.2syis2nnyytz6jnusnjurva4swlaizlnleiks5mjp46phuwjbdjqwgqd.onion',
  602. 'http://libreddit.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion',
  603. 'http://libredoxhxwnmsb6dvzzd35hmgzmawsq5i764es7witwhddvpc2razid.onion',
  604. 'http://liredejj74h5xjqr2dylnl5howb2bpikfowqoveub55ru27x43357iid.onion',
  605. 'http://ol5begilptoou34emq2sshf3may3hlblvipdjtybbovpb7c7zodxmtqd.onion',
  606. 'http://qwikxx4xqvhdyyazkrw7pwdpdppfnmn7j2n6cvq5zecm4atbppaslzad.onion',
  607. 'http://spjmllawtheisznfs7uryhxumin26ssv2draj7oope3ok3wuhy43eoyd.onion',
  608. 'http://woo5ugmoomzbtaq6z46q4wgei5mqmc6jkafqfi5c37zni7xc4ymq.b32.i2p',
  609. 'https://farside.link/libreddit',
  610. 'https://discuss.whatever.social',
  611. //'https://de.leddit.xyz',
  612. //'https://leddit.xyz',
  613. //'https://libreddit.40two.app',
  614. 'https://libreddit.albony.xyz',
  615. //'https://libreddit.alefvanoon.xyz',
  616. //'https://libreddit.autarkic.org',
  617. //'https://libreddit.awesomehub.io',
  618. 'https://libreddit.bloatcat.tk',
  619. 'https://libreddit.bus-hit.me',
  620. 'https://libreddit.crewz.me',
  621. //'https://libreddit.database.red',
  622. 'https://libreddit.datatunnel.xyz',
  623. 'https://libreddit.de',
  624. 'https://libreddit.domain.glass',
  625. //'https://libreddit.dothq.co',
  626. //'https://libreddit.drivet.xyz',
  627. 'https://libreddit.esmailelbob.xyz',
  628. 'https://libreddit.eu.org',
  629. 'https://libreddit.flux.industries',
  630. 'https://libreddit.hu',
  631. //'https://libreddit.igna.rocks',
  632. 'https://libredd.it',
  633. 'https://libreddit.jamiethalacker.dev',
  634. 'https://libreddit.kavin.rocks',
  635. 'https://libreddit.kylrth.com',
  636. //'https://libreddit.lunar.icu',
  637. 'https://libreddit.mutahar.rocks',
  638. 'https://libreddit.nl',
  639. 'https://libreddit.no-logs.com',
  640. 'https://libreddit.northboot.xyz',
  641. 'https://libreddit.pabloferreiro.es',
  642. 'https://libreddit.privacy.com.de',
  643. 'https://libreddit.pussthecat.org',
  644. 'https://libreddit.qwik.space',
  645. //'https://libreddit.silkky.cloud',
  646. 'https://libreddit.some-things.org',
  647. 'https://libreddit.spike.codes',
  648. 'https://libreddit.strongthany.cc',
  649. 'https://libreddit.sugoma.tk',
  650. 'https://libreddit.tiekoetter.com',
  651. 'https://libreddit.totaldarkness.net',
  652. 'https://libreddit.winscloud.net',
  653. 'https://libreddit.yonalee.eu',
  654. 'https://lr.cowfee.moe',
  655. 'https://lr.creller.net',
  656. 'https://lr.foss.wtf',
  657. 'https://lr.mint.lgbt',
  658. 'https://lr.oversold.host',
  659. 'https://lr.riverside.rocks',
  660. 'https://lr.slipfox.xyz',
  661. //'https://lr.stilic.ml',
  662. 'https://r.nf',
  663. 'https://r.walkx.org',
  664. //'https://reddi.tk',
  665. 'https://reddit.artemislena.eu',
  666. 'https://reddit.invak.id',
  667. //'https://reddit.phii.me',
  668. 'https://reddit.rtrace.io',
  669. 'https://reddit.stuehieyr.com',
  670. 'https://safereddit.com'
  671. ], // libreddit
  672. 'libremdb' : [
  673. 'http://ld.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  674. 'http://libremdb.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  675. 'http://vernz3ubrntql4wrgyrssd6u3qzi36zrhz2agbo6vibzbs5olk2q.b32.i2p',
  676. 'https://binge.whatever.social',
  677. 'https://ld.vern.cc',
  678. 'https://libremdb.esmailelbob.xyz',
  679. 'https://libremdb.iket.me',
  680. 'https://libremdb.pussthecat.org',
  681. //'https://libremdbeu.herokuapp.com',
  682. 'https://libremdb.jeikobu.net',
  683. 'https://libremdb.lunar.icu',
  684. 'https://lmdb.hostux.net',
  685. 'https://lmdb.tokhmi.xyz',
  686. 'https://farside.link/libremdb'
  687. ], // libremdb
  688. 'librarian' : [
  689. 'http://5znbzx2xcymhddzekfjib3isgqq4ilcyxa2bsq6vqmnvbtgu4f776lqd.onion',
  690. 'http://bxewpsswttslepw27w2hhxhlizwm7l7y54x3jw5cfrb64hb6lgc557ad.onion',
  691. 'http://lbry.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  692. 'http://librarian.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  693. 'https://lbn.frail.duckdns.org',
  694. 'https://lbry.mywire.org',
  695. 'https://lbry.ooguy.com',
  696. 'https://lbry.projectsegfau.lt',
  697. 'https://lbry.slipfox.xyz',
  698. 'https://lbry.vern.cc',
  699. 'https://librarian.esmailelbob.xyz',
  700. 'https://librarian.pussthecat.org',
  701. //'https://odysee.076.ne.jp',
  702. 'https://odysee.owacon.moe',
  703. 'https://farside.link/librarian'
  704. ], // librarian
  705. 'librex' : [
  706. 'http://7huurwog32tny663wkglrhozfoyqyqmsuxjbd7dtudccx44awjda.b32.i2p',
  707. 'http://fcnfg6avz45hqzwbneekq57u2mqbnwa7veyvjcc4dndqbatvkjlaj7yd.onion',
  708. 'http://f7ssz7l3biu4fugwctfpcx4txg5yq4gqhrt473ledsuc3ivtd3omniid.onion',
  709. 'http://librex.revvybrr6pvbx4n3j4475h4ghw4elqr4t5xo2vtd3gfpu2nrsnhh57id.onion',
  710. 'http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion',
  711. 'http://lqbchqljxiwl3bbjt4vqe76luovk5ly6khqhg7mt5qcqfn6e4sbq.b32.i2p',
  712. 'http://lx.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  713. 'http://revekebotog64xrrammtsmjwtwlg3vqyzwdurzt2pu6botg4bejq.b32.i2p',
  714. 'http://search.cepyxplublbyw2f4axy4pyztfbxmf63lrt2c7uwv6wl4iixz53czload.onion',
  715. 'http://search.swxoebbpeqiiixyhbuh3vbw53pdrmtbiaj2sqveol6kkn5rpapfi4aad.onion',
  716. 'http://vernziqfqvweijfaacmwazohgpdo2bt2ib2jlupt2pwwu27bhgxq.b32.i2p',
  717. 'https://buscar.weblibre.org',
  718. 'https://librex.baczek.me',
  719. 'https://librex.bloatcat.tk',
  720. 'https://librex.mikata.ru',
  721. 'https://librex.myroware.eu',
  722. 'https://librex.pufe.org',
  723. 'https://librex.ratakor.com',
  724. 'https://librex.retro-hax.net',
  725. 'https://librex.revvy.de',
  726. 'https://librex.zzls.xyz',
  727. 'https://lx.drain.win',
  728. 'https://lx.vern.cc',
  729. 'https://search.ahwx.org',
  730. 'https://search.davidovski.xyz',
  731. 'https://search.femboy.hu',
  732. 'https://search.funami.tech',
  733. 'https://search.madreyk.xyz',
  734. 'https://search.milivojevic.in.rs',
  735. 'https://search.pabloferreiro.es',
  736. 'https://search.sesu.cc',
  737. 'https://search.tildevarsh.in',
  738. 'https://search.zeroish.xyz',
  739. 'https://farside.link/librex'
  740. ], // LibreX
  741. 'lieu' : [
  742. 'https://lieu.cblgh.org'
  743. ], // Lieu
  744. 'lingva' : [
  745. 'https://farside.link/lingva',
  746. 'https://lingva.ml',
  747. 'https://lingva.pussthecat.org',
  748. 'https://farside.link/lingva'
  749. ], // Lingva
  750. 'map' : [
  751. 'https://facilmap.org',
  752. 'https://www.openstreetmap.org'
  753. ], // Maps
  754. 'metastem' : [
  755. 'https://go.metastem.su'
  756. ], // Met⩜stem
  757. 'mikuinvidious' : [
  758. //'https://mi.resrv.org',
  759. 'https://moeyy.cn/mikuinvidious',
  760. 'https://mikuinv-gs.vern.cc',
  761. 'https://mikuinv.resrv.org'
  762. ], // MikuInvidious
  763. 'neuters' : [
  764. 'https://neuters.de'
  765. ], // Neuters
  766. 'nitter' : [
  767. 'http://tm4rwkeysv3zz3q5yacyr4rlmca2c4etkdobfvuqzt6vsfsu4weq.b32.i2p',
  768. 'http://qwikxx2erhx6qrymued6ox2qkf2yeogjwypqvzoif4fqkljixasr6oid.onion',
  769. 'https://bird.trom.tf',
  770. 'https://birdsite.xanny.family',
  771. 'https://de.nttr.stream',
  772. 'https://farside.link/nitter',
  773. 'https://n.hyperborea.cloud',
  774. 'https://nitter.1d4.us',
  775. 'https://nitter.42l.fr',
  776. 'https://nitter.actionsack.com',
  777. 'https://nitter.bus-hit.me',
  778. 'https://nitter.ca',
  779. 'https://nitter.domain.glass',
  780. //'https://nitter.eu',
  781. 'https://nitter.fdn.fr',
  782. //'https://nitter.ggc-project.de',
  783. 'https://nitter.grimneko.de',
  784. 'https://nitter.hostux.net',
  785. 'https://nitter.hu',
  786. 'https://nitter.it',
  787. //'https://nitter.kavin.rocks',
  788. //'https://nitter.koyu.space',
  789. 'https://nitter.moomoo.me',
  790. 'https://nitter.namazso.eu',
  791. 'https://nitter.net',
  792. 'https://nitter.no-logs.com',
  793. 'https://nitter.one',
  794. //'https://nitter.pussthecat.org',
  795. 'https://nitter.qwik.space',
  796. 'https://nitter.sethforprivacy.com',
  797. 'https://nitter.slipfox.xyz',
  798. 'https://nitter.sneed.network',
  799. 'https://nitter.unixfox.eu',
  800. 'https://nttr.stream',
  801. 'https://read.whatever.social',
  802. //'https://twitter.076.ne.jp',
  803. 'https://twitter.censors.us',
  804. 'https://twitter.owacon.moe',
  805. 'https://unofficialbird.com'
  806. ], // Nitter
  807. 'piped' : [
  808. 'https://farside.link/piped',
  809. 'https://il.ax',
  810. 'https://piped.adminforge.de',
  811. 'https://piped.chauvet.pro',
  812. 'https://piped.esmailelbob.xyz',
  813. 'https://piped.garudalinux.org',
  814. 'https://piped.hostux.net',
  815. 'https://piped.hostux.net',
  816. 'https://piped.in.projectsegfau.lt',
  817. 'https://piped.kavin.rocks',
  818. 'https://piped.lunar.icu',
  819. 'https://piped.mint.lgbt',
  820. 'https://piped.mha.fi',
  821. 'https://piped.moomoo.me',
  822. 'https://piped.no-logs.com',
  823. 'https://piped.palveluntarjoaja.eu',
  824. 'https://piped.privacy.com.de',
  825. 'https://piped.privacydev.net',
  826. 'https://piped.projectsegfau.lt',
  827. 'https://piped.qdi.fi',
  828. 'https://piped.smnz.de',
  829. 'https://piped.tokhmi.xyz',
  830. 'https://piped.tokhmi.xyz',
  831. 'https://piped.video',
  832. 'https://piped.us.projectsegfau.lt',
  833. 'https://watch.leptons.xyz',
  834. 'https://watch.whatever.social',
  835. 'https://watch.whatevertinfoil.de',
  836. 'https://yt.777.tf'
  837. ], // Piped
  838. 'pipedmaterial' : [
  839. //'https://ngp.piped.xn--17b.net',
  840. 'https://piped-material.ftp.sh',
  841. 'https://piped-material.xn--17b.net'
  842. ], // Piped Material
  843. 'poketube' : [
  844. 'https://poketube.fun',
  845. //'https://pt.zzls.xyz'
  846. ], // PokeTube
  847. 'proxitok' : [
  848. 'https://cringe.whatever.social',
  849. 'https://proxitok.pabloferreiro.es',
  850. 'https://proxitok.lunar.icu',
  851. 'https://proxitok.esmailelbob.xyz',
  852. 'https://proxitok.pabloferreiro.es',
  853. 'https://proxitok.privacy.com.de',
  854. 'https://proxitok.privacydev.net',
  855. 'https://proxitok.pufe.org',
  856. 'https://proxitok.pussthecat.org',
  857. 'https://tok.adminforge.de',
  858. 'https://tok.artemislena.eu',
  859. 'https://tok.habedieeh.re',
  860. 'https://tok.thekitty.zone',
  861. 'https://tik.hostux.net',
  862. 'https://tiktok.chauvet.pro',
  863. 'https://tt.vern.cc',
  864. 'https://farside.link/proxitok'
  865. ], // ProxiTok
  866. 'quetre' : [
  867. 'http://ask.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion',
  868. 'http://qr.vern.i2p',
  869. 'http://qr.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  870. 'http://quetre.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  871. 'http://quetre.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  872. 'http://quora.cepyxplublbyw2f4axy4pyztfbxmf63lrt2c7uwv6wl4iixz53czload.onion',
  873. //'https://que.wilbvr.me',
  874. 'https://quetre.iket.me',
  875. 'https://quetre.pussthecat.org',
  876. 'https://quetre.tokhmi.xyz',
  877. 'https://quetre.projectsegfau.lt',
  878. 'https://quetre.esmailelbob.xyz',
  879. //'https://quetre.odyssey346.dev',
  880. 'https://quetre.privacydev.net',
  881. 'https://ask.habedieeh.re',
  882. 'https://quetre.marcopisco.com',
  883. 'https://quetre.blackdrgn.nl',
  884. 'https://quetre.pufe.org',
  885. 'https://quetre.lunar.icu',
  886. 'https://quora.femboy.hu',
  887. 'https://quora.vern.cc',
  888. 'https://farside.link/quetre'
  889. ], // Quetre
  890. 'rimgo' : [
  891. 'https://farside.link/rimgo',
  892. //'https://i.bcow.xyz',
  893. //'https://img.riverside.rocks',
  894. 'https://ri.zzls.xyz',
  895. 'https://rimgo.bus-hit.me',
  896. 'https://rimgo.hostux.net',
  897. 'https://rimgo.pussthecat.org',
  898. 'https://rimgo.totaldarkness.net',
  899. 'https://rimgo.vern.cc'
  900. ], // rimgo
  901. 'ruraldictionary' : [
  902. 'http://rd.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  903. 'http://ruraldictionary.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  904. 'http://vern5cxiaufqvhv4hu5ypkvw3tiwvuinae4evdbqzrioql6s2sha.b32.i2p',
  905. 'https://isdoingyour.mom',
  906. 'https://rd.bloatcat.tk',
  907. 'https://rd.vern.cc',
  908. 'https://ruraldictionary.esmailelbob.xyz'
  909. ], // Rural Dictionary
  910. 'scribe' : [
  911. 'https://farside.link/scribe',
  912. 'https://scribe.bus-hit.me',
  913. 'https://scribe.citizen4.eu',
  914. 'https://scribe.froth.zone',
  915. 'https://scribe.nixnet.services',
  916. 'https://scribe.rip'
  917. ], // Scribe
  918. 'searx' : [
  919. 'https://dynabyte.ca',
  920. 'https://etsi.me',
  921. //'https://farside.link/searx',
  922. 'https://farside.link/searxng',
  923. //'https://monocles.de',
  924. 'https://procurx.pt',
  925. 'https://northboot.xyz',
  926. 'https://paulgo.io',
  927. 'https://recherche.facil.services',
  928. 'https://s.zhaocloud.net',
  929. 'https://search.asynchronousexchange.com',
  930. 'https://search.exarius.org',
  931. 'https://search.jpope.org',
  932. 'https://search.mdosch.de',
  933. 'https://search.neet.works',
  934. 'https://search.ononoki.org',
  935. 'https://search.rabbit-company.com',
  936. 'https://search.vojkovic.xyz',
  937. 'https://search.zzls.xyz',
  938. 'https://searx.be',
  939. 'https://searx.catfluori.de',
  940. 'https://searx.divided-by-zero.eu',
  941. 'https://searx.domain.glass',
  942. 'https://searx.dresden.network',
  943. 'https://searx.ebnar.xyz',
  944. 'https://searx.fmac.xyz',
  945. 'https://searx.foss.wtf',
  946. 'https://searx.gnu.style',
  947. //'https://searx.jaska.cc',
  948. 'https://searx.mha.fi',
  949. 'https://searx.ninja',
  950. 'https://searxng.pavot.ca',
  951. 'https://searx.prvcy.eu',
  952. 'https://searx.rasp.fr',
  953. 'https://searx.ru',
  954. 'https://searx.sp-codes.de',
  955. 'https://searx.stuehieyr.com',
  956. 'https://searx.theanonymouse.xyz',
  957. 'https://searx.tiekoetter.com',
  958. 'https://searx.tux.land',
  959. 'https://searx.tuxcloud.net',
  960. 'https://searx.tyil.nl',
  961. 'https://searx.webheberg.info',
  962. 'https://searxng.no-logs.com',
  963. 'https://searxng.zackptg5.com',
  964. 'https://swag.pw',
  965. 'https://sx.catgirl.cloud',
  966. ], // SearXNG
  967. 'simplytranslate' : [
  968. 'https://farside.link/simplytranslate',
  969. 'https://simplytranslate.esmailelbob.xyz',
  970. 'https://simplytranslate.org',
  971. 'https://simplytranslate.pussthecat.org',
  972. //'https://st.alefvanoon.xyz',
  973. 'https://st.bloatcat.tk',
  974. 'https://st.manerakai.com',
  975. 'https://tl.slipfox.xyz',
  976. 'https://translate.bus-hit.me',
  977. 'https://translate.josias.dev',
  978. 'https://translate.namazso.eu',
  979. 'https://translate.northboot.xyz',
  980. 'https://translate.riverside.rocks',
  981. 'https://translate.syncpundit.com',
  982. 'https://translate.tiekoetter.com'
  983. ], // SimplyTranslate
  984. 'spot' : [
  985. 'https://search.ggc-project.de',
  986. ], // Spot
  987. 'teddit' : [
  988. 'http://[200:5e4b:515c:e42b:3e73:6fbf:2f11:779d]',
  989. 'http://k62ptris7p72aborr4zoanee7xai6wguucveptwgxs5vbgt7qzpq.b32.i2p',
  990. 'http://teddit.i2p',
  991. 'http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion',
  992. 'https://farside.link/teddit',
  993. 'https://incogsnoo.com',
  994. 'https://teddit.adminforge.de',
  995. //'https://teddit.alefvanoon.xyz',
  996. 'https://teddit.bus-hit.me',
  997. //'https://teddit.domain.glass',
  998. 'https://teddit.froth.zone',
  999. //'https://teddit.ggc-project.de',
  1000. 'https://teddit.hostux.net',
  1001. 'https://teddit.httpjames.space',
  1002. 'https://teddit.namazso.eu',
  1003. 'https://teddit.no-logs.com',
  1004. 'https://teddit.net',
  1005. 'https://teddit.projectsegfau.lt',
  1006. 'https://teddit.pussthecat.org',
  1007. 'https://teddit.sethforprivacy.com',
  1008. //'https://teddit.tinfoil-hat.net',
  1009. 'https://teddit.totaldarkness.net',
  1010. 'https://teddit.zaggy.nl'
  1011. ], // teddit
  1012. 'tent' : [
  1013. 'https://tent.sny.sh',
  1014. 'https://tent.bloatcat.tk'
  1015. ], // Tent
  1016. 'uso' : [
  1017. 'https://userscripts-mirror.org'
  1018. ], // UserScripts.org
  1019. 'waybackclassic' : [
  1020. 'http://waybackclassic.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  1021. 'https://waybackclassic.esmailelbob.xyz',
  1022. 'https://wayback-classic.net'
  1023. ], // Wayback Classic
  1024. 'wikiless' : [
  1025. 'http://wikiless.i2p',
  1026. 'https://farside.link/wikiless',
  1027. //'https://wiki.604kph.xyz',
  1028. 'https://wiki.froth.zone',
  1029. //'https://wikiless.alefvanoon.xyz',
  1030. 'https://wikiless.bloatcat.tk',
  1031. //'https://wikiless.lunar.icu',
  1032. 'https://wikiless.northboot.xyz',
  1033. 'https://wikiless.org',
  1034. 'https://wiki.adminforge.de',
  1035. 'https://wiki.slipfox.xyz',
  1036. 'https://wikiless.esmailelbob.xyz',
  1037. 'https://wikiless.funami.tech',
  1038. //'https://wikiless.sethforprivacy.com',
  1039. 'https://wikiless.tiekoetter.com'
  1040. ], // Wikiless
  1041. 'whoogle' : [
  1042. 'http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion',
  1043. 'http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion',
  1044. 'http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  1045. 'http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  1046. 'http://verneks7rfjptpz5fpii7n7nrxilsidi2qxepeuuf66c3tsf4nhq.b32.i2p',
  1047. 'https://farside.link/whoogle',
  1048. 'https://google.owacon.moe',
  1049. 'https://gowogle.voring.me',
  1050. //'https://s.alefvanoon.xyz',
  1051. 'https://s.tokhmi.xyz',
  1052. 'https://search.albony.xyz',
  1053. 'https://search.dr460nf1r3.org',
  1054. 'https://search.foss.wtf',
  1055. 'https://search.garudalinux.org',
  1056. 'https://search.sethforprivacy.com',
  1057. 'https://wgl.frail.duckdns.org',
  1058. 'https://wg.vern.cc',
  1059. 'https://whoogle.dcs0.hu',
  1060. 'https://whoogle.esmailelbob.xyz',
  1061. 'https://whoogle.hxvy0.gq',
  1062. 'https://whoogle.lunar.icu',
  1063. 'https://whoogle.hostux.net',
  1064. 'https://whoogle.link',
  1065. 'https://whoogle.no-logs.com',
  1066. 'https://whoogle.privacydev.net'
  1067. ], // Whoogle
  1068. 'yacy' : [
  1069. 'https://51.79.164.235:8443',
  1070. 'https://58.179.103.130:49153',
  1071. 'https://76.9.226.109:8444',
  1072. 'https://78.55.177.108:8443',
  1073. 'https://85.199.74.98:8443',
  1074. 'https://93.190.202.83:8443',
  1075. 'https://109.230.224.225:8443',
  1076. 'https://162.210.6.138:8443',
  1077. 'https://176.31.104.225:8448',
  1078. //'https://185.243.10.140:8443',
  1079. 'https://farside.link/yacy',
  1080. 'https://search.yacy.net',
  1081. 'https://www.gumx.de:8091',
  1082. 'https://yacy.iko.soy'
  1083. ], // YaCy
  1084. };
  1085.  
  1086. function pageLoader() {
  1087. //window.onprogress = (event) => {
  1088. // /questions/6464592/how-to-align-entire-html-body-to-the-center
  1089. const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><style>html,body{height:100%;}html{display:table;margin:auto;}body{display:table-cell;vertical-align:middle;}body{background-color:#f1f1f1;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif;cursor:default;user-select:none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style:italic;animation:flickerAnimation 1s infinite;}.centerm{display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;}@keyframes flickerAnimation{0%{opacity:1;}50%{opacity:0;}100%{opacity:1;}}.flip{display:inline-block;transform:scaleX(-1);-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;}</style></head><body><div id="message" class="center"></div><div id="loader" class="center">🔀 Redirecting...</div></body></html>';
  1090. //const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><style>html,body{height:100%;}html{display:table;margin:auto;}body{display:table-cell;vertical-align:middle;}body{background-color:#f1f1f1;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif;cursor:default;user-select:none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#icon-tc:before{content:"🔀";font-size:4em;display:flow-root;text-align:center;}#icon-tc{font-size:3em;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style:italic;animation:flickerAnimation 1s infinite;}.centerm{display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;}@keyframes flickerAnimation{0%{opacity:1;}50%{opacity:0;}100%{opacity:1;}}.flip{display:inline-block;transform:scaleX(-1);-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;}</style></head><body><div id="icon-tc"></div><div id="message" class="center"></div><div id="loader" class="center">Redirecting...</div></body></html>';
  1091. //const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="generator" content="Clear Cinema Player" /><style>body {background-color:#efefef;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif; cursor: default; user-select: none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#icon-tc:before{content:"🔀";font-size:4em;display:flow-root;text-align:center;}#icon-tc{font-size:3em;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style: italic;animation:flickerAnimation 1s infinite;} #wait, #reload, #footer {font-size:14px;font-weight:normal;} #wait {font-style: italic;} .centerm {display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;/* border: 3px solid green; */}@keyframes flickerAnimation {0%{opacity:1;}50%{opacity:0;}100% {opacity:1;}}.flip {display: inline-block; transform: scaleX(-1); -moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); filter: FlipH; -ms-filter: FlipH;}</style></head><body><div id="intro" class="center">Proxy Redirect</div><div id="icon-tc" onclick="(function(){document.location = document.location})();"></div><div id="loader" class="center">Redirecting...</div><div id="wait" class="center">Please wait while our monkeys find a working proxy</div><div id="reload" class="center" onclick="(function(){document.location = document.location})();"></div><div id="footer" class="center">Made with <a href="https://falkon.org/">Falkon</a> web browser (<a href="https://openuserjs.org/scripts/sjehuda/Proxy_Redirect/issues">Report issue</a>)</div></body></html>';
  1092. const domParser = new DOMParser();
  1093. const newDocument = domParser.parseFromString(loadPage, 'text/html');
  1094. //newDocument.querySelector('#icon-tc').onclick = () => {disable()}; // FIXME
  1095. //newDocument.querySelector('#icon-tc').addEventListener("click", disable, false);
  1096. const insertDocument = document.importNode(newDocument.documentElement, true);
  1097. const removeDocument = document.documentElement;
  1098. document.replaceChild(insertDocument, removeDocument);
  1099. setTimeout(message, 9000); // FIXME
  1100. }
  1101.  
  1102. function message() {
  1103. var div = document.querySelector('#message');
  1104. if (div) {
  1105. div.innerHTML = `🔀 Continue to ${modURL.hostname}`;
  1106. div.onclick = () => {location.href = modURL};
  1107. document.querySelector('#loader').remove();
  1108. } else {
  1109. location.href = 'https://openuserjs.org/scripts/sjehuda/Proxy_Redirect?autoredirect'
  1110. }
  1111. }
  1112.  
  1113. function noRespond() {
  1114. var div = document.querySelector('#message');
  1115. div.id = 'message-error'
  1116. div.innerHTML = 'Proxy list appears to be out of date. Continue to ' + location.host + ' or...';
  1117. div.onclick = () => {location.href = location.href + '#noredirect'; location.reload()};
  1118. var div = document.querySelector('#loader');
  1119. div.innerHTML = '🥸 Update Proxy Redirect';
  1120. div.onclick = () => {location.href = 'https://openuserjs.org/scripts/sjehuda/Proxy_Redirect'};
  1121. }
  1122.  
  1123. // FIXME
  1124. // /questions/1397329/how-to-remove-the-hash-from-window-location-url-with-javascript-without-page-r
  1125. function disable() {
  1126. window.location.href =
  1127. window.location.href.substr(
  1128. 0,
  1129. window.location.href.indexOf('#'))
  1130. + '#noredirect';
  1131. }
  1132.  
  1133. /*
  1134. loop = setInterval(function() {
  1135. //modifyURL(location.href);
  1136. window.open(newURL,'_self');
  1137. //location.href = newURL;
  1138. console.info('Redirecting to ' + newURL);
  1139. clearInterval(loop);
  1140. }, 1000);
  1141. */
  1142.  
  1143. /*
  1144. function modifyURL() {
  1145. inst = pickURL();
  1146. // make function synchronous
  1147. // /questions/8778267/synchronous-gm-xmlhttprequest-acting-asynchronously
  1148. stat = statRES(inst);
  1149. if (stat.match(200)) {
  1150. newURL = settURL();
  1151. } else {
  1152. pickURL(url);
  1153. }
  1154. return newURL;
  1155. }
  1156. */
  1157.  
  1158. // var caller = (function xhr() {
  1159. var init = (function xhr() {
  1160. instance = pickURL();
  1161. try {
  1162. gmXmlhttpRequest({
  1163. method: 'GET',
  1164. url: instance,
  1165. synchronous: true,
  1166. onprogress: pageLoader(),
  1167. onload: function(response) {
  1168. if (response.finalUrl.startsWith(instance)) {
  1169. location.href = settURL();
  1170. } else {
  1171. instance = instance.slice(instance.lastIndexOf('/')+1);
  1172. instance = instance.replace(/\./g,'-');
  1173. console.warn('Instance URL ' + instance + ' might be out of service. URL has changed. Please report this to the developer.');
  1174. if (maxAttempts()) {
  1175. noRespond()
  1176. return;
  1177. }
  1178. maxAttempts()
  1179. xhr();
  1180. }
  1181. },
  1182. onerror: function(response) {
  1183. instance = instance.slice(instance.lastIndexOf('/')+1);
  1184. instance = instance.replace(/\./g,'-');
  1185. console.warn('Instance URL ' + instance + ' might be offline. Status error: ' + response.status + '. Please report this to the developer.');
  1186. if (maxAttempts()) {
  1187. noRespond()
  1188. return;
  1189. }
  1190. maxAttempts()
  1191. xhr();
  1192. }
  1193. });
  1194. } catch (err) {
  1195. console.warn(err)
  1196. console.info('Please contribute C++ to Greasemonkey for Falkon https://bugs.kde.org/show_bug.cgi?id=466533')
  1197. //pickURL();
  1198. farside = true;
  1199. location.href = settURL();
  1200. }
  1201.  
  1202. })();
  1203.  
  1204. function maxAttempts() {
  1205. attemptCounter = attemptCounter + 1;
  1206. if (attemptCounter == urlArray.length) { return true; }
  1207. }
  1208.  
  1209. function setValue(para) {
  1210. if (partedURL.searchParams.get(para)) {
  1211. para = [para];
  1212. return pickParameters(para);
  1213. } else {
  1214. return 'auto';
  1215. }
  1216. }
  1217.  
  1218. function pickParameters(para) {
  1219. for (let i = 0; i < para.length; i++) {
  1220. if (partedURL.searchParams.get(para[i])) {
  1221. para = partedURL.searchParams.get(para[i]);
  1222. partedURL.searchParams.delete(para[i]);
  1223. return para;
  1224. }
  1225. }
  1226. }
  1227.  
  1228. function pickURL() {
  1229.  
  1230. partedURL = new URL(location.href);
  1231.  
  1232. paras = ['continue', 'retpath']
  1233. for (let i = 0; i < paras.length; i++) {
  1234. if (partedURL.searchParams.get(paras[i])) {
  1235. //partedURL = pickParameters(paras[i]);
  1236. partedURL = partedURL.searchParams.get(paras[i]);
  1237. partedURL = new URL(partedURL);
  1238. }
  1239. }
  1240.  
  1241. hostname = partedURL.hostname;
  1242. pathname = partedURL.pathname;
  1243.  
  1244. switch (true) {
  1245.  
  1246. case hostname.endsWith('bandcamp.com'):
  1247. urlArray = proxy.tent;
  1248. break;
  1249.  
  1250. case hostname.endsWith('bilibili.com'):
  1251. urlArray = proxy.mikuinvidious;
  1252. break;
  1253.  
  1254. case hostname.endsWith('bt4g.org'):
  1255. case hostname.endsWith('torrentdownload.info'):
  1256. case hostname.endsWith('torrentz.eu'):
  1257. case hostname.endsWith('torrentz.me'):
  1258. case hostname.endsWith('torrentz2.is'):
  1259. urlArray = proxy.btdigg;
  1260. break;
  1261.  
  1262. case hostname.endsWith('fandom.com'):
  1263. urlArray = proxy.breezewiki;
  1264. break;
  1265.  
  1266. case hostname.endsWith('github.com'):
  1267. urlArray = proxy.gothub;
  1268. break;
  1269.  
  1270. case hostname.endsWith('gitlab.com'):
  1271. urlArray = proxy.laboratory;
  1272. break;
  1273.  
  1274. case hostname.endsWith('goodreads.com'):
  1275. urlArray = proxy.biblioreads;
  1276. break;
  1277.  
  1278. // TODO quadkey (mapquest)
  1279. // NOTE quadkeyToTile(quadkey) See /mapbox/tilebelt
  1280. case hostname.endsWith('wikimap.toolforge.org'):
  1281. case (hostname.endsWith('moovitapp.com') &&
  1282. partedURL.search.includes('tll')):
  1283. case (hostname.endsWith('bing.com') &&
  1284. pathname.startsWith('/maps')):
  1285. case (hostname.includes('google.') &&
  1286. pathname.startsWith('/maps')):
  1287. case (hostname.includes('waze.com') &&
  1288. pathname.startsWith('/live-map')):
  1289. case (hostname.includes('waze.com') &&
  1290. pathname.startsWith('/ul')):
  1291. case (hostname.includes('yandex.') &&
  1292. pathname.startsWith('/maps')):
  1293. urlArray = proxy.map;
  1294. break;
  1295.  
  1296. case hostname.endsWith('imdb.com'):
  1297. urlArray = proxy.libremdb;
  1298. break;
  1299.  
  1300. case hostname.endsWith('imgur.com'):
  1301. //proxyArray = [proxy.imgin, proxy.rimgo];
  1302. proxyArray = [proxy.rimgo];
  1303. break;
  1304. /*
  1305. case hostname.endsWith('instagram.com'):
  1306. urlArray = proxy.bibliogram;
  1307. break;
  1308. */
  1309. case hostname.endsWith('medium.com'):
  1310. proxyArray = [proxy.libmedium, proxy.scribe];
  1311. break;
  1312.  
  1313. case hostname.endsWith('odysee.com'):
  1314. urlArray = proxy.librarian;
  1315. break;
  1316.  
  1317. case hostname.endsWith('quora.com'):
  1318. urlArray = proxy.quetre;
  1319. break;
  1320.  
  1321. case hostname.endsWith('reddit.com'):
  1322. proxyArray = [proxy.libreddit, proxy.teddit];
  1323. break;
  1324.  
  1325. case hostname.endsWith('reuters.com'):
  1326. urlArray = proxy.neuters;
  1327. break;
  1328.  
  1329. // FIXME
  1330. case (hostname.startsWith('search.yahoo.')):
  1331. case (pathname.startsWith('/search')):
  1332. case (hostname.includes('yandex.') &&
  1333. pathname.startsWith('/search')):
  1334. case (hostname.includes('yahoo.') &&
  1335. pathname.startsWith('/search')):
  1336. case (hostname.includes('bing.') &&
  1337. pathname.startsWith('/search')):
  1338. case (hostname.includes('google.') &&
  1339. pathname.startsWith('/search')):
  1340. proxyArray = [proxy.librex, proxy.lieu,
  1341. proxy.metastem, proxy.searx,
  1342. proxy.spot, proxy.whoogle
  1343. ];
  1344. break;
  1345.  
  1346. case hostname.endsWith('stackoverflow.com'):
  1347. urlArray = proxy.anonymousoverflow;
  1348. break;
  1349.  
  1350. case hostname.endsWith('tiktok.com'):
  1351. urlArray = proxy.proxitok;
  1352. break;
  1353.  
  1354. case (hostname.endsWith('translate.yandex.com')):
  1355. // FIXME website blocks us from redirecting
  1356. // function setTimeout() seems to not work
  1357. // consider different approach/way
  1358. case (hostname.endsWith('translate.google.com')):
  1359. proxyArray = [proxy.lingva, proxy.simplytranslate];
  1360. break;
  1361.  
  1362. case hostname.endsWith('twitter.com'):
  1363. case hostname.endsWith('x.com'):
  1364. urlArray = proxy.nitter;
  1365. break;
  1366.  
  1367. case hostname.endsWith('urbandictionary.com'):
  1368. urlArray = proxy.ruraldictionary;
  1369. break;
  1370.  
  1371. case hostname.endsWith('userscripts.org'):
  1372. urlArray = proxy.uso;
  1373. break;
  1374.  
  1375. case hostname.endsWith('wikipedia.org'):
  1376. urlArray = proxy.wikiless;
  1377. break;
  1378.  
  1379. case hostname.endsWith('youtu.be'):
  1380. case hostname.endsWith('youtube.com'):
  1381. case hostname.endsWith('youtube-nocookie.com'):
  1382. case hostname.endsWith('invidious-invidious.invidious.svc.cluster.local:3000'):
  1383. proxyArray = [proxy.cloudtube, proxy.invidious,
  1384. proxy.piped, proxy.pipedmaterial,
  1385. proxy.poketube
  1386. ];
  1387. break;
  1388.  
  1389. //default:
  1390. // return target;
  1391.  
  1392. }
  1393.  
  1394. // proxy select
  1395. if (proxyArray) {
  1396. urlArray = proxyArray[Math.floor(Math.random()*proxyArray.length)];
  1397. }
  1398.  
  1399. // instance select
  1400. return urlArray[Math.floor(Math.random()*urlArray.length)];
  1401.  
  1402. }
  1403.  
  1404. // Settlement
  1405. function settURL() {
  1406. let newPath;
  1407. switch (urlArray) {
  1408.  
  1409. // consider function setTimeout()
  1410. case proxy.bibliogram:
  1411. if (!pathname.includes('accounts/login')) {
  1412. newPath = `/u/${para}`;
  1413. } else {
  1414. if (partedURL.searchParams.get('next')) {
  1415. para = ['next'];
  1416. para = pickParameters(para);
  1417. newPath = `/u/${para}`;
  1418. }
  1419. }
  1420. break;
  1421.  
  1422. case proxy.breezewiki:
  1423. // extract wiki name
  1424. partedHost = hostname.split('.');
  1425. if (partedHost.length === 3 || partedHost.length === 4) {
  1426. brand = partedHost[0];
  1427. }
  1428. newPath = `/${brand}${pathname}`;
  1429. break;
  1430.  
  1431. case proxy.btdigg:
  1432. // extract sha1sum
  1433. //hash = pathname.split('/')[2];
  1434. hash = pathname.split('/');
  1435. for (let i = 0; i < hash.length; i++) {
  1436. if (hash[i].length === 40) {
  1437. hash = hash[i];
  1438. break;
  1439. }
  1440. }
  1441. newPath = `/${hash}`;
  1442. break;
  1443.  
  1444. case proxy.cloudtube:
  1445. case proxy.invidious:
  1446. case proxy.piped:
  1447. case proxy.pipedmaterial:
  1448. case proxy.poketube:
  1449. if (partedURL.searchParams.get('v')) {
  1450. para = ['v'];
  1451. para = pickParameters(para);
  1452. newPath = `/watch?v=${para}`;
  1453. }
  1454. break;
  1455.  
  1456. case proxy.gothub:
  1457. if (hostname.endsWith('gist.github.com')) {
  1458. newPath = `/gist${pathname}`;
  1459. }
  1460. break;
  1461.  
  1462. case proxy.laboratory:
  1463. newPath = '/' + hostname + pathname;
  1464. break;
  1465.  
  1466. case proxy.libmedium:
  1467. partedHost = hostname.split('.');
  1468. if (partedHost.length === 3 || partedHost.length === 4) {
  1469. name = partedHost[0];
  1470. }
  1471. newPath = `/@${name}${pathname}`;
  1472. break;
  1473.  
  1474. case proxy.librex:
  1475. case proxy.metastem:
  1476. // extract search parameter
  1477. para = ['q','text','p'];
  1478. para = pickParameters(para);
  1479. newPath = `/search.php?q=${para}`;
  1480. break;
  1481.  
  1482. case proxy.lingva:
  1483. // extract text parameter
  1484. paras = ['sl','tl','text'];
  1485.  
  1486. for (let i = 0; i < paras.length; i++) {
  1487. paras[i] = setValue(paras[i]);
  1488. }
  1489.  
  1490. //if (paras[2] === 'auto') { paras[2] = ''; }
  1491. if ((paras[0] == 'auto') && (paras[1] == 'auto')) {
  1492. newPath = `/${paras[2]}`;
  1493. } else {
  1494. newPath = `/${paras[0]}/${paras[1]}/${paras[2]}`;
  1495. }
  1496. break;
  1497.  
  1498. case proxy.map:
  1499. // extract coordinations
  1500. /*
  1501. if (pathname.includes('@')) {
  1502. cord = pathname.split('/')[2].split('&')[0].slice(1);
  1503. cord = cord.split(',');
  1504. }
  1505. newPath = '/#map=' + cord[2].slice(0, 1) +
  1506. '/' + cord[0] + '/' + cord[1];
  1507. */
  1508. let lat, lon, zoom;
  1509. // extract coordinations
  1510. if (partedURL.search.includes('%7E')) { // %7E is ~
  1511. para = ['cp'];
  1512. cord = pickParameters(para);
  1513. cord = cord.split('~');
  1514. para = ['lvl'];
  1515. zoom = pickParameters(para);
  1516. lat = cord[0];
  1517. lon = cord[1];
  1518. } else
  1519. if (partedURL.search.includes('to')) {
  1520. para = ['to'];
  1521. cord = pickParameters(para);
  1522. cord = cord.slice(3).split(',');
  1523. lat = cord[0];
  1524. lon = cord[1];
  1525. } else
  1526. if (pathname.includes('ul') &&
  1527. partedURL.search.includes('ll')) {
  1528. para = ['ll'];
  1529. cord = pickParameters(para);
  1530. cord = cord.split(',');
  1531. para = ['zoom'];
  1532. zoom = pickParameters(para);
  1533. lat = cord[0];
  1534. lon = cord[1];
  1535. } else
  1536. if (partedURL.search.includes('ll')) {
  1537. para = ['ll'];
  1538. cord = pickParameters(para);
  1539. cord = cord.split(',');
  1540. para = ['z'];
  1541. zoom = pickParameters(para);
  1542. lat = cord[0];
  1543. lon = cord[1];
  1544. } else
  1545. if (partedURL.search.includes('tll')) {
  1546. para = ['tll'];
  1547. cord = pickParameters(para);
  1548. cord = cord.split('_');
  1549. lat = cord[0];
  1550. lon = cord[1];
  1551. } else
  1552. if (pathname.includes('@')) {
  1553. partedPath = pathname.split('/')
  1554. for (let i = 0; i < partedPath.length; i++) {
  1555. if (partedPath[i].startsWith('@')) {
  1556. cord = partedPath[i].split(',');
  1557. }
  1558. }
  1559. lat = cord[0].slice(1);
  1560. lon = cord[1];
  1561. zoom = cord[2];
  1562. //newPath = `/#map=${cord[2].slice(0, 2)}/${cord[0].slice(1)}/${cord[1]}`;
  1563. //newPath = `/#map=${cord[2]}/${cord[0].slice(1)}/${cord[1]}`;
  1564. //newPath = `/#${cord[2]}/${cord[0].slice(1)}/${cord[1]}/`;
  1565. }
  1566.  
  1567. if (lat && lon && zoom) {
  1568. newPath = `/#${zoom}/${lat}/${lon}/`;
  1569. } else
  1570. if (lat && lon && !zoom) {
  1571. newPath = `/#10/${lat}/${lon}/`;
  1572. }
  1573.  
  1574. if (!newPath && partedURL.searchParams.get('q')) {
  1575. para = ['q'];
  1576. para = pickParameters(para);
  1577. newPath = `/search?query=${para}`;
  1578. instance = 'https://www.openstreetmap.org';
  1579. }
  1580. break;
  1581.  
  1582. case proxy.lieu:
  1583. case proxy.searx:
  1584. case proxy.whoogle:
  1585. // extract search parameter
  1586. para = ['q','text','p'];
  1587. para = pickParameters(para);
  1588. newPath = `/search?q=${para}`;
  1589. break;
  1590.  
  1591. case proxy.mikuinvidious:
  1592. if (!hostname.startsWith('www.')) {
  1593. partedHost = hostname.split('.');
  1594. if (partedHost.length === 3 || partedHost.length === 4) {
  1595. name = partedHost[0];
  1596. }
  1597. newPath = `/${name}${pathname}`;
  1598. }
  1599. break;
  1600.  
  1601. case proxy.tent:
  1602. partedHost = hostname.split('.');
  1603. if (partedHost.length === 3 || partedHost.length === 4) {
  1604. artist = partedHost[0];
  1605. }
  1606. partedPath = pathname.split('/');
  1607. type = partedPath[1];
  1608. name = partedPath[2];
  1609. if (name) {
  1610. newPath = `/release.php?artist=${artist}&type=${type}&name=${name}`;
  1611. } else {
  1612. newPath = `/release.php?artist=${artist}&type=${type}`;
  1613. }
  1614. break;
  1615.  
  1616. case proxy.wikiless:
  1617. // extract language code
  1618. partedHost = hostname.split('.');
  1619. if (partedHost.length === 3 || partedHost.length === 4) {
  1620. lang = partedHost[0];
  1621. }
  1622. newPath = `${pathname}?lang=${lang}`;
  1623. break;
  1624.  
  1625. case proxy.yacy:
  1626. // extract search parameter
  1627. para = ['q','text','p'];
  1628. //pickParameters(paras); // works even when just calling the function?
  1629. para = pickParameters(para);
  1630. newPath = `/yacysearch.html?query=${para}`;
  1631. break;
  1632.  
  1633. }
  1634.  
  1635. if (!newPath || newPath == '/') {
  1636. newPath = pathname + partedURL.search + partedURL.hash;
  1637. }
  1638.  
  1639. if (farside) {
  1640. if (urlArray.filter(str => str.includes('farside.link')).length) {
  1641. instance = urlArray.filter(str => str.includes('farside.link'))[0];
  1642. }
  1643. }
  1644.  
  1645. modURL = new URL(instance + newPath);
  1646. return modURL;
  1647.  
  1648. }